summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_broadcast.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/sessionstore/test/browser_broadcast.js')
-rw-r--r--browser/components/sessionstore/test/browser_broadcast.js131
1 files changed, 0 insertions, 131 deletions
diff --git a/browser/components/sessionstore/test/browser_broadcast.js b/browser/components/sessionstore/test/browser_broadcast.js
deleted file mode 100644
index 95984d6d0..000000000
--- a/browser/components/sessionstore/test/browser_broadcast.js
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-const INITIAL_VALUE = "browser_broadcast.js-initial-value-" + Date.now();
-
-/**
- * This test ensures we won't lose tab data queued in the content script when
- * closing a tab.
- */
-add_task(function flush_on_tabclose() {
- let tab = yield createTabWithStorageData(["http://example.com"]);
- let browser = tab.linkedBrowser;
-
- yield modifySessionStorage(browser, {test: "on-tab-close"});
- yield promiseRemoveTab(tab);
-
- let [{state: {storage}}] = JSON.parse(ss.getClosedTabData(window));
- is(storage["http://example.com"].test, "on-tab-close",
- "sessionStorage data has been flushed on TabClose");
-});
-
-/**
- * This test ensures we won't lose tab data queued in the content script when
- * duplicating a tab.
- */
-add_task(function flush_on_duplicate() {
- let tab = yield createTabWithStorageData(["http://example.com"]);
- let browser = tab.linkedBrowser;
-
- yield modifySessionStorage(browser, {test: "on-duplicate"});
- let tab2 = ss.duplicateTab(window, tab);
- yield promiseTabRestored(tab2);
-
- yield promiseRemoveTab(tab2);
- let [{state: {storage}}] = JSON.parse(ss.getClosedTabData(window));
- is(storage["http://example.com"].test, "on-duplicate",
- "sessionStorage data has been flushed when duplicating tabs");
-
- gBrowser.removeTab(tab);
-});
-
-/**
- * This test ensures we won't lose tab data queued in the content script when
- * a window is closed.
- */
-add_task(function flush_on_windowclose() {
- let win = yield promiseNewWindow();
- let tab = yield createTabWithStorageData(["http://example.com"], win);
- let browser = tab.linkedBrowser;
-
- yield modifySessionStorage(browser, {test: "on-window-close"});
- yield BrowserTestUtils.closeWindow(win);
-
- let [{tabs: [_, {storage}]}] = JSON.parse(ss.getClosedWindowData());
- is(storage["http://example.com"].test, "on-window-close",
- "sessionStorage data has been flushed when closing a window");
-});
-
-/**
- * This test ensures that stale tab data is ignored when reusing a tab
- * (via e.g. setTabState) and does not overwrite the new data.
- */
-add_task(function flush_on_settabstate() {
- let tab = yield createTabWithStorageData(["http://example.com"]);
- let browser = tab.linkedBrowser;
-
- // Flush to make sure our tab state is up-to-date.
- yield TabStateFlusher.flush(browser);
-
- let state = ss.getTabState(tab);
- yield modifySessionStorage(browser, {test: "on-set-tab-state"});
-
- // Flush all data contained in the content script but send it using
- // asynchronous messages.
- TabStateFlusher.flush(browser);
-
- yield promiseTabState(tab, state);
-
- let {storage} = JSON.parse(ss.getTabState(tab));
- is(storage["http://example.com"].test, INITIAL_VALUE,
- "sessionStorage data has not been overwritten");
-
- gBrowser.removeTab(tab);
-});
-
-/**
- * This test ensures that we won't lose tab data that has been sent
- * asynchronously just before closing a tab. Flushing must re-send all data
- * that hasn't been received by chrome, yet.
- */
-add_task(function flush_on_tabclose_racy() {
- let tab = yield createTabWithStorageData(["http://example.com"]);
- let browser = tab.linkedBrowser;
-
- // Flush to make sure we start with an empty queue.
- yield TabStateFlusher.flush(browser);
-
- yield modifySessionStorage(browser, {test: "on-tab-close-racy"});
-
- // Flush all data contained in the content script but send it using
- // asynchronous messages.
- TabStateFlusher.flush(browser);
- yield promiseRemoveTab(tab);
-
- let [{state: {storage}}] = JSON.parse(ss.getClosedTabData(window));
- is(storage["http://example.com"].test, "on-tab-close-racy",
- "sessionStorage data has been merged correctly to prevent data loss");
-});
-
-function promiseNewWindow() {
- let deferred = Promise.defer();
- whenNewWindowLoaded({private: false}, deferred.resolve);
- return deferred.promise;
-}
-
-function createTabWithStorageData(urls, win = window) {
- return Task.spawn(function task() {
- let tab = win.gBrowser.addTab();
- let browser = tab.linkedBrowser;
-
- for (let url of urls) {
- browser.loadURI(url);
- yield promiseBrowserLoaded(browser);
- yield modifySessionStorage(browser, {test: INITIAL_VALUE});
- }
-
- throw new Task.Result(tab);
- });
-}