summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/beacon/test_beaconWithSafelistedContentType.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/tests/mochitest/beacon/test_beaconWithSafelistedContentType.html')
-rw-r--r--dom/tests/mochitest/beacon/test_beaconWithSafelistedContentType.html102
1 files changed, 102 insertions, 0 deletions
diff --git a/dom/tests/mochitest/beacon/test_beaconWithSafelistedContentType.html b/dom/tests/mochitest/beacon/test_beaconWithSafelistedContentType.html
new file mode 100644
index 0000000000..d2348d7892
--- /dev/null
+++ b/dom/tests/mochitest/beacon/test_beaconWithSafelistedContentType.html
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1557386
+-->
+<head>
+ <title>Test for Bug 1557386</title>
+ <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1557386">Mozilla Bug 1557386</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+// not enabled by default yet.
+SimpleTest.waitForExplicitFinish();
+SpecialPowers.pushPrefEnv({'set': [["beacon.enabled", true]]}, beginTest);
+
+const {BrowserTestUtils} = ChromeUtils.import("resource://testing-common/BrowserTestUtils.jsm");
+const { clearInterval, setInterval } = ChromeUtils.import(
+ "resource://gre/modules/Timer.jsm"
+);
+
+function whenDelayedStartupFinished(aWindow, aCallback) {
+ Services.obs.addObserver(function observer(aSubject, aTopic) {
+ if (aWindow == aSubject) {
+ Services.obs.removeObserver(observer, aTopic);
+ setTimeout(aCallback, 0);
+ }
+ }, "browser-delayed-startup-finished");
+}
+
+let baseURL = "http://mochi.test:8888/chrome/dom/tests/mochitest/beacon/";
+let windowsToClose = [];
+let listener = msg => {
+ if (!(msg instanceof Ci.nsIConsoleMessage)) {
+ return;
+ }
+ if (msg.message.match("Cross-Origin Request Blocked:")) {
+ ok(false, "CORS response console warning found");
+ }
+};
+
+function beginTest() {
+ Services.console.registerListener(listener);
+
+ let mainWindow = window.docShell.rootTreeItem.domWindow;
+
+ let win = mainWindow.OpenBrowserWindow({});
+ windowsToClose.push(win);
+ whenDelayedStartupFinished(win, async function() {
+ Services.obs.addObserver(function waitCookie() {
+ Services.obs.removeObserver(waitCookie, "cookie-changed");
+ ok(true, "cookie set by beacon request in normal window");
+ testOnPrivateWindow();
+ }, "cookie-changed");
+ let testURL = baseURL + "file_beaconSafelist.html";
+ BrowserTestUtils.loadURIString(win.gBrowser.selectedBrowser, testURL);
+ await BrowserTestUtils.browserLoaded(win.gBrowser.selectedBrowser, false, testURL);
+ await SpecialPowers.spawn(win.gBrowser.selectedBrowser, [], async () => {
+ await new Promise((resolve, reject) => {
+ let intervalId;
+ function queryIfBeaconSucceeded() {
+ content.clearInterval(intervalId);
+ let xhr = new content.XMLHttpRequest();
+ let baseURL = "http://example.com/tests/dom/tests/mochitest/beacon/";
+ let checkUrl = baseURL + "beacon-handler.sjs?getLastBeaconCors";
+ xhr.open("GET", checkUrl, true);
+ xhr.onload = function() {
+ let res = JSON.parse(xhr.responseText);
+ is(res.data, "text", "Got correct data");
+ resolve();
+ };
+ xhr.onerror = function() {
+ ok(false, "Error getting last beacon");
+ reject();
+ };
+ xhr.send();
+ }
+ intervalID = content.setInterval(queryIfBeaconSucceeded, 2000);
+ });
+ });
+ cleanup();
+ });
+}
+
+function cleanup() {
+ Services.console.unregisterListener(listener);
+ for (let i = 0; i < windowsToClose.length; ++i) {
+ windowsToClose[i].close();
+ }
+ SimpleTest.finish();
+}
+
+</script>
+</pre>
+</body>
+</html>