summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/addons/unsafe-content-script/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/test/addons/unsafe-content-script/main.js')
-rw-r--r--addon-sdk/source/test/addons/unsafe-content-script/main.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/addon-sdk/source/test/addons/unsafe-content-script/main.js b/addon-sdk/source/test/addons/unsafe-content-script/main.js
new file mode 100644
index 000000000..b06810117
--- /dev/null
+++ b/addon-sdk/source/test/addons/unsafe-content-script/main.js
@@ -0,0 +1,68 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+const { create: makeFrame } = require("sdk/frame/utils");
+const { window } = require("sdk/addon/window");
+const { Loader } = require('sdk/test/loader');
+
+exports.testMembranelessMode = function(assert, done) {
+ const loader = Loader(module);
+ const Worker = loader.require("sdk/content/worker").Worker;
+
+ let url = "data:text/html;charset=utf-8," + encodeURIComponent(
+ '<script>' +
+ 'function runTest() {' +
+ ' assert(fuu.bar == 42, "Content-script objects should be accessible to content with' +
+ ' the unsafe-content-script flag on.");' +
+ '}' +
+ '</script>'
+ );
+
+ let element = makeFrame(window.document, {
+ nodeName: "iframe",
+ type: "content",
+ allowJavascript: true,
+ allowPlugins: true,
+ allowAuth: true,
+ uri: url
+ });
+
+ element.addEventListener("DOMContentLoaded", onDOMReady, false);
+
+ function onDOMReady() {
+ let worker = Worker({
+ window: element.contentWindow,
+ contentScript:
+ 'new ' + function () {
+ var assert = function assert(v, msg) {
+ self.port.emit("assert", { assertion: v, msg: msg });
+ }
+ var done = function done() {
+ self.port.emit("done");
+ }
+ window.wrappedJSObject.fuu = { bar: 42 };
+ window.wrappedJSObject.assert = assert;
+ window.wrappedJSObject.runTest();
+ done();
+ }
+ });
+
+ worker.port.on("done", () => {
+ // cleanup
+ element.parentNode.removeChild(element);
+ worker.destroy();
+ loader.unload();
+
+ done();
+ });
+
+ worker.port.on("assert", function (data) {
+ assert.ok(data.assertion, data.msg);
+ });
+
+ }
+};
+
+require("sdk/test/runner").runTestsFromModule(module);