Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: dom/tests/browser/browser.toml
 
/**
 *               about:blank page to a window which had loaded non-about:blank
 *               page. And other case that window.name should be reset if
 *               the document.domain has changed.
 */
"use strict";
const EMPTY_URI =
const TEST_URI =
add_setup(async function () {
  await SpecialPowers.pushPrefEnv({
    set: [["privacy.window.name.update.enabled", true]],
  });
});
add_task(async function doTests() {
  for (let testDocDomain of [false, true]) {
    // Open an empty tab.
    let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, EMPTY_URI);
    let browser = tab.linkedBrowser;
    // Create a promise in order to wait loading of the about:blank page.
    let loadedPromise = BrowserTestUtils.browserLoaded(
      browser,
      false,
      "about:blank"
    );
    // Set the window.name and document.domain.
    SpecialPowers.spawn(
      browser,
      [TEST_URI, testDocDomain],
      (aTestURI, aTestDocDomain) => {
        // Mark the first entry as having been interacted with.
        content.document.notifyUserGestureActivation();
        content.name = "Test";
        if (aTestDocDomain) {
          content.document.domain = "example.com";
        }
        // Open the page which will trigger the loading of the about:blank page.
        content.open(aTestURI);
      }
    );
    // Wait until the about:blank page is loaded.
    await loadedPromise;
    // Check the window.name.
    await SpecialPowers.spawn(browser, [testDocDomain], aTestDocDomain => {
      if (aTestDocDomain) {
        // The window.name should be reset if the document.domain was set to a
        // cross-origin.
        is(content.name, "", "The window.name should be reset.");
      } else {
        is(content.name, "Test", "The window.name shouldn't be reset.");
      }
    });
    let awaitPageShow = BrowserTestUtils.waitForContentEvent(
      browser,
      "pageshow"
    );
    browser.goBack(false);
    await awaitPageShow;
    // Check the window.name.
    await SpecialPowers.spawn(browser, [], () => {
      is(content.name, "Test", "The window.name is correct.");
    });
    BrowserTestUtils.removeTab(tab);
  }
});