summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_423132.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/sessionstore/test/browser_423132.js')
-rw-r--r--browser/components/sessionstore/test/browser_423132.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/browser/components/sessionstore/test/browser_423132.js b/browser/components/sessionstore/test/browser_423132.js
new file mode 100644
index 000000000..584002cff
--- /dev/null
+++ b/browser/components/sessionstore/test/browser_423132.js
@@ -0,0 +1,59 @@
+"use strict";
+
+/**
+ * Tests that cookies are stored and restored correctly
+ * by sessionstore (bug 423132).
+ */
+add_task(function*() {
+ const testURL = "http://mochi.test:8888/browser/" +
+ "browser/components/sessionstore/test/browser_423132_sample.html";
+
+ Services.cookies.removeAll();
+ // make sure that sessionstore.js can be forced to be created by setting
+ // the interval pref to 0
+ yield SpecialPowers.pushPrefEnv({
+ set: [["browser.sessionstore.interval", 0]]
+ });
+
+ let win = yield BrowserTestUtils.openNewBrowserWindow();
+ let browser = win.gBrowser.selectedBrowser;
+ browser.loadURI(testURL);
+ yield BrowserTestUtils.browserLoaded(browser);
+
+ yield TabStateFlusher.flush(browser);
+
+ // get the sessionstore state for the window
+ let state = ss.getWindowState(win);
+
+ // verify our cookie got set during pageload
+ let enumerator = Services.cookies.enumerator;
+ let cookie;
+ let i = 0;
+ while (enumerator.hasMoreElements()) {
+ cookie = enumerator.getNext().QueryInterface(Ci.nsICookie);
+ i++;
+ }
+ Assert.equal(i, 1, "expected one cookie");
+
+ // remove the cookie
+ Services.cookies.removeAll();
+
+ // restore the window state
+ ss.setWindowState(win, state, true);
+
+ // at this point, the cookie should be restored...
+ enumerator = Services.cookies.enumerator;
+ let cookie2;
+ while (enumerator.hasMoreElements()) {
+ cookie2 = enumerator.getNext().QueryInterface(Ci.nsICookie);
+ if (cookie.name == cookie2.name)
+ break;
+ }
+ is(cookie.name, cookie2.name, "cookie name successfully restored");
+ is(cookie.value, cookie2.value, "cookie value successfully restored");
+ is(cookie.path, cookie2.path, "cookie path successfully restored");
+
+ // clean up
+ Services.cookies.removeAll();
+ yield BrowserTestUtils.closeWindow(win);
+});