diff --git a/toolkit/components/thumbnails/test/browser_thumbnails_background.js b/toolkit/components/thumbnails/test/browser_thumbnails_background.js index 7870c96acc65..b24c96d052ee 100644 --- a/toolkit/components/thumbnails/test/browser_thumbnails_background.js +++ b/toolkit/components/thumbnails/test/browser_thumbnails_background.js @@ -194,6 +194,43 @@ let tests = [ win.close(); }, + + function noCookies() { + // Visit the test page in the browser and tell it to set a cookie. + let url = testPageURL({ setGreenCookie: true }); + let tab = gBrowser.loadOneTab(url, { inBackground: false }); + let browser = tab.linkedBrowser; + yield onPageLoad(browser); + + // The root element of the page shouldn't be green yet. + let greenStr = "rgb(0, 255, 0)"; + isnot(browser.contentDocument.documentElement.style.backgroundColor, + greenStr, + "The page shouldn't be green yet."); + + // Cookie should be set now. Reload the page to verify. Its root element + // will be green if the cookie's set. + browser.reload(); + yield onPageLoad(browser); + is(browser.contentDocument.documentElement.style.backgroundColor, + greenStr, + "The page should be green now."); + + // Capture the page. Get the image data of the capture and verify it's not + // green. (Checking only the first pixel suffices.) + yield capture(url); + let file = fileForURL(url); + ok(file.exists(), "Thumbnail file should exist after capture."); + + let deferred = imports.Promise.defer(); + retrieveImageDataForURL(url, function ([r, g, b]) { + isnot([r, g, b].toString(), [0, 255, 0].toString(), + "The captured page should not be green."); + gBrowser.removeTab(tab); + deferred.resolve(); + }); + yield deferred.promise; + }, ]; function capture(url, options) { @@ -239,3 +276,14 @@ function openPrivateWindow() { }); return deferred.promise; } + +function onPageLoad(browser) { + let deferred = imports.Promise.defer(); + browser.addEventListener("load", function load(event) { + if (event.target == browser.contentWindow.document) { + browser.removeEventListener("load", load, true); + deferred.resolve(); + } + }, true); + return deferred.promise; +} diff --git a/toolkit/components/thumbnails/test/thumbnails_background.sjs b/toolkit/components/thumbnails/test/thumbnails_background.sjs index f29cab3e08e3..fe7e77508a59 100644 --- a/toolkit/components/thumbnails/test/thumbnails_background.sjs +++ b/toolkit/components/thumbnails/test/thumbnails_background.sjs @@ -17,6 +17,16 @@ function handleRequest(req, resp) { } catch (err) {} + if (opts.setGreenCookie) + resp.setHeader("Set-Cookie", "green", false); + + if (req.hasHeader("Cookie") && + req.getHeader("Cookie").split(";").indexOf("green") >= 0) { + resp.write(''); + resp.finish(); + return; + } + if (opts.redirect) { resp.setHeader("Location", opts.redirect); resp.setStatusLine(null, 303, null);