summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/referrer
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/referrer')
-rw-r--r--browser/base/content/test/referrer/.eslintrc.js7
-rw-r--r--browser/base/content/test/referrer/browser.ini24
-rw-r--r--browser/base/content/test/referrer/browser_referrer_middle_click.js20
-rw-r--r--browser/base/content/test/referrer/browser_referrer_middle_click_in_container.js27
-rw-r--r--browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab.js59
-rw-r--r--browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab2.js31
-rw-r--r--browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab3.js63
-rw-r--r--browser/base/content/test/referrer/browser_referrer_open_link_in_private.js22
-rw-r--r--browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js21
-rw-r--r--browser/base/content/test/referrer/browser_referrer_open_link_in_window.js22
-rw-r--r--browser/base/content/test/referrer/browser_referrer_open_link_in_window_in_container.js32
-rw-r--r--browser/base/content/test/referrer/browser_referrer_simple_click.js20
-rw-r--r--browser/base/content/test/referrer/file_referrer_policyserver.sjs37
-rw-r--r--browser/base/content/test/referrer/file_referrer_policyserver_attr.sjs36
-rw-r--r--browser/base/content/test/referrer/file_referrer_testserver.sjs31
-rw-r--r--browser/base/content/test/referrer/head.js265
16 files changed, 0 insertions, 717 deletions
diff --git a/browser/base/content/test/referrer/.eslintrc.js b/browser/base/content/test/referrer/.eslintrc.js
deleted file mode 100644
index 7c8021192..000000000
--- a/browser/base/content/test/referrer/.eslintrc.js
+++ /dev/null
@@ -1,7 +0,0 @@
-"use strict";
-
-module.exports = {
- "extends": [
- "../../../../../testing/mochitest/browser.eslintrc.js"
- ]
-};
diff --git a/browser/base/content/test/referrer/browser.ini b/browser/base/content/test/referrer/browser.ini
deleted file mode 100644
index 13b712850..000000000
--- a/browser/base/content/test/referrer/browser.ini
+++ /dev/null
@@ -1,24 +0,0 @@
-[DEFAULT]
-support-files =
- file_referrer_policyserver.sjs
- file_referrer_policyserver_attr.sjs
- file_referrer_testserver.sjs
- head.js
-
-[browser_referrer_middle_click.js]
-[browser_referrer_middle_click_in_container.js]
-[browser_referrer_open_link_in_private.js]
-skip-if = os == 'linux' # Bug 1145199
-[browser_referrer_open_link_in_tab.js]
-skip-if = os == 'linux' # Bug 1144816
-[browser_referrer_open_link_in_window.js]
-skip-if = os == 'linux' # Bug 1145199
-[browser_referrer_open_link_in_window_in_container.js]
-skip-if = os == 'linux' # Bug 1145199
-[browser_referrer_simple_click.js]
-[browser_referrer_open_link_in_container_tab.js]
-skip-if = os == 'linux' # Bug 1144816
-[browser_referrer_open_link_in_container_tab2.js]
-skip-if = os == 'linux' # Bug 1144816
-[browser_referrer_open_link_in_container_tab3.js]
-skip-if = os == 'linux' # Bug 1144816
diff --git a/browser/base/content/test/referrer/browser_referrer_middle_click.js b/browser/base/content/test/referrer/browser_referrer_middle_click.js
deleted file mode 100644
index e6e01c6a3..000000000
--- a/browser/base/content/test/referrer/browser_referrer_middle_click.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Tests referrer on middle-click navigation.
-// Middle-clicks on the link, which opens it in a new tab.
-
-function startMiddleClickTestCase(aTestNumber) {
- info("browser_referrer_middle_click: " +
- getReferrerTestDescription(aTestNumber));
- someTabLoaded(gTestWindow).then(function(aNewTab) {
- BrowserTestUtils.switchTab(gTestWindow.gBrowser, aNewTab).then(() => {
- checkReferrerAndStartNextTest(aTestNumber, null, aNewTab,
- startMiddleClickTestCase);
- });
- });
-
- clickTheLink(gTestWindow, "testlink", {button: 1});
-}
-
-function test() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startMiddleClickTestCase);
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_middle_click_in_container.js b/browser/base/content/test/referrer/browser_referrer_middle_click_in_container.js
deleted file mode 100644
index e89b891f3..000000000
--- a/browser/base/content/test/referrer/browser_referrer_middle_click_in_container.js
+++ /dev/null
@@ -1,27 +0,0 @@
-// Tests referrer on middle-click navigation.
-// Middle-clicks on the link, which opens it in a new tab, same container.
-
-function startMiddleClickTestCase(aTestNumber) {
- info("browser_referrer_middle_click: " +
- getReferrerTestDescription(aTestNumber));
- someTabLoaded(gTestWindow).then(function(aNewTab) {
- BrowserTestUtils.switchTab(gTestWindow.gBrowser, aNewTab).then(() => {
- checkReferrerAndStartNextTest(aTestNumber, null, aNewTab,
- startMiddleClickTestCase,
- { userContextId: 3 });
- });
- });
-
- clickTheLink(gTestWindow, "testlink", {button: 1});
-}
-
-function test() {
- waitForExplicitFinish();
-
- SpecialPowers.pushPrefEnv(
- {set: [["privacy.userContext.enabled", true]]},
- function() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startMiddleClickTestCase, { userContextId: 3 });
- });
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab.js b/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab.js
deleted file mode 100644
index deaf90fb9..000000000
--- a/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Tests referrer on context menu navigation - open link in new container tab.
-// Selects "open link in new container tab" from the context menu.
-
-function getReferrerTest(aTestNumber) {
- let test = _referrerTests[aTestNumber];
- if (test) {
- // We want all the referrer tests to fail!
- test.result = "";
- }
-
- return test;
-}
-
-function startNewTabTestCase(aTestNumber) {
- info("browser_referrer_open_link_in_container_tab: " +
- getReferrerTestDescription(aTestNumber));
- contextMenuOpened(gTestWindow, "testlink").then(function(aContextMenu) {
- someTabLoaded(gTestWindow).then(function(aNewTab) {
- gTestWindow.gBrowser.selectedTab = aNewTab;
-
- checkReferrerAndStartNextTest(aTestNumber, null, aNewTab,
- startNewTabTestCase);
- });
-
- let menu = gTestWindow.document.getElementById("context-openlinkinusercontext-menu");
-
- let menupopup = menu.menupopup;
- menu.addEventListener("popupshown", function onPopupShown() {
- menu.removeEventListener("popupshown", onPopupShown);
-
- is(menupopup.nodeType, Node.ELEMENT_NODE, "We have a menupopup.");
- ok(menupopup.firstChild, "We have a first container entry.");
-
- let firstContext = menupopup.firstChild;
- is(firstContext.nodeType, Node.ELEMENT_NODE, "We have a first container entry.");
- ok(firstContext.hasAttribute("data-usercontextid"), "We have a usercontextid value.");
-
- aContextMenu.addEventListener("popuphidden", function onPopupHidden() {
- aContextMenu.removeEventListener("popuphidden", onPopupHidden);
- firstContext.doCommand();
- });
-
- aContextMenu.hidePopup();
- });
-
- menupopup.showPopup();
- });
-}
-
-function test() {
- waitForExplicitFinish();
-
- SpecialPowers.pushPrefEnv(
- {set: [["privacy.userContext.enabled", true]]},
- function() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startNewTabTestCase);
- });
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab2.js b/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab2.js
deleted file mode 100644
index 77a5645c6..000000000
--- a/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab2.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Tests referrer on context menu navigation - open link in new container tab.
-// Selects "open link in new container tab" from the context menu.
-
-// The test runs from a container ID 1.
-// Output: we have the correct referrer policy applied.
-
-function startNewTabTestCase(aTestNumber) {
- info("browser_referrer_open_link_in_container_tab: " +
- getReferrerTestDescription(aTestNumber));
- contextMenuOpened(gTestWindow, "testlink").then(function(aContextMenu) {
- someTabLoaded(gTestWindow).then(function(aNewTab) {
- gTestWindow.gBrowser.selectedTab = aNewTab;
-
- checkReferrerAndStartNextTest(aTestNumber, null, aNewTab,
- startNewTabTestCase, { userContextId: 1 });
- });
-
- doContextMenuCommand(gTestWindow, aContextMenu, "context-openlinkincontainertab");
- });
-}
-
-function test() {
- waitForExplicitFinish();
-
- SpecialPowers.pushPrefEnv(
- {set: [["privacy.userContext.enabled", true]]},
- function() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startNewTabTestCase, { userContextId: 1 });
- });
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab3.js b/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab3.js
deleted file mode 100644
index c0a73d828..000000000
--- a/browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab3.js
+++ /dev/null
@@ -1,63 +0,0 @@
-// Tests referrer on context menu navigation - open link in new container tab.
-// Selects "open link in new container tab" from the context menu.
-
-// The test runs from a container ID 2.
-// Output: we have no referrer.
-
-function getReferrerTest(aTestNumber) {
- let test = _referrerTests[aTestNumber];
- if (test) {
- // We want all the referrer tests to fail!
- test.result = "";
- }
-
- return test;
-}
-
-function startNewTabTestCase(aTestNumber) {
- info("browser_referrer_open_link_in_container_tab: " +
- getReferrerTestDescription(aTestNumber));
- contextMenuOpened(gTestWindow, "testlink").then(function(aContextMenu) {
- someTabLoaded(gTestWindow).then(function(aNewTab) {
- gTestWindow.gBrowser.selectedTab = aNewTab;
-
- checkReferrerAndStartNextTest(aTestNumber, null, aNewTab,
- startNewTabTestCase, { userContextId: 2 });
- });
-
- let menu = gTestWindow.document.getElementById("context-openlinkinusercontext-menu");
-
- let menupopup = menu.menupopup;
- menu.addEventListener("popupshown", function onPopupShown() {
- menu.removeEventListener("popupshown", onPopupShown);
-
- is(menupopup.nodeType, Node.ELEMENT_NODE, "We have a menupopup.");
- ok(menupopup.firstChild, "We have a first container entry.");
-
- let firstContext = menupopup.firstChild;
- is(firstContext.nodeType, Node.ELEMENT_NODE, "We have a first container entry.");
- ok(firstContext.hasAttribute("data-usercontextid"), "We have a usercontextid value.");
- is("0", firstContext.getAttribute("data-usercontextid"), "We have the right usercontextid value.");
-
- aContextMenu.addEventListener("popuphidden", function onPopupHidden() {
- aContextMenu.removeEventListener("popuphidden", onPopupHidden);
- firstContext.doCommand();
- });
-
- aContextMenu.hidePopup();
- });
-
- menupopup.showPopup();
- });
-}
-
-function test() {
- waitForExplicitFinish();
-
- SpecialPowers.pushPrefEnv(
- {set: [["privacy.userContext.enabled", true]]},
- function() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startNewTabTestCase, { userContextId: 2 });
- });
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_open_link_in_private.js b/browser/base/content/test/referrer/browser_referrer_open_link_in_private.js
deleted file mode 100644
index 8f12e3824..000000000
--- a/browser/base/content/test/referrer/browser_referrer_open_link_in_private.js
+++ /dev/null
@@ -1,22 +0,0 @@
-// Tests referrer on context menu navigation - open link in new private window.
-// Selects "open link in new private window" from the context menu.
-
-function startNewPrivateWindowTestCase(aTestNumber) {
- info("browser_referrer_open_link_in_private: " +
- getReferrerTestDescription(aTestNumber));
- contextMenuOpened(gTestWindow, "testlink").then(function(aContextMenu) {
- newWindowOpened().then(function(aNewWindow) {
- BrowserTestUtils.firstBrowserLoaded(aNewWindow, false).then(function() {
- checkReferrerAndStartNextTest(aTestNumber, aNewWindow, null,
- startNewPrivateWindowTestCase);
- });
- });
-
- doContextMenuCommand(gTestWindow, aContextMenu, "context-openlinkprivate");
- });
-}
-
-function test() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startNewPrivateWindowTestCase);
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js b/browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js
deleted file mode 100644
index 03119cb57..000000000
--- a/browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Tests referrer on context menu navigation - open link in new tab.
-// Selects "open link in new tab" from the context menu.
-
-function startNewTabTestCase(aTestNumber) {
- info("browser_referrer_open_link_in_tab: " +
- getReferrerTestDescription(aTestNumber));
- contextMenuOpened(gTestWindow, "testlink").then(function(aContextMenu) {
- someTabLoaded(gTestWindow).then(function(aNewTab) {
- gTestWindow.gBrowser.selectedTab = aNewTab;
- checkReferrerAndStartNextTest(aTestNumber, null, aNewTab,
- startNewTabTestCase);
- });
-
- doContextMenuCommand(gTestWindow, aContextMenu, "context-openlinkintab");
- });
-}
-
-function test() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startNewTabTestCase);
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_open_link_in_window.js b/browser/base/content/test/referrer/browser_referrer_open_link_in_window.js
deleted file mode 100644
index 81e7b2648..000000000
--- a/browser/base/content/test/referrer/browser_referrer_open_link_in_window.js
+++ /dev/null
@@ -1,22 +0,0 @@
-// Tests referrer on context menu navigation - open link in new window.
-// Selects "open link in new window" from the context menu.
-
-function startNewWindowTestCase(aTestNumber) {
- info("browser_referrer_open_link_in_window: " +
- getReferrerTestDescription(aTestNumber));
- contextMenuOpened(gTestWindow, "testlink").then(function(aContextMenu) {
- newWindowOpened().then(function(aNewWindow) {
- BrowserTestUtils.firstBrowserLoaded(aNewWindow, false).then(function() {
- checkReferrerAndStartNextTest(aTestNumber, aNewWindow, null,
- startNewWindowTestCase);
- });
- });
-
- doContextMenuCommand(gTestWindow, aContextMenu, "context-openlink");
- });
-}
-
-function test() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startNewWindowTestCase);
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_open_link_in_window_in_container.js b/browser/base/content/test/referrer/browser_referrer_open_link_in_window_in_container.js
deleted file mode 100644
index d5ce87952..000000000
--- a/browser/base/content/test/referrer/browser_referrer_open_link_in_window_in_container.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// Tests referrer on context menu navigation - open link in new window.
-// Selects "open link in new window" from the context menu.
-
-// This test runs from a container tab. The new tab/window will be loaded in
-// the same container.
-
-function startNewWindowTestCase(aTestNumber) {
- info("browser_referrer_open_link_in_window: " +
- getReferrerTestDescription(aTestNumber));
- contextMenuOpened(gTestWindow, "testlink").then(function(aContextMenu) {
- newWindowOpened().then(function(aNewWindow) {
- BrowserTestUtils.firstBrowserLoaded(aNewWindow, false).then(function() {
- checkReferrerAndStartNextTest(aTestNumber, aNewWindow, null,
- startNewWindowTestCase,
- { userContextId: 1 });
- });
- });
-
- doContextMenuCommand(gTestWindow, aContextMenu, "context-openlink");
- });
-}
-
-function test() {
- waitForExplicitFinish();
-
- SpecialPowers.pushPrefEnv(
- {set: [["privacy.userContext.enabled", true]]},
- function() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startNewWindowTestCase, { userContextId: 1 });
- });
-}
diff --git a/browser/base/content/test/referrer/browser_referrer_simple_click.js b/browser/base/content/test/referrer/browser_referrer_simple_click.js
deleted file mode 100644
index 7f3784e64..000000000
--- a/browser/base/content/test/referrer/browser_referrer_simple_click.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Tests referrer on simple click navigation.
-// Clicks on the link, which opens it in the same tab.
-
-function startSimpleClickTestCase(aTestNumber) {
- info("browser_referrer_simple_click: " +
- getReferrerTestDescription(aTestNumber));
- BrowserTestUtils.browserLoaded(gTestWindow.gBrowser.selectedBrowser, false,
- (url) => url.endsWith("file_referrer_testserver.sjs"))
- .then(function() {
- checkReferrerAndStartNextTest(aTestNumber, null, null,
- startSimpleClickTestCase);
- });
-
- clickTheLink(gTestWindow, "testlink", {});
-}
-
-function test() {
- requestLongerTimeout(10); // slowwww shutdown on e10s
- startReferrerTest(startSimpleClickTestCase);
-}
diff --git a/browser/base/content/test/referrer/file_referrer_policyserver.sjs b/browser/base/content/test/referrer/file_referrer_policyserver.sjs
deleted file mode 100644
index e07965675..000000000
--- a/browser/base/content/test/referrer/file_referrer_policyserver.sjs
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Renders a link with the provided referrer policy.
- * Used in browser_referrer_*.js, bug 1113431.
- * Arguments: ?scheme=http://&policy=origin&rel=noreferrer
- */
-function handleRequest(request, response)
-{
- Components.utils.importGlobalProperties(["URLSearchParams"]);
- let query = new URLSearchParams(request.queryString);
-
- let scheme = query.get("scheme");
- let policy = query.get("policy");
- let rel = query.get("rel");
-
- let linkUrl = scheme +
- "test1.example.com/browser/browser/base/content/test/referrer/" +
- "file_referrer_testserver.sjs";
- let metaReferrerTag =
- policy ? `<meta name='referrer' content='${policy}'>` : "";
-
- let html = `<!DOCTYPE HTML>
- <html>
- <head>
- <meta charset='utf-8'>
- ${metaReferrerTag}
- <title>Test referrer</title>
- </head>
- <body>
- <a id='testlink' href='${linkUrl}' ${rel ? ` rel='${rel}'` : ""}>
- referrer test link</a>
- </body>
- </html>`;
-
- response.setHeader("Cache-Control", "no-cache", false);
- response.setHeader("Content-Type", "text/html", false);
- response.write(html);
-}
diff --git a/browser/base/content/test/referrer/file_referrer_policyserver_attr.sjs b/browser/base/content/test/referrer/file_referrer_policyserver_attr.sjs
deleted file mode 100644
index 25a58188a..000000000
--- a/browser/base/content/test/referrer/file_referrer_policyserver_attr.sjs
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Renders a link with the provided referrer policy.
- * Used in browser_referrer_*.js, bug 1113431.
- * Arguments: ?scheme=http://&policy=origin&rel=noreferrer
- */
-function handleRequest(request, response)
-{
- Components.utils.importGlobalProperties(["URLSearchParams"]);
- let query = new URLSearchParams(request.queryString);
-
- let scheme = query.get("scheme");
- let policy = query.get("policy");
- let rel = query.get("rel");
-
- let linkUrl = scheme +
- "test1.example.com/browser/browser/base/content/test/referrer/" +
- "file_referrer_testserver.sjs";
- let referrerPolicy =
- policy ? `referrerpolicy="${policy}"` : "";
-
- let html = `<!DOCTYPE HTML>
- <html>
- <head>
- <meta charset='utf-8'>
- <title>Test referrer</title>
- </head>
- <body>
- <a id='testlink' href='${linkUrl}' ${referrerPolicy} ${rel ? ` rel='${rel}'` : ""}>
- referrer test link</a>
- </body>
- </html>`;
-
- response.setHeader("Cache-Control", "no-cache", false);
- response.setHeader("Content-Type", "text/html", false);
- response.write(html);
-}
diff --git a/browser/base/content/test/referrer/file_referrer_testserver.sjs b/browser/base/content/test/referrer/file_referrer_testserver.sjs
deleted file mode 100644
index 0cfc53b2c..000000000
--- a/browser/base/content/test/referrer/file_referrer_testserver.sjs
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Renders the HTTP Referer header up to the second path slash.
- * Used in browser_referrer_*.js, bug 1113431.
- */
-function handleRequest(request, response)
-{
- let referrer = "";
- try {
- referrer = request.getHeader("referer");
- } catch (e) {
- referrer = "";
- }
-
- // Strip it past the first path slash. Makes tests easier to read.
- referrer = referrer.split("/").slice(0, 4).join("/");
-
- let html = `<!DOCTYPE HTML>
- <html>
- <head>
- <meta charset='utf-8'>
- <title>Test referrer</title>
- </head>
- <body>
- <div id='testdiv'>${referrer}</div>
- </body>
- </html>`;
-
- response.setHeader("Cache-Control", "no-cache", false);
- response.setHeader("Content-Type", "text/html", false);
- response.write(html);
-}
diff --git a/browser/base/content/test/referrer/head.js b/browser/base/content/test/referrer/head.js
deleted file mode 100644
index 1a5d5b051..000000000
--- a/browser/base/content/test/referrer/head.js
+++ /dev/null
@@ -1,265 +0,0 @@
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(this, "Promise",
- "resource://gre/modules/Promise.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "BrowserTestUtils",
- "resource://testing-common/BrowserTestUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "ContentTask",
- "resource://testing-common/ContentTask.jsm");
-
-const REFERRER_URL_BASE = "/browser/browser/base/content/test/referrer/";
-const REFERRER_POLICYSERVER_URL =
- "test1.example.com" + REFERRER_URL_BASE + "file_referrer_policyserver.sjs";
-const REFERRER_POLICYSERVER_URL_ATTRIBUTE =
- "test1.example.com" + REFERRER_URL_BASE + "file_referrer_policyserver_attr.sjs";
-
-SpecialPowers.pushPrefEnv({"set": [['network.http.enablePerElementReferrer', true]]});
-
-var gTestWindow = null;
-var rounds = 0;
-
-// We test that the UI code propagates three pieces of state - the referrer URI
-// itself, the referrer policy, and the triggering principal. After that, we
-// trust nsIWebNavigation to do the right thing with the info it's given, which
-// is covered more exhaustively by dom/base/test/test_bug704320.html (which is
-// a faster content-only test). So, here, we limit ourselves to cases that
-// would break when the UI code drops either of these pieces; we don't try to
-// duplicate the entire cross-product test in bug 704320 - that would be slow,
-// especially when we're opening a new window for each case.
-var _referrerTests = [
- // 1. Normal cases - no referrer policy, no special attributes.
- // We expect a full referrer normally, and no referrer on downgrade.
- {
- fromScheme: "http://",
- toScheme: "http://",
- result: "http://test1.example.com/browser" // full referrer
- },
- {
- fromScheme: "https://",
- toScheme: "http://",
- result: "" // no referrer when downgrade
- },
- // 2. Origin referrer policy - we expect an origin referrer,
- // even on downgrade. But rel=noreferrer trumps this.
- {
- fromScheme: "https://",
- toScheme: "http://",
- policy: "origin",
- result: "https://test1.example.com/" // origin, even on downgrade
- },
- {
- fromScheme: "https://",
- toScheme: "http://",
- policy: "origin",
- rel: "noreferrer",
- result: "" // rel=noreferrer trumps meta-referrer
- },
- // 3. XXX: using no-referrer here until we support all attribute values (bug 1178337)
- // Origin-when-cross-origin policy - this depends on the triggering
- // principal. We expect full referrer for same-origin requests,
- // and origin referrer for cross-origin requests.
- {
- fromScheme: "https://",
- toScheme: "https://",
- policy: "no-referrer",
- result: "" // same origin https://test1.example.com/browser
- },
- {
- fromScheme: "http://",
- toScheme: "https://",
- policy: "no-referrer",
- result: "" // cross origin http://test1.example.com
- },
-];
-
-/**
- * Returns the test object for a given test number.
- * @param aTestNumber The test number - 0, 1, 2, ...
- * @return The test object, or undefined if the number is out of range.
- */
-function getReferrerTest(aTestNumber) {
- return _referrerTests[aTestNumber];
-}
-
-/**
- * Returns a brief summary of the test, for logging.
- * @param aTestNumber The test number - 0, 1, 2...
- * @return The test description.
- */
-function getReferrerTestDescription(aTestNumber) {
- let test = getReferrerTest(aTestNumber);
- return "policy=[" + test.policy + "] " +
- "rel=[" + test.rel + "] " +
- test.fromScheme + " -> " + test.toScheme;
-}
-
-/**
- * Clicks the link.
- * @param aWindow The window to click the link in.
- * @param aLinkId The id of the link element.
- * @param aOptions The options for synthesizeMouseAtCenter.
- */
-function clickTheLink(aWindow, aLinkId, aOptions) {
- return BrowserTestUtils.synthesizeMouseAtCenter(
- "#" + aLinkId, aOptions, aWindow.gBrowser.selectedBrowser);
-}
-
-/**
- * Extracts the referrer result from the target window.
- * @param aWindow The window where the referrer target has loaded.
- * @return {Promise}
- * @resolves When extacted, with the text of the (trimmed) referrer.
- */
-function referrerResultExtracted(aWindow) {
- return ContentTask.spawn(aWindow.gBrowser.selectedBrowser, {}, function() {
- return content.document.getElementById("testdiv").textContent;
- });
-}
-
-/**
- * Waits for browser delayed startup to finish.
- * @param aWindow The window to wait for.
- * @return {Promise}
- * @resolves When the window is loaded.
- */
-function delayedStartupFinished(aWindow) {
- return new Promise(function(resolve) {
- Services.obs.addObserver(function observer(aSubject, aTopic) {
- if (aWindow == aSubject) {
- Services.obs.removeObserver(observer, aTopic);
- resolve();
- }
- }, "browser-delayed-startup-finished", false);
- });
-}
-
-/**
- * Waits for some (any) tab to load. The caller triggers the load.
- * @param aWindow The window where to wait for a tab to load.
- * @return {Promise}
- * @resolves With the tab once it's loaded.
- */
-function someTabLoaded(aWindow) {
- return BrowserTestUtils.waitForNewTab(gTestWindow.gBrowser).then((tab) => {
- return BrowserTestUtils.browserStopped(tab.linkedBrowser).then(() => tab);
- });
-}
-
-/**
- * Waits for a new window to open and load. The caller triggers the open.
- * @return {Promise}
- * @resolves With the new window once it's open and loaded.
- */
-function newWindowOpened() {
- return TestUtils.topicObserved("browser-delayed-startup-finished")
- .then(([win]) => win);
-}
-
-/**
- * Opens the context menu.
- * @param aWindow The window to open the context menu in.
- * @param aLinkId The id of the link to open the context menu on.
- * @return {Promise}
- * @resolves With the menu popup when the context menu is open.
- */
-function contextMenuOpened(aWindow, aLinkId) {
- let popupShownPromise = BrowserTestUtils.waitForEvent(aWindow.document,
- "popupshown");
- // Simulate right-click.
- clickTheLink(aWindow, aLinkId, { type: "contextmenu", button: 2 });
- return popupShownPromise.then(e => e.target);
-}
-
-/**
- * Performs a context menu command.
- * @param aWindow The window with the already open context menu.
- * @param aMenu The menu popup to hide.
- * @param aItemId The id of the menu item to activate.
- */
-function doContextMenuCommand(aWindow, aMenu, aItemId) {
- let command = aWindow.document.getElementById(aItemId);
- command.doCommand();
- aMenu.hidePopup();
-}
-
-/**
- * Loads a single test case, i.e., a source url into gTestWindow.
- * @param aTestNumber The test case number - 0, 1, 2...
- * @return {Promise}
- * @resolves When the source url for this test case is loaded.
- */
-function referrerTestCaseLoaded(aTestNumber, aParams) {
- let test = getReferrerTest(aTestNumber);
- let server = rounds == 0 ? REFERRER_POLICYSERVER_URL :
- REFERRER_POLICYSERVER_URL_ATTRIBUTE;
- let url = test.fromScheme + server +
- "?scheme=" + escape(test.toScheme) +
- "&policy=" + escape(test.policy || "") +
- "&rel=" + escape(test.rel || "");
- let browser = gTestWindow.gBrowser;
- return BrowserTestUtils.openNewForegroundTab(browser, () => {
- browser.selectedTab = browser.addTab(url, aParams);
- }, false, true);
-}
-
-/**
- * Checks the result of the referrer test, and moves on to the next test.
- * @param aTestNumber The test number - 0, 1, 2, ...
- * @param aNewWindow The new window where the referrer target opened, or null.
- * @param aNewTab The new tab where the referrer target opened, or null.
- * @param aStartTestCase The callback to start the next test, aTestNumber + 1.
- */
-function checkReferrerAndStartNextTest(aTestNumber, aNewWindow, aNewTab,
- aStartTestCase, aParams = {}) {
- referrerResultExtracted(aNewWindow || gTestWindow).then(function(result) {
- // Compare the actual result against the expected one.
- let test = getReferrerTest(aTestNumber);
- let desc = getReferrerTestDescription(aTestNumber);
- is(result, test.result, desc);
-
- // Clean up - close new tab / window, and then the source tab.
- aNewTab && (aNewWindow || gTestWindow).gBrowser.removeTab(aNewTab);
- aNewWindow && aNewWindow.close();
- is(gTestWindow.gBrowser.tabs.length, 2, "two tabs open");
- gTestWindow.gBrowser.removeTab(gTestWindow.gBrowser.tabs[1]);
-
- // Move on to the next test. Or finish if we're done.
- var nextTestNumber = aTestNumber + 1;
- if (getReferrerTest(nextTestNumber)) {
- referrerTestCaseLoaded(nextTestNumber, aParams).then(function() {
- aStartTestCase(nextTestNumber);
- });
- } else if (rounds == 0) {
- nextTestNumber = 0;
- rounds = 1;
- referrerTestCaseLoaded(nextTestNumber, aParams).then(function() {
- aStartTestCase(nextTestNumber);
- });
- } else {
- finish();
- }
- });
-}
-
-/**
- * Fires up the complete referrer test.
- * @param aStartTestCase The callback to start a single test case, called with
- * the test number - 0, 1, 2... Needs to trigger the navigation from the source
- * page, and call checkReferrerAndStartNextTest() when the target is loaded.
- */
-function startReferrerTest(aStartTestCase, params = {}) {
- waitForExplicitFinish();
-
- // Open the window where we'll load the source URLs.
- gTestWindow = openDialog(location, "", "chrome,all,dialog=no", "about:blank");
- registerCleanupFunction(function() {
- gTestWindow && gTestWindow.close();
- });
-
- // Load and start the first test.
- delayedStartupFinished(gTestWindow).then(function() {
- referrerTestCaseLoaded(0, params).then(function() {
- aStartTestCase(0);
- });
- });
-}