diff options
Diffstat (limited to 'browser/components/sessionstore/test/browser_cookies.js')
-rw-r--r-- | browser/components/sessionstore/test/browser_cookies.js | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/browser/components/sessionstore/test/browser_cookies.js b/browser/components/sessionstore/test/browser_cookies.js deleted file mode 100644 index cc5b41e4b..000000000 --- a/browser/components/sessionstore/test/browser_cookies.js +++ /dev/null @@ -1,173 +0,0 @@ -"use strict"; - -const PATH = "/browser/browser/components/sessionstore/test/"; - -/** - * Remove all cookies to start off a clean slate. - */ -add_task(function* test_setup() { - requestLongerTimeout(2); - Services.cookies.removeAll(); -}); - -/** - * Test multiple scenarios with different Set-Cookie header domain= params. - */ -add_task(function* test_run() { - // Set-Cookie: foobar=random() - // The domain of the cookie should be the request domain (www.example.com). - // We should collect data only for the request domain, no parent or subdomains. - yield testCookieCollection({ - host: "http://www.example.com", - cookieHost: "www.example.com", - cookieURIs: ["http://www.example.com" + PATH], - noCookieURIs: ["http://example.com/" + PATH] - }); - - // Set-Cookie: foobar=random() - // The domain of the cookie should be the request domain (example.com). - // We should collect data only for the request domain, no parent or subdomains. - yield testCookieCollection({ - host: "http://example.com", - cookieHost: "example.com", - cookieURIs: ["http://example.com" + PATH], - noCookieURIs: ["http://www.example.com/" + PATH] - }); - - // Set-Cookie: foobar=random(); Domain=example.com - // The domain of the cookie should be the given one (.example.com). - // We should collect data for the given domain and its subdomains. - yield testCookieCollection({ - host: "http://example.com", - domain: "example.com", - cookieHost: ".example.com", - cookieURIs: ["http://example.com" + PATH, "http://www.example.com/" + PATH], - noCookieURIs: ["about:robots"] - }); - - // Set-Cookie: foobar=random(); Domain=.example.com - // The domain of the cookie should be the given one (.example.com). - // We should collect data for the given domain and its subdomains. - yield testCookieCollection({ - host: "http://example.com", - domain: ".example.com", - cookieHost: ".example.com", - cookieURIs: ["http://example.com" + PATH, "http://www.example.com/" + PATH], - noCookieURIs: ["about:robots"] - }); - - // Set-Cookie: foobar=random(); Domain=www.example.com - // The domain of the cookie should be the given one (.www.example.com). - // We should collect data for the given domain and its subdomains. - yield testCookieCollection({ - host: "http://www.example.com", - domain: "www.example.com", - cookieHost: ".www.example.com", - cookieURIs: ["http://www.example.com/" + PATH], - noCookieURIs: ["http://example.com"] - }); - - // Set-Cookie: foobar=random(); Domain=.www.example.com - // The domain of the cookie should be the given one (.www.example.com). - // We should collect data for the given domain and its subdomains. - yield testCookieCollection({ - host: "http://www.example.com", - domain: ".www.example.com", - cookieHost: ".www.example.com", - cookieURIs: ["http://www.example.com/" + PATH], - noCookieURIs: ["http://example.com"] - }); -}); - -/** - * Generic test function to check sessionstore's cookie collection module with - * different cookie domains given in the Set-Cookie header. See above for some - * usage examples. - */ -var testCookieCollection = Task.async(function (params) { - let tab = gBrowser.addTab("about:blank"); - let browser = tab.linkedBrowser; - - let urlParams = new URLSearchParams(); - let value = Math.random(); - urlParams.append("value", value); - - if (params.domain) { - urlParams.append("domain", params.domain); - } - - // Construct request URI. - let uri = `${params.host}${PATH}browser_cookies.sjs?${urlParams}`; - - // Wait for the browser to load and the cookie to be set. - // These two events can probably happen in no particular order, - // so let's wait for them in parallel. - yield Promise.all([ - waitForNewCookie(), - replaceCurrentURI(browser, uri) - ]); - - // Check all URIs for which the cookie should be collected. - for (let uri of params.cookieURIs || []) { - yield replaceCurrentURI(browser, uri); - - // Check the cookie. - let cookie = getCookie(); - is(cookie.host, params.cookieHost, "cookie host is correct"); - is(cookie.path, PATH, "cookie path is correct"); - is(cookie.name, "foobar", "cookie name is correct"); - is(cookie.value, value, "cookie value is correct"); - } - - // Check all URIs for which the cookie should NOT be collected. - for (let uri of params.noCookieURIs || []) { - yield replaceCurrentURI(browser, uri); - - // Cookie should be ignored. - ok(!getCookie(), "no cookie collected"); - } - - // Clean up. - gBrowser.removeTab(tab); - Services.cookies.removeAll(); -}); - -/** - * Replace the current URI of the given browser by loading a new URI. The - * browser's session history will be completely replaced. This function ensures - * that the parent process has the lastest shistory data before resolving. - */ -var replaceCurrentURI = Task.async(function* (browser, uri) { - // Replace the tab's current URI with the parent domain. - let flags = Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY; - browser.loadURIWithFlags(uri, flags); - yield promiseBrowserLoaded(browser); - - // Ensure the tab's session history is up-to-date. - yield TabStateFlusher.flush(browser); -}); - -/** - * Waits for a new "*example.com" cookie to be added. - */ -function waitForNewCookie() { - return new Promise(resolve => { - Services.obs.addObserver(function observer(subj, topic, data) { - let cookie = subj.QueryInterface(Ci.nsICookie2); - if (data == "added" && cookie.host.endsWith("example.com")) { - Services.obs.removeObserver(observer, topic); - resolve(); - } - }, "cookie-changed", false); - }); -} - -/** - * Retrieves the first cookie in the first window from the current sessionstore - * state. - */ -function getCookie() { - let state = JSON.parse(ss.getWindowState(window)); - let cookies = state.windows[0].cookies || []; - return cookies[0] || null; -} |