forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
   http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
const TEST_PAGE =
 | 
						|
  getRootDirectory(gTestPath).replace(
 | 
						|
    "chrome://mochitests/content",
 | 
						|
    "https://example.com"
 | 
						|
  ) + "dummy_page.html";
 | 
						|
 | 
						|
// Regression test for navigating back after visiting an about: page
 | 
						|
// loaded in the parent process.
 | 
						|
add_task(async function test_about_back() {
 | 
						|
  // Test with both pref on and off
 | 
						|
  for (let requireUserInteraction of [true, false]) {
 | 
						|
    Services.prefs.setBoolPref(
 | 
						|
      "browser.navigation.requireUserInteraction",
 | 
						|
      requireUserInteraction
 | 
						|
    );
 | 
						|
 | 
						|
    let tab = await BrowserTestUtils.openNewForegroundTab(
 | 
						|
      gBrowser,
 | 
						|
      TEST_PAGE + "?entry=0"
 | 
						|
    );
 | 
						|
    let browser = tab.linkedBrowser;
 | 
						|
    assertBackForwardState(false, false);
 | 
						|
 | 
						|
    await loadURI(TEST_PAGE + "?entry=1");
 | 
						|
    assertBackForwardState(true, false);
 | 
						|
 | 
						|
    await loadURI(TEST_PAGE + "?entry=2");
 | 
						|
    assertBackForwardState(true, false);
 | 
						|
 | 
						|
    // Add some user interaction to entry 2
 | 
						|
    await BrowserTestUtils.synthesizeMouse("body", 0, 0, {}, browser, true);
 | 
						|
 | 
						|
    await loadURI("about:config");
 | 
						|
    assertBackForwardState(true, false);
 | 
						|
 | 
						|
    await goBack(TEST_PAGE + "?entry=2");
 | 
						|
    assertBackForwardState(true, true);
 | 
						|
 | 
						|
    if (!requireUserInteraction) {
 | 
						|
      await goBack(TEST_PAGE + "?entry=1");
 | 
						|
      assertBackForwardState(true, true);
 | 
						|
    }
 | 
						|
 | 
						|
    await goBack(TEST_PAGE + "?entry=0");
 | 
						|
    assertBackForwardState(false, true);
 | 
						|
 | 
						|
    if (!requireUserInteraction) {
 | 
						|
      await goForward(TEST_PAGE + "?entry=1");
 | 
						|
      assertBackForwardState(true, true);
 | 
						|
    }
 | 
						|
 | 
						|
    await goForward(TEST_PAGE + "?entry=2");
 | 
						|
    assertBackForwardState(true, true);
 | 
						|
 | 
						|
    await goForward("about:config");
 | 
						|
    assertBackForwardState(true, false);
 | 
						|
 | 
						|
    BrowserTestUtils.removeTab(tab);
 | 
						|
  }
 | 
						|
 | 
						|
  Services.prefs.clearUserPref("browser.navigation.requireUserInteraction");
 | 
						|
});
 |