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