forked from mirrors/gecko-dev
		
	The change to DoNotifyPossibleTitleChange handling is needed so that we flush the pending title change before adding a new active entry. aUpdateEntryInSessionHistory is a bit odd name, since it is really about SHIP only. The patch isn't trying to fix non-SHIP UI issues, but just give Fission similar behavior what Chrome has. Differential Revision: https://phabricator.services.mozilla.com/D116504
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
   http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
add_task(async function test() {
 | 
						|
  const TEST_PAGE =
 | 
						|
    getRootDirectory(gTestPath).replace(
 | 
						|
      "chrome://mochitests/content",
 | 
						|
      "https://example.com"
 | 
						|
    ) + "dummy_page.html";
 | 
						|
  await BrowserTestUtils.withNewTab(TEST_PAGE, async browser => {
 | 
						|
    let titles = await ContentTask.spawn(browser, null, () => {
 | 
						|
      return new Promise(resolve => {
 | 
						|
        let titles = [];
 | 
						|
        content.document.body.innerHTML = "<div id='foo'>foo</div>";
 | 
						|
        content.document.title = "Initial";
 | 
						|
        content.history.pushState("1", "1", "1");
 | 
						|
        content.document.title = "1";
 | 
						|
        content.history.pushState("2", "2", "2");
 | 
						|
        content.document.title = "2";
 | 
						|
        content.location.hash = "hash";
 | 
						|
        content.document.title = "3-hash";
 | 
						|
        content.addEventListener(
 | 
						|
          "popstate",
 | 
						|
          () => {
 | 
						|
            content.addEventListener(
 | 
						|
              "popstate",
 | 
						|
              () => {
 | 
						|
                titles.push(content.document.title);
 | 
						|
                resolve(titles);
 | 
						|
              },
 | 
						|
              { once: true }
 | 
						|
            );
 | 
						|
 | 
						|
            titles.push(content.document.title);
 | 
						|
            // Test going forward a few steps.
 | 
						|
            content.history.go(2);
 | 
						|
          },
 | 
						|
          { once: true }
 | 
						|
        );
 | 
						|
        // Test going back a few steps.
 | 
						|
        content.history.go(-3);
 | 
						|
      });
 | 
						|
    });
 | 
						|
    is(
 | 
						|
      titles[0],
 | 
						|
      "3-hash",
 | 
						|
      "Document.title should have the value to which it was last time set."
 | 
						|
    );
 | 
						|
    is(
 | 
						|
      titles[1],
 | 
						|
      "3-hash",
 | 
						|
      "Document.title should have the value to which it was last time set."
 | 
						|
    );
 | 
						|
    let sh = browser.browsingContext.sessionHistory;
 | 
						|
    let count = sh.count;
 | 
						|
    is(sh.getEntryAtIndex(count - 1).title, "3-hash");
 | 
						|
    is(sh.getEntryAtIndex(count - 2).title, "2");
 | 
						|
    is(sh.getEntryAtIndex(count - 3).title, "1");
 | 
						|
    is(sh.getEntryAtIndex(count - 4).title, "Initial");
 | 
						|
  });
 | 
						|
});
 |