michael@0: const { getMostRecentBrowserWindow } = require('sdk/window/utils'); michael@0: const { PageMod } = require("sdk/page-mod"); michael@0: const { getActiveTab, setTabURL, openTab, closeTab } = require('sdk/tabs/utils'); michael@0: const xulApp = require('sdk/system/xul-app'); michael@0: const windowHelpers = require('sdk/window/helpers'); michael@0: const { defer } = require("sdk/core/promise"); michael@0: const { isPrivate } = require('sdk/private-browsing'); michael@0: const { isTabPBSupported, isWindowPBSupported } = require('sdk/private-browsing/utils'); michael@0: michael@0: function openWebpage(url, enablePrivate) { michael@0: let { promise, resolve, reject } = defer(); michael@0: michael@0: if (xulApp.is("Fennec")) { michael@0: let chromeWindow = getMostRecentBrowserWindow(); michael@0: let rawTab = openTab(chromeWindow, url, { michael@0: isPrivate: enablePrivate michael@0: }); michael@0: michael@0: resolve(function() { michael@0: closeTab(rawTab) michael@0: }); michael@0: michael@0: return promise; michael@0: } michael@0: else { michael@0: windowHelpers.open("", { michael@0: features: { michael@0: toolbar: true, michael@0: private: enablePrivate michael@0: } michael@0: }).then(function(chromeWindow) { michael@0: if (isPrivate(chromeWindow) !== !!enablePrivate) michael@0: reject(new Error("Window should have Private set to " + !!enablePrivate)); michael@0: michael@0: let tab = getActiveTab(chromeWindow); michael@0: setTabURL(tab, url); michael@0: michael@0: resolve(function(){ michael@0: windowHelpers.close(chromeWindow); michael@0: }); michael@0: }); michael@0: michael@0: return promise; michael@0: } michael@0: } michael@0: michael@0: exports["test page-mod on private tab"] = function (assert, done) { michael@0: // Only set private mode when explicitely supported. michael@0: // (fennec 19 has some intermediate PB support where isTabPBSupported michael@0: // will be false, but isPrivate(worker.tab) will be true if we open a private michael@0: // tab) michael@0: let setPrivate = isTabPBSupported || isWindowPBSupported; michael@0: michael@0: let id = Date.now().toString(36); michael@0: let frameUri = "data:text/html;charset=utf-8," + id; michael@0: let uri = "data:text/html;charset=utf-8," + michael@0: encodeURIComponent(id + "