summaryrefslogtreecommitdiffstats
path: root/toolkit/components/reader/test/browser_bug1780350_readerModeSaveScroll.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/reader/test/browser_bug1780350_readerModeSaveScroll.js')
-rw-r--r--toolkit/components/reader/test/browser_bug1780350_readerModeSaveScroll.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/toolkit/components/reader/test/browser_bug1780350_readerModeSaveScroll.js b/toolkit/components/reader/test/browser_bug1780350_readerModeSaveScroll.js
new file mode 100644
index 0000000000..76add5511e
--- /dev/null
+++ b/toolkit/components/reader/test/browser_bug1780350_readerModeSaveScroll.js
@@ -0,0 +1,70 @@
+/* eslint-disable @microsoft/sdl/no-insecure-url */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+const TEST_PATH = getRootDirectory(gTestPath).replace(
+ "chrome://mochitests/content",
+ "http://example.com"
+);
+
+// This test verifies that when a link is clicked from
+// within reader view, when navigating back to reader view
+// the previous scroll position of the page is restored.
+add_task(async function test_save_scroll_position() {
+ await BrowserTestUtils.withNewTab(
+ TEST_PATH + "readerModeArticleContainsLink.html",
+ async function (browser) {
+ let pageShownPromise = BrowserTestUtils.waitForContentEvent(
+ browser,
+ "AboutReaderContentReady"
+ );
+ let browserLoadedPromise = BrowserTestUtils.browserLoaded(browser);
+ let readerButton = document.getElementById("reader-mode-button");
+ readerButton.click();
+ await Promise.all([pageShownPromise, browserLoadedPromise]);
+ let scrollEventPromise = BrowserTestUtils.waitForContentEvent(
+ browser,
+ "scroll",
+ true
+ );
+ // Set scroll position in reader to 200px down.
+ await SpecialPowers.spawn(browser, [], async function () {
+ content.document.documentElement.scrollTop = 200;
+ });
+ await scrollEventPromise;
+
+ // Click linked page and check that scroll pos resets.
+ await SpecialPowers.spawn(browser, [], async function () {
+ let linkElement = content.document.getElementById("link");
+ linkElement.click();
+ });
+ await BrowserTestUtils.browserLoaded(browser);
+ await SpecialPowers.spawn(browser, [], async function () {
+ is(
+ content.document.documentElement.scrollTop,
+ 0,
+ "vertical scroll position should reset to zero when navigating to linked page."
+ );
+ content.window.history.back();
+ });
+
+ // Navigate back to reader and check that scroll position is restored.
+ await BrowserTestUtils.browserLoaded(browser);
+ scrollEventPromise = BrowserTestUtils.waitForContentEvent(
+ browser,
+ "scroll",
+ true
+ );
+ await scrollEventPromise;
+ await SpecialPowers.spawn(browser, [], async function () {
+ let doc = content.document;
+ is(
+ doc.documentElement.scrollTop,
+ 200,
+ "should restore saved scroll position when navigating back from link."
+ );
+ });
+ }
+ );
+});