browser_backforward_userinteraction_about.js (2036B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const TEST_PAGE = 7 getRootDirectory(gTestPath).replace( 8 "chrome://mochitests/content", 9 "https://example.com" 10 ) + "dummy_page.html"; 11 12 // Regression test for navigating back after visiting an about: page 13 // loaded in the parent process. 14 add_task(async function test_about_back() { 15 // Test with both pref on and off 16 for (let requireUserInteraction of [true, false]) { 17 Services.prefs.setBoolPref( 18 "browser.navigation.requireUserInteraction", 19 requireUserInteraction 20 ); 21 22 let tab = await BrowserTestUtils.openNewForegroundTab( 23 gBrowser, 24 TEST_PAGE + "?entry=0" 25 ); 26 let browser = tab.linkedBrowser; 27 assertBackForwardState(false, false); 28 29 // Add some user interaction to the initial entry 30 await BrowserTestUtils.synthesizeMouse("body", 0, 0, {}, browser, true); 31 32 await followLink(TEST_PAGE + "?entry=1"); 33 assertBackForwardState(true, false); 34 35 await followLink(TEST_PAGE + "?entry=2"); 36 assertBackForwardState(true, false); 37 38 // Add some user interaction to entry 2 39 await BrowserTestUtils.synthesizeMouse("body", 0, 0, {}, browser, true); 40 41 await loadURI("about:config"); 42 assertBackForwardState(true, false); 43 44 await goBack(TEST_PAGE + "?entry=2"); 45 assertBackForwardState(true, true); 46 47 if (!requireUserInteraction) { 48 await goBack(TEST_PAGE + "?entry=1"); 49 assertBackForwardState(true, true); 50 } 51 52 await goBack(TEST_PAGE + "?entry=0"); 53 assertBackForwardState(false, true); 54 55 if (!requireUserInteraction) { 56 await goForward(TEST_PAGE + "?entry=1"); 57 assertBackForwardState(true, true); 58 } 59 60 await goForward(TEST_PAGE + "?entry=2"); 61 assertBackForwardState(true, true); 62 63 await goForward("about:config"); 64 assertBackForwardState(true, false); 65 66 BrowserTestUtils.removeTab(tab); 67 } 68 69 Services.prefs.clearUserPref("browser.navigation.requireUserInteraction"); 70 });