summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/addons/content-permissions/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/test/addons/content-permissions/main.js')
-rw-r--r--addon-sdk/source/test/addons/content-permissions/main.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/addon-sdk/source/test/addons/content-permissions/main.js b/addon-sdk/source/test/addons/content-permissions/main.js
new file mode 100644
index 000000000..b476ccb74
--- /dev/null
+++ b/addon-sdk/source/test/addons/content-permissions/main.js
@@ -0,0 +1,89 @@
+/* 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 { PageMod } = require("sdk/page-mod");
+const tabs = require("sdk/tabs");
+const { startServerAsync } = require("./httpd");
+
+const serverPort = 8099;
+const TEST_TAB_URL = "about:mozilla";
+
+exports.testCrossDomainIframe = function(assert, done) {
+ let server = startServerAsync(serverPort);
+ server.registerPathHandler("/iframe", function handle(request, response) {
+ response.write("<html><body>foo</body></html>");
+ });
+
+ let pageMod = PageMod({
+ include: TEST_TAB_URL,
+ contentScript: "new " + function ContentScriptScope() {
+ self.on("message", function (url) {
+ let iframe = document.createElement("iframe");
+ iframe.addEventListener("load", function onload() {
+ iframe.removeEventListener("load", onload, false);
+ self.postMessage(iframe.contentWindow.document.body.innerHTML);
+ }, false);
+ iframe.setAttribute("src", url);
+ document.documentElement.appendChild(iframe);
+ });
+ },
+ onAttach: function(w) {
+ w.on("message", function (body) {
+ assert.equal(body, "foo", "received iframe html content");
+ pageMod.destroy();
+ w.tab.close(function() {
+ server.stop(done);
+ });
+ });
+
+ w.postMessage("http://localhost:" + serverPort + "/iframe");
+ }
+ });
+
+ tabs.open({
+ url: TEST_TAB_URL,
+ inBackground: true
+ });
+};
+
+exports.testCrossDomainXHR = function(assert, done) {
+ let server = startServerAsync(serverPort);
+ server.registerPathHandler("/xhr", function handle(request, response) {
+ response.write("foo");
+ });
+
+ let pageMod = PageMod({
+ include: TEST_TAB_URL,
+ contentScript: "new " + function ContentScriptScope() {
+ self.on("message", function (url) {
+ let request = new XMLHttpRequest();
+ request.overrideMimeType("text/plain");
+ request.open("GET", url, true);
+ request.onload = function () {
+ self.postMessage(request.responseText);
+ };
+ request.send(null);
+ });
+ },
+ onAttach: function(w) {
+ w.on("message", function (body) {
+ assert.equal(body, "foo", "received XHR content");
+ pageMod.destroy();
+ w.tab.close(function() {
+ server.stop(done);
+ });
+ });
+
+ w.postMessage("http://localhost:" + serverPort + "/xhr");
+ }
+ });
+
+ tabs.open({
+ url: TEST_TAB_URL,
+ inBackground: true
+ });
+};
+
+require("sdk/test/runner").runTestsFromModule(module);