summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/test-private-browsing.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/test/test-private-browsing.js')
-rw-r--r--addon-sdk/source/test/test-private-browsing.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/addon-sdk/source/test/test-private-browsing.js b/addon-sdk/source/test/test-private-browsing.js
new file mode 100644
index 000000000..3af89afe2
--- /dev/null
+++ b/addon-sdk/source/test/test-private-browsing.js
@@ -0,0 +1,88 @@
+/* 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 { Ci, Cu } = require('chrome');
+const { safeMerge } = require('sdk/util/object');
+const windows = require('sdk/windows').browserWindows;
+const tabs = require('sdk/tabs');
+const winUtils = require('sdk/window/utils');
+const { isWindowPrivate } = winUtils;
+const { isPrivateBrowsingSupported } = require('sdk/self');
+const { is } = require('sdk/system/xul-app');
+const { isPrivate } = require('sdk/private-browsing');
+const { LoaderWithHookedConsole } = require("sdk/test/loader");
+const { getMode, isWindowPBSupported, isTabPBSupported } = require('sdk/private-browsing/utils');
+const { pb } = require('./private-browsing/helper');
+const prefs = require('sdk/preferences/service');
+
+const { NetUtil } = Cu.import("resource://gre/modules/NetUtil.jsm", {});
+
+const kAutoStartPref = "browser.privatebrowsing.autostart";
+
+if (isWindowPBSupported) {
+ safeMerge(module.exports, require('./private-browsing/windows'));
+
+ exports.testPWOnlyOnFirefox = function(assert) {
+ assert.ok(is("Firefox"), "isWindowPBSupported is only true on Firefox");
+ }
+}
+// only on Fennec
+else if (isTabPBSupported) {
+ safeMerge(module.exports, require('./private-browsing/tabs'));
+
+ exports.testPTOnlyOnFennec = function(assert) {
+ assert.ok(is("Fennec"), "isTabPBSupported is only true on Fennec");
+ }
+}
+
+exports.testIsPrivateDefaults = function(assert) {
+ assert.equal(isPrivate(), false, 'undefined is not private');
+ assert.equal(isPrivate('test'), false, 'strings are not private');
+ assert.equal(isPrivate({}), false, 'random objects are not private');
+ assert.equal(isPrivate(4), false, 'numbers are not private');
+ assert.equal(isPrivate(/abc/), false, 'regex are not private');
+ assert.equal(isPrivate(function() {}), false, 'functions are not private');
+};
+
+exports.testWindowDefaults = function(assert) {
+ // Ensure that browserWindow still works while being deprecated
+ let { loader, messages } = LoaderWithHookedConsole(module);
+ let windows = loader.require("sdk/windows").browserWindows;
+ assert.equal(windows.activeWindow.isPrivateBrowsing, undefined,
+ 'window.isPrivateBrowsing is undefined');
+ assert.equal(undefined, messages[0],
+ 'isPrivateBrowsing is deprecated');
+
+ let chromeWin = winUtils.getMostRecentBrowserWindow();
+ assert.equal(getMode(chromeWin), false);
+ assert.equal(isWindowPrivate(chromeWin), false);
+};
+
+exports.testIsPrivateBrowsingFalseDefault = function(assert) {
+ assert.equal(isPrivateBrowsingSupported, false,
+ 'isPrivateBrowsingSupported property is false by default');
+};
+
+exports.testNSIPrivateBrowsingChannel = function(assert) {
+ let channel = NetUtil.newChannel({
+ uri: "about:blank",
+ loadUsingSystemPrincipal: true
+ });
+ channel.QueryInterface(Ci.nsIPrivateBrowsingChannel);
+ assert.equal(isPrivate(channel), false, 'isPrivate detects non-private channels');
+ channel.setPrivate(true);
+ assert.ok(isPrivate(channel), 'isPrivate detects private channels');
+}
+
+exports.testNewGlobalPBService = function(assert) {
+ assert.equal(isPrivate(), false, 'isPrivate() is false by default');
+ prefs.set(kAutoStartPref, true);
+ assert.equal(prefs.get(kAutoStartPref, false), true, kAutoStartPref + ' is true now');
+ assert.equal(isPrivate(), true, 'isPrivate() is true now');
+ prefs.set(kAutoStartPref, false);
+ assert.equal(isPrivate(), false, 'isPrivate() is false again');
+};
+
+require('sdk/test').run(module.exports);