diff options
Diffstat (limited to 'addon-sdk/source/test/addons/private-browsing-supported/test-panel.js')
-rw-r--r-- | addon-sdk/source/test/addons/private-browsing-supported/test-panel.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/addon-sdk/source/test/addons/private-browsing-supported/test-panel.js b/addon-sdk/source/test/addons/private-browsing-supported/test-panel.js new file mode 100644 index 000000000..1ba3e9554 --- /dev/null +++ b/addon-sdk/source/test/addons/private-browsing-supported/test-panel.js @@ -0,0 +1,99 @@ +/* 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 + } + }); +} |