browser_backforward_restore_scroll.js (1710B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const ROOT = getRootDirectory(gTestPath).replace( 7 "chrome://mochitests/content", 8 "http://mochi.test:8888" 9 ); 10 const URL1 = ROOT + "file_backforward_restore_scroll.html"; 11 // eslint-disable-next-line @microsoft/sdl/no-insecure-url 12 const URL2 = "http://example.net/"; 13 14 const SCROLL0 = 500; 15 const SCROLL1 = 1000; 16 17 function promiseBrowserLoaded(url) { 18 return BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser, false, url); 19 } 20 21 add_task(async function test() { 22 await BrowserTestUtils.openNewForegroundTab(gBrowser, URL1); 23 24 // Scroll the 2 frames. 25 let children = gBrowser.selectedBrowser.browsingContext.children; 26 await SpecialPowers.spawn(children[0], [SCROLL0], scrollY => 27 content.scrollTo(0, scrollY) 28 ); 29 await SpecialPowers.spawn(children[1], [SCROLL1], scrollY => 30 content.scrollTo(0, scrollY) 31 ); 32 33 // Navigate forwards then backwards. 34 let loaded = promiseBrowserLoaded(URL2); 35 BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, URL2); 36 await loaded; 37 38 loaded = promiseBrowserLoaded(URL1); 39 await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => { 40 content.history.back(); 41 }); 42 await loaded; 43 44 // And check the results. 45 children = gBrowser.selectedBrowser.browsingContext.children; 46 await SpecialPowers.spawn(children[0], [SCROLL0], scrollY => { 47 Assert.equal(content.scrollY, scrollY, "frame 0 has correct scroll"); 48 }); 49 await SpecialPowers.spawn(children[1], [SCROLL1], scrollY => { 50 Assert.equal(content.scrollY, scrollY, "frame 1 has correct scroll"); 51 }); 52 53 gBrowser.removeTab(gBrowser.selectedTab); 54 });