summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_scrollPositions.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/sessionstore/test/browser_scrollPositions.js')
-rw-r--r--browser/components/sessionstore/test/browser_scrollPositions.js153
1 files changed, 0 insertions, 153 deletions
diff --git a/browser/components/sessionstore/test/browser_scrollPositions.js b/browser/components/sessionstore/test/browser_scrollPositions.js
deleted file mode 100644
index 865520772..000000000
--- a/browser/components/sessionstore/test/browser_scrollPositions.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-const BASE = "http://example.com/browser/browser/components/sessionstore/test/"
-const URL = BASE + "browser_scrollPositions_sample.html";
-const URL_FRAMESET = BASE + "browser_scrollPositions_sample_frameset.html";
-
-// Randomized set of scroll positions we will use in this test.
-const SCROLL_X = Math.round(100 * (1 + Math.random()));
-const SCROLL_Y = Math.round(200 * (1 + Math.random()));
-const SCROLL_STR = SCROLL_X + "," + SCROLL_Y;
-
-const SCROLL2_X = Math.round(300 * (1 + Math.random()));
-const SCROLL2_Y = Math.round(400 * (1 + Math.random()));
-const SCROLL2_STR = SCROLL2_X + "," + SCROLL2_Y;
-
-requestLongerTimeout(2);
-
-/**
- * This test ensures that we properly serialize and restore scroll positions
- * for an average page without any frames.
- */
-add_task(function test_scroll() {
- let tab = gBrowser.addTab(URL);
- let browser = tab.linkedBrowser;
- yield promiseBrowserLoaded(browser);
-
- // Scroll down a little.
- yield sendMessage(browser, "ss-test:setScrollPosition", {x: SCROLL_X, y: SCROLL_Y});
- yield checkScroll(tab, {scroll: SCROLL_STR}, "scroll is fine");
-
- // Duplicate and check that the scroll position is restored.
- let tab2 = ss.duplicateTab(window, tab);
- let browser2 = tab2.linkedBrowser;
- yield promiseTabRestored(tab2);
-
- let scroll = yield sendMessage(browser2, "ss-test:getScrollPosition");
- is(JSON.stringify(scroll), JSON.stringify({x: SCROLL_X, y: SCROLL_Y}),
- "scroll position has been duplicated correctly");
-
- // Check that reloading retains the scroll positions.
- browser2.reload();
- yield promiseBrowserLoaded(browser2);
- yield checkScroll(tab2, {scroll: SCROLL_STR}, "reloading retains scroll positions");
-
- // Check that a force-reload resets scroll positions.
- browser2.reloadWithFlags(Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE);
- yield promiseBrowserLoaded(browser2);
- yield checkScroll(tab2, null, "force-reload resets scroll positions");
-
- // Scroll back to the top and check that the position has been reset. We
- // expect the scroll position to be "null" here because there is no data to
- // be stored if the frame is in its default scroll position.
- yield sendMessage(browser, "ss-test:setScrollPosition", {x: 0, y: 0});
- yield checkScroll(tab, null, "no scroll stored");
-
- // Cleanup.
- yield promiseRemoveTab(tab);
- yield promiseRemoveTab(tab2);
-});
-
-/**
- * This tests ensures that we properly serialize and restore scroll positions
- * for multiple frames of pages with framesets.
- */
-add_task(function test_scroll_nested() {
- let tab = gBrowser.addTab(URL_FRAMESET);
- let browser = tab.linkedBrowser;
- yield promiseBrowserLoaded(browser);
-
- // Scroll the first child frame down a little.
- yield sendMessage(browser, "ss-test:setScrollPosition", {x: SCROLL_X, y: SCROLL_Y, frame: 0});
- yield checkScroll(tab, {children: [{scroll: SCROLL_STR}]}, "scroll is fine");
-
- // Scroll the second child frame down a little.
- yield sendMessage(browser, "ss-test:setScrollPosition", {x: SCROLL2_X, y: SCROLL2_Y, frame: 1});
- yield checkScroll(tab, {children: [{scroll: SCROLL_STR}, {scroll: SCROLL2_STR}]}, "scroll is fine");
-
- // Duplicate and check that the scroll position is restored.
- let tab2 = ss.duplicateTab(window, tab);
- let browser2 = tab2.linkedBrowser;
- yield promiseTabRestored(tab2);
-
- let scroll = yield sendMessage(browser2, "ss-test:getScrollPosition", {frame: 0});
- is(JSON.stringify(scroll), JSON.stringify({x: SCROLL_X, y: SCROLL_Y}),
- "scroll position #1 has been duplicated correctly");
-
- scroll = yield sendMessage(browser2, "ss-test:getScrollPosition", {frame: 1});
- is(JSON.stringify(scroll), JSON.stringify({x: SCROLL2_X, y: SCROLL2_Y}),
- "scroll position #2 has been duplicated correctly");
-
- // Check that resetting one frame's scroll position removes it from the
- // serialized value.
- yield sendMessage(browser, "ss-test:setScrollPosition", {x: 0, y: 0, frame: 0});
- yield checkScroll(tab, {children: [null, {scroll: SCROLL2_STR}]}, "scroll is fine");
-
- // Check the resetting all frames' scroll positions nulls the stored value.
- yield sendMessage(browser, "ss-test:setScrollPosition", {x: 0, y: 0, frame: 1});
- yield checkScroll(tab, null, "no scroll stored");
-
- // Cleanup.
- yield promiseRemoveTab(tab);
- yield promiseRemoveTab(tab2);
-});
-
-/**
- * Test that scroll positions persist after restoring background tabs in
- * a restored window (bug 1228518).
- */
-add_task(function test_scroll_background_tabs() {
- pushPrefs(["browser.sessionstore.restore_on_demand", true]);
-
- let newWin = yield BrowserTestUtils.openNewBrowserWindow();
- let tab = newWin.gBrowser.addTab(URL);
- let browser = tab.linkedBrowser;
- yield BrowserTestUtils.browserLoaded(browser);
-
- // Scroll down a little.
- yield sendMessage(browser, "ss-test:setScrollPosition", {x: SCROLL_X, y: SCROLL_Y});
- yield checkScroll(tab, {scroll: SCROLL_STR}, "scroll is fine");
-
- // Close the window
- yield BrowserTestUtils.closeWindow(newWin);
-
- // Now restore the window
- newWin = ss.undoCloseWindow(0);
-
- // Make sure to wait for the window to be restored.
- yield BrowserTestUtils.waitForEvent(newWin, "SSWindowStateReady");
-
- is(newWin.gBrowser.tabs.length, 2, "There should be two tabs");
-
- // The second tab should be the one we loaded URL at still
- tab = newWin.gBrowser.tabs[1];
- yield promiseTabRestoring(tab);
-
- ok(tab.hasAttribute("pending"), "Tab should be pending");
- browser = tab.linkedBrowser;
-
- // Ensure there are no pending queued messages in the child.
- yield TabStateFlusher.flush(browser);
-
- // Now check to see if the background tab remembers where it
- // should be scrolled to.
- newWin.gBrowser.selectedTab = tab;
- yield promiseTabRestored(tab);
-
- yield checkScroll(tab, {scroll: SCROLL_STR}, "scroll is still fine");
-
- yield BrowserTestUtils.closeWindow(newWin);
-});