summaryrefslogtreecommitdiffstats
path: root/dom/tests/browser/browser_bug1685807.js
blob: 0e0dae2b169d89789877dd3280cddcf41748371d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
 * Bug 1685807 - Testing that the window.name won't be reset when loading an
 *               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 =
  "https://test1.example.com/browser/dom/tests/browser/file_empty.html";
const TEST_URI =
  "https://test1.example.com/browser/dom/tests/browser/file_bug1685807.html";

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) => {
        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();
    await awaitPageShow;

    // Check the window.name.
    await SpecialPowers.spawn(browser, [], () => {
      is(content.name, "Test", "The window.name is correct.");
    });

    BrowserTestUtils.removeTab(tab);
  }
});