116 lines
3.6 KiB
JavaScript
116 lines
3.6 KiB
JavaScript
|
/* 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 { onFocus, openDialog, open } = require('sdk/window/utils');
|
||
|
const { open: openPromise, close, focus, promise } = require('sdk/window/helpers');
|
||
|
const { isPrivate } = require('sdk/private-browsing');
|
||
|
const { getMode } = require('sdk/private-browsing/utils');
|
||
|
const { browserWindows: windows } = require('sdk/windows');
|
||
|
const { defer } = require('sdk/core/promise');
|
||
|
const tabs = require('sdk/tabs');
|
||
|
const { getMostRecentBrowserWindow } = require('sdk/window/utils');
|
||
|
const { cleanUI } = require("sdk/test/utils");
|
||
|
|
||
|
// test openDialog() from window/utils with private option
|
||
|
// test isActive state in pwpb case
|
||
|
// test isPrivate on ChromeWindow
|
||
|
exports.testPerWindowPrivateBrowsingGetter = function*(assert) {
|
||
|
let win = openDialog({ private: true });
|
||
|
|
||
|
yield promise(win, 'DOMContentLoaded');
|
||
|
|
||
|
assert.equal(getMode(win), true, 'Newly opened window is in PB mode');
|
||
|
assert.ok(isPrivate(win), 'isPrivate(window) is true');
|
||
|
|
||
|
yield close(win);
|
||
|
}
|
||
|
|
||
|
// test open() from window/utils with private feature
|
||
|
// test isActive state in pwpb case
|
||
|
// test isPrivate on ChromeWindow
|
||
|
exports.testPerWindowPrivateBrowsingGetter = function*(assert) {
|
||
|
let win = open('chrome://browser/content/browser.xul', {
|
||
|
features: {
|
||
|
private: true
|
||
|
}
|
||
|
});
|
||
|
|
||
|
yield promise(win, 'DOMContentLoaded');
|
||
|
assert.equal(getMode(win), true, 'Newly opened window is in PB mode');
|
||
|
assert.ok(isPrivate(win), 'isPrivate(window) is true');
|
||
|
yield close(win)
|
||
|
}
|
||
|
|
||
|
exports.testIsPrivateOnWindowOpen = function*(assert) {
|
||
|
let window = yield new Promise(resolve => {
|
||
|
windows.open({
|
||
|
isPrivate: true,
|
||
|
onOpen: resolve
|
||
|
});
|
||
|
});
|
||
|
|
||
|
assert.equal(isPrivate(window), false, 'isPrivate for a window is true when it should be');
|
||
|
assert.equal(isPrivate(window.tabs[0]), false, 'isPrivate for a tab is false when it should be');
|
||
|
|
||
|
yield cleanUI();
|
||
|
}
|
||
|
|
||
|
exports.testIsPrivateOnWindowOpenFromPrivate = function(assert, done) {
|
||
|
// open a private window
|
||
|
openPromise(null, {
|
||
|
features: {
|
||
|
private: true,
|
||
|
chrome: true,
|
||
|
titlebar: true,
|
||
|
toolbar: true
|
||
|
}
|
||
|
}).then(focus).then(function(window) {
|
||
|
let { promise, resolve } = defer();
|
||
|
|
||
|
assert.equal(isPrivate(window), true, 'the only open window is private');
|
||
|
|
||
|
windows.open({
|
||
|
url: 'about:blank',
|
||
|
onOpen: function(w) {
|
||
|
assert.equal(isPrivate(w), false, 'new test window is not private');
|
||
|
w.close(() => resolve(window));
|
||
|
}
|
||
|
});
|
||
|
|
||
|
return promise;
|
||
|
}).then(close).
|
||
|
then(done, assert.fail);
|
||
|
};
|
||
|
|
||
|
exports.testOpenTabWithPrivateWindow = function*(assert) {
|
||
|
let window = getMostRecentBrowserWindow().OpenBrowserWindow({ private: true });
|
||
|
|
||
|
assert.pass("loading new private window");
|
||
|
|
||
|
yield promise(window, 'load').then(focus);
|
||
|
|
||
|
assert.equal(isPrivate(window), true, 'the focused window is private');
|
||
|
|
||
|
yield new Promise(resolve => tabs.open({
|
||
|
url: 'about:blank',
|
||
|
onOpen: (tab) => {
|
||
|
assert.equal(isPrivate(tab), false, 'the opened tab is not private');
|
||
|
tab.close(resolve);
|
||
|
}
|
||
|
}));
|
||
|
|
||
|
yield close(window);
|
||
|
};
|
||
|
|
||
|
exports.testIsPrivateOnWindowOff = function(assert, done) {
|
||
|
windows.open({
|
||
|
onOpen: function(window) {
|
||
|
assert.equal(isPrivate(window), false, 'isPrivate for a window is false when it should be');
|
||
|
assert.equal(isPrivate(window.tabs[0]), false, 'isPrivate for a tab is false when it should be');
|
||
|
window.close(done);
|
||
|
}
|
||
|
})
|
||
|
}
|