diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /addon-sdk/source/test/addons/content-permissions/main.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'addon-sdk/source/test/addons/content-permissions/main.js')
-rw-r--r-- | addon-sdk/source/test/addons/content-permissions/main.js | 89 |
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); |