summaryrefslogtreecommitdiffstats
path: root/dom/tests/browser/browser_bug1685807.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/tests/browser/browser_bug1685807.js')
-rw-r--r--dom/tests/browser/browser_bug1685807.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/dom/tests/browser/browser_bug1685807.js b/dom/tests/browser/browser_bug1685807.js
new file mode 100644
index 0000000000..0e0dae2b16
--- /dev/null
+++ b/dom/tests/browser/browser_bug1685807.js
@@ -0,0 +1,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);
+ }
+});