mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-09 00:37:32 +09:00
99 lines
2.8 KiB
JavaScript
99 lines
2.8 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 { open, focus, close } = require('sdk/window/helpers');
|
|
const { isPrivate } = require('sdk/private-browsing');
|
|
const { defer } = require('sdk/core/promise');
|
|
const { browserWindows: windows } = require('sdk/windows');
|
|
const { getInnerId, getMostRecentBrowserWindow } = require('sdk/window/utils');
|
|
const { getActiveView } = require('sdk/view/core');
|
|
|
|
const BROWSER = 'chrome://browser/content/browser.xul';
|
|
|
|
exports.testRequirePanel = function(assert) {
|
|
require('sdk/panel');
|
|
assert.ok('the panel module should not throw an error');
|
|
};
|
|
|
|
exports.testShowPanelInPrivateWindow = function(assert, done) {
|
|
let panel = require('sdk/panel').Panel({
|
|
contentURL: "data:text/html;charset=utf-8,I'm a leaf on the wind"
|
|
});
|
|
|
|
assert.ok(windows.length > 0, 'there is at least one open window');
|
|
for (let window of windows) {
|
|
assert.equal(isPrivate(window), false, 'open window is private');
|
|
}
|
|
|
|
let panelView = getActiveView(panel);
|
|
let expectedWindowId = getInnerId(panelView.backgroundFrame.contentWindow);
|
|
|
|
function checkPanelFrame() {
|
|
let iframe = panelView.firstChild;
|
|
|
|
assert.equal(panelView.viewFrame, iframe, 'panel has the correct viewFrame value');
|
|
|
|
let windowId = getInnerId(iframe.contentWindow);
|
|
|
|
assert.equal(windowId, expectedWindowId, 'panel has the correct window visible');
|
|
|
|
assert.equal(iframe.contentDocument.body.textContent,
|
|
"I'm a leaf on the wind",
|
|
'the panel has the expected content');
|
|
}
|
|
|
|
function testPanel(window) {
|
|
let { promise, resolve } = defer();
|
|
|
|
assert.ok(!panel.isShowing, 'the panel is not showing [1]');
|
|
|
|
panel.once('show', function() {
|
|
assert.ok(panel.isShowing, 'the panel is showing');
|
|
|
|
checkPanelFrame();
|
|
|
|
panel.once('hide', function() {
|
|
assert.ok(!panel.isShowing, 'the panel is not showing [2]');
|
|
|
|
resolve(window);
|
|
});
|
|
|
|
panel.hide();
|
|
});
|
|
|
|
panel.show();
|
|
|
|
return promise;
|
|
};
|
|
|
|
let initialWindow = getMostRecentBrowserWindow();
|
|
|
|
testPanel(initialWindow).
|
|
then(makeEmptyPrivateBrowserWindow).
|
|
then(focus).
|
|
then(function(window) {
|
|
assert.equal(isPrivate(window), true, 'opened window is private');
|
|
assert.pass('private window was focused');
|
|
return window;
|
|
}).
|
|
then(testPanel).
|
|
then(close).
|
|
then(() => focus(initialWindow)).
|
|
then(testPanel).
|
|
then(done).
|
|
then(null, assert.fail);
|
|
};
|
|
|
|
|
|
function makeEmptyPrivateBrowserWindow(options) {
|
|
options = options || {};
|
|
return open(BROWSER, {
|
|
features: {
|
|
chrome: true,
|
|
toolbar: true,
|
|
private: true
|
|
}
|
|
});
|
|
}
|