summaryrefslogtreecommitdiffstats
path: root/dom/security/test/csp/browser_test_web_manifest_mixed_content.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/security/test/csp/browser_test_web_manifest_mixed_content.js')
-rw-r--r--dom/security/test/csp/browser_test_web_manifest_mixed_content.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/dom/security/test/csp/browser_test_web_manifest_mixed_content.js b/dom/security/test/csp/browser_test_web_manifest_mixed_content.js
new file mode 100644
index 000000000..9238acbcd
--- /dev/null
+++ b/dom/security/test/csp/browser_test_web_manifest_mixed_content.js
@@ -0,0 +1,53 @@
+/*
+ * Description of the test:
+ * Check that mixed content blocker works prevents fetches of
+ * mixed content manifests.
+ */
+/*globals Cu, ok*/
+"use strict";
+const {
+ ManifestObtainer
+} = Cu.import("resource://gre/modules/ManifestObtainer.jsm", {});
+const path = "/tests/dom/security/test/csp/";
+const mixedContent = `${path}file_web_manifest_mixed_content.html`;
+const server = `${path}file_testserver.sjs`;
+const secureURL = new URL(`https://example.com${server}`);
+const tests = [
+ // Trying to load mixed content in file_web_manifest_mixed_content.html
+ // needs to result in an error.
+ {
+ expected: "Mixed Content Blocker prevents fetching manifest.",
+ get tabURL() {
+ const url = new URL(secureURL);
+ url.searchParams.append("file", mixedContent);
+ return url.href;
+ },
+ run(error) {
+ // Check reason for error.
+ const check = /NetworkError when attempting to fetch resource/.test(error.message);
+ ok(check, this.expected);
+ }
+ }
+];
+
+//jscs:disable
+add_task(function* () {
+ //jscs:enable
+ const testPromises = tests.map((test) => {
+ const tabOptions = {
+ gBrowser,
+ url: test.tabURL,
+ skipAnimation: true,
+ };
+ return BrowserTestUtils.withNewTab(tabOptions, (browser) => testObtainingManifest(browser, test));
+ });
+ yield Promise.all(testPromises);
+});
+
+function* testObtainingManifest(aBrowser, aTest) {
+ try {
+ yield ManifestObtainer.browserObtainManifest(aBrowser);
+ } catch (e) {
+ aTest.run(e);
+ }
+}