summaryrefslogtreecommitdiff
path: root/addon-sdk/source/test/test-ui-sidebar.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-09 06:46:43 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-09 06:46:43 -0500
commitac46df8daea09899ce30dc8fd70986e258c746bf (patch)
tree2750d3125fc253fd5b0671e4bd268eff1fd97296 /addon-sdk/source/test/test-ui-sidebar.js
parent8cecf8d5208f3945b35f879bba3015bb1a11bec6 (diff)
downloaduxp-ac46df8daea09899ce30dc8fd70986e258c746bf.tar.gz
Move Add-on SDK source to toolkit/jetpack
Diffstat (limited to 'addon-sdk/source/test/test-ui-sidebar.js')
-rw-r--r--addon-sdk/source/test/test-ui-sidebar.js1579
1 files changed, 0 insertions, 1579 deletions
diff --git a/addon-sdk/source/test/test-ui-sidebar.js b/addon-sdk/source/test/test-ui-sidebar.js
deleted file mode 100644
index 916a43e0b0..0000000000
--- a/addon-sdk/source/test/test-ui-sidebar.js
+++ /dev/null
@@ -1,1579 +0,0 @@
-/* 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';
-
-module.metadata = {
- 'engines': {
- 'Firefox': '*'
- }
-};
-
-const { Cu } = require('chrome');
-const { Loader } = require('sdk/test/loader');
-const { show, hide } = require('sdk/ui/sidebar/actions');
-const { isShowing } = require('sdk/ui/sidebar/utils');
-const { getMostRecentBrowserWindow, isFocused } = require('sdk/window/utils');
-const { open, close, focus, promise: windowPromise } = require('sdk/window/helpers');
-const { setTimeout, setImmediate } = require('sdk/timers');
-const { isPrivate } = require('sdk/private-browsing');
-const data = require('./fixtures');
-const { URL } = require('sdk/url');
-const { once, off, emit } = require('sdk/event/core');
-const { defer, all } = require('sdk/core/promise');
-const { modelFor } = require('sdk/model/core');
-const { cleanUI } = require("sdk/test/utils");
-const { before, after } = require('sdk/test/utils');
-
-require('sdk/windows');
-
-const { BUILTIN_SIDEBAR_MENUITEMS, isSidebarShowing,
- getSidebarMenuitems, getExtraSidebarMenuitems, makeID, simulateCommand,
- simulateClick, isChecked } = require('./sidebar/utils');
-
-exports.testSidebarBasicLifeCycle = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testSidebarBasicLifeCycle';
- let window = getMostRecentBrowserWindow();
- assert.ok(!window.document.getElementById(makeID(testName)), 'sidebar id DNE');
- let sidebarXUL = window.document.getElementById('sidebar');
- assert.ok(sidebarXUL, 'sidebar xul element does exist');
- assert.ok(!getExtraSidebarMenuitems().length, 'there are no extra sidebar menuitems');
-
- assert.equal(isSidebarShowing(window), false, 'sidebar is not showing 1');
- let sidebarDetails = {
- id: testName,
- title: 'test',
- url: 'data:text/html;charset=utf-8,'+testName
- };
- let sidebar = Sidebar(sidebarDetails);
-
- // test the sidebar attributes
- for (let key of Object.keys(sidebarDetails)) {
- assert.equal(sidebarDetails[key], sidebar[key], 'the attributes match the input');
- }
-
- assert.pass('The Sidebar constructor worked');
-
- let extraMenuitems = getExtraSidebarMenuitems();
- assert.equal(extraMenuitems.length, 1, 'there is one extra sidebar menuitems');
-
- let ele = window.document.getElementById(makeID(testName));
- assert.equal(ele, extraMenuitems[0], 'the only extra menuitem is the one for our sidebar.')
- assert.ok(ele, 'sidebar element was added');
- assert.ok(!isChecked(ele), 'the sidebar is not displayed');
- assert.equal(ele.getAttribute('label'), sidebar.title, 'the sidebar title is the menuitem label')
-
- assert.equal(isSidebarShowing(window), false, 'sidebar is not showing 2');
-
- // explicit test of the on hide event
- yield new Promise(resolve => {
- sidebar.on('show', resolve);
- sidebar.show();
- assert.pass('showing sidebar..');
- });
-
- assert.pass('the show event was fired');
- assert.equal(isSidebarShowing(window), true, 'sidebar is not showing 3');
- assert.equal(isShowing(sidebar), true, 'the sidebar is showing');
- assert.ok(isChecked(ele), 'the sidebar is displayed');
-
- // explicit test of the on show event
- yield new Promise(resolve => {
- sidebar.on('hide', () => {
- sidebar.once('detach', resolve);
-
- assert.pass('the hide event was fired');
- assert.ok(!isChecked(ele), 'the sidebar menuitem is not checked');
- assert.equal(isShowing(sidebar), false, 'the sidebar is not showing');
- assert.equal(isSidebarShowing(window), false, 'the sidebar elemnt is hidden');
- });
- sidebar.hide();
- assert.pass('hiding sidebar..');
- });
-
- // calling destroy twice should not matter
- sidebar.destroy();
- sidebar.destroy();
-
- for (let mi of getSidebarMenuitems()) {
- let id = mi.getAttribute('id');
-
- if (BUILTIN_SIDEBAR_MENUITEMS.indexOf(id) < 0) {
- assert.fail('the menuitem "' + id + '" is not a built-in sidebar');
- }
- assert.ok(!isChecked(mi), 'no sidebar menuitem is checked');
- }
-
- assert.ok(!window.document.getElementById(makeID(testName)), 'sidebar id DNE');
- assert.pass('calling destroy worked without error');
-}
-
-exports.testSideBarIsInNewWindows = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testSideBarIsInNewWindows';
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName
- });
-
- let startWindow = getMostRecentBrowserWindow();
- let ele = startWindow.document.getElementById(makeID(testName));
- assert.ok(ele, 'sidebar element was added');
-
- let window = yield open();
-
- ele = window.document.getElementById(makeID(testName));
- assert.ok(ele, 'sidebar element was added');
-
- // calling destroy twice should not matter
- sidebar.destroy();
- sidebar.destroy();
-
- assert.ok(!window.document.getElementById(makeID(testName)), 'sidebar id DNE');
- assert.ok(!startWindow.document.getElementById(makeID(testName)), 'sidebar id DNE');
-}
-
-exports.testSideBarIsShowingInNewWindows = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testSideBarIsShowingInNewWindows';
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: URL('data:text/html;charset=utf-8,'+testName)
- });
-
- let startWindow = getMostRecentBrowserWindow();
- let ele = startWindow.document.getElementById(makeID(testName));
- assert.ok(ele, 'sidebar element was added');
-
- let oldEle = ele;
-
- yield new Promise(resolve => {
- sidebar.once('attach', function() {
- assert.pass('attach event fired');
-
- sidebar.once('show', function() {
- assert.pass('show event fired');
- resolve();
- })
- });
- sidebar.show();
- });
-
- yield new Promise(resolve => {
- sidebar.once('show', resolve);
- startWindow.OpenBrowserWindow();
- });
-
- let window = getMostRecentBrowserWindow();
- assert.notEqual(startWindow, window, 'window is new');
-
- let sb = window.document.getElementById('sidebar');
- yield new Promise(resolve => {
- if (sb && sb.docShell && sb.contentDocument && sb.contentDocument.getElementById('web-panels-browser')) {
- end();
- }
- else {
- sb.addEventListener('DOMWindowCreated', end, false);
- }
- function end () {
- sb.removeEventListener('DOMWindowCreated', end, false);
- resolve();
- }
- })
-
- ele = window.document.getElementById(makeID(testName));
- assert.ok(ele, 'sidebar element was added 2');
- assert.ok(isChecked(ele), 'the sidebar is checked');
- assert.notEqual(ele, oldEle, 'there are two different sidebars');
-
- assert.equal(isShowing(sidebar), true, 'the sidebar is showing in new window');
-
- sidebar.destroy();
-
- assert.equal(isShowing(sidebar), false, 'the sidebar is not showing');
- assert.ok(!isSidebarShowing(window), 'sidebar in most recent window is not showing');
- assert.ok(!isSidebarShowing(startWindow), 'sidebar in most start window is not showing');
- assert.ok(!window.document.getElementById(makeID(testName)), 'sidebar id DNE');
- assert.ok(!startWindow.document.getElementById(makeID(testName)), 'sidebar id DNE');
-}
-
-// TODO: determine if this is acceptable..
-/*
-exports.testAddonGlobalSimple = function(assert, done) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testAddonGlobalSimple';
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: data.url('test-sidebar-addon-global.html')
- });
-
- sidebar.on('show', function({worker}) {
- assert.pass('sidebar was attached');
- assert.ok(!!worker, 'attach event has worker');
-
- worker.port.on('X', function(msg) {
- assert.equal(msg, '23', 'the final message is correct');
-
- sidebar.destroy();
-
- done();
- });
- worker.port.emit('X', '2');
- });
- show(sidebar);
-}
-*/
-
-exports.testAddonGlobalComplex = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testAddonGlobalComplex';
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: data.url('test-sidebar-addon-global.html')
- });
-
- let worker = yield new Promise(resolve => {
- sidebar.on('attach', resolve);
- show(sidebar);
- });
-
- assert.pass('sidebar was attached');
- assert.ok(!!worker, 'attach event has worker');
-
-
- let msg = yield new Promise(resolve => {
- worker.port.once('Y', resolve);
- });
-
- assert.equal(msg, '1', 'got event from worker');
-
- msg = yield new Promise(resolve => {
- worker.port.on('X', resolve);
- worker.port.emit('X', msg + '2');
- });
-
- assert.equal(msg, '123', 'the final message is correct');
-
- sidebar.destroy();
-}
-
-exports.testAddonReady = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testAddonReady';
- let ready = defer();
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: data.url('test-sidebar-addon-global.html'),
- onReady: ready.resolve
- });
- show(sidebar);
-
- let worker = yield ready.promise;
- assert.pass('sidebar was attached');
- assert.ok(!!worker, 'attach event has worker');
-
- let msg = yield new Promise(resolve => {
- worker.port.on('X', resolve);
- worker.port.emit('X', '12');
- });
- assert.equal(msg, '123', 'the final message is correct');
-
- sidebar.destroy();
-}
-
-exports.testShowingOneSidebarAfterAnother = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testShowingOneSidebarAfterAnother';
-
- let sidebar1 = Sidebar({
- id: testName + '1',
- title: testName + '1',
- url: 'data:text/html;charset=utf-8,'+ testName + 1
- });
- let sidebar2 = Sidebar({
- id: testName + '2',
- title: testName + '2',
- url: 'data:text/html;charset=utf-8,'+ testName + 2
- });
-
- let window = getMostRecentBrowserWindow();
- let IDs = [ sidebar1.id, sidebar2.id ];
-
- let extraMenuitems = getExtraSidebarMenuitems(window);
- assert.equal(extraMenuitems.length, 2, 'there are two extra sidebar menuitems');
-
- function testShowing(sb1, sb2, sbEle) {
- assert.equal(isShowing(sidebar1), sb1);
- assert.equal(isShowing(sidebar2), sb2);
- assert.equal(isSidebarShowing(window), sbEle);
- }
- testShowing(false, false, false);
-
- yield show(sidebar1);
- assert.pass('showed sidebar1');
-
- testShowing(true, false, true);
-
- for (let mi of getExtraSidebarMenuitems(window)) {
- let menuitemID = mi.getAttribute('id').replace(/^jetpack-sidebar-/, '');
- assert.ok(IDs.indexOf(menuitemID) >= 0, 'the extra menuitem is for one of our test sidebars');
- assert.equal(isChecked(mi), menuitemID == sidebar1.id, 'the test sidebar menuitem has the correct checked value');
- }
-
- yield show(sidebar2);
- assert.pass('showed sidebar2');
-
- testShowing(false, true, true);
-
- for (let mi of getExtraSidebarMenuitems(window)) {
- let menuitemID = mi.getAttribute('id').replace(/^jetpack-sidebar-/, '');
- assert.ok(IDs.indexOf(menuitemID) >= 0, 'the extra menuitem is for one of our test sidebars');
- assert.equal(isChecked(mi), menuitemID == sidebar2.id, 'the test sidebar menuitem has the correct checked value');
- }
-
- sidebar1.destroy();
- sidebar2.destroy();
-
- testShowing(false, false, false);
-}
-
-exports.testSidebarUnload = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testSidebarUnload';
- let loader = Loader(module);
-
- let window = getMostRecentBrowserWindow();
-
- assert.equal(isPrivate(window), false, 'the current window is not private');
-
- let sidebar = loader.require('sdk/ui/sidebar').Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+ testName
- });
-
- yield sidebar.show();
- assert.pass('showing the sidebar');
-
- loader.unload();
-
- for (let mi of getSidebarMenuitems()) {
- assert.ok(BUILTIN_SIDEBAR_MENUITEMS.indexOf(mi.getAttribute('id')) >= 0, 'the menuitem is for a built-in sidebar')
- assert.ok(!isChecked(mi), 'no sidebar menuitem is checked');
- }
-
- assert.ok(!window.document.getElementById(makeID(testName)), 'sidebar id DNE');
- assert.equal(isSidebarShowing(window), false, 'the sidebar is not showing');
-}
-
-exports.testRelativeURL = function*(assert) {
- const { merge } = require('sdk/util/object');
- const self = require('sdk/self');
-
- let loader = Loader(module, null, null, {
- modules: {
- 'sdk/self': merge({}, self, {
- data: merge({}, self.data, require('./fixtures'))
- })
- }
- });
-
- const { Sidebar } = loader.require('sdk/ui/sidebar');
-
- let testName = 'testRelativeURL';
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: './test-sidebar-addon-global.html'
- });
-
- yield new Promise(resolve => {
- sidebar.on('attach', function(worker) {
- assert.pass('sidebar was attached');
- assert.ok(!!worker, 'attach event has worker');
-
- worker.port.once('Y', function(msg) {
- assert.equal(msg, '1', 'got event from worker');
-
- worker.port.on('X', function(msg) {
- assert.equal(msg, '123', 'the final message is correct');
- resolve();
- });
- worker.port.emit('X', msg + '2');
- })
- });
- sidebar.show();
- });
-
- sidebar.destroy();
-}
-
-exports.testRemoteContent = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testRemoteContent';
- try {
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'http://dne.xyz.mozilla.org'
- });
- assert.fail('a bad sidebar was created..');
- sidebar.destroy();
- }
- catch(e) {
- assert.ok(/The option "url" must be a valid local URI\./.test(e), 'remote content is not acceptable');
- }
-}
-
-exports.testInvalidURL = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testInvalidURL';
- try {
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'http:mozilla.org'
- });
- assert.fail('a bad sidebar was created..');
- sidebar.destroy();
- }
- catch(e) {
- assert.ok(/The option "url" must be a valid local URI\./.test(e), 'invalid URIs are not acceptable');
- }
-}
-
-exports.testInvalidURLType = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testInvalidURLType';
- try {
- let sidebar = Sidebar({
- id: testName,
- title: testName
- });
- assert.fail('a bad sidebar was created..');
- sidebar.destroy();
- }
- catch(e) {
- assert.ok(/The option "url" must be a valid local URI\./.test(e), 'invalid URIs are not acceptable');
- }
-}
-
-exports.testInvalidTitle = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testInvalidTitle';
- try {
- let sidebar = Sidebar({
- id: testName,
- title: '',
- url: 'data:text/html;charset=utf-8,'+testName
- });
- assert.fail('a bad sidebar was created..');
- sidebar.destroy();
- }
- catch(e) {
- assert.equal('The option "title" must be one of the following types: string', e.message, 'invalid titles are not acceptable');
- }
-}
-
-exports.testInvalidID = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testInvalidID';
- try {
- let sidebar = Sidebar({
- id: '!',
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName
- });
- assert.fail('a bad sidebar was created..');
- sidebar.destroy();
- }
- catch(e) {
- assert.ok(/The option "id" must be a valid alphanumeric id/.test(e), 'invalid ids are not acceptable');
- }
-}
-
-exports.testInvalidBlankID = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testInvalidBlankID';
- try {
- let sidebar = Sidebar({
- id: '',
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName
- });
- assert.fail('a bad sidebar was created..');
- sidebar.destroy();
- }
- catch(e) {
- assert.ok(/The option "id" must be a valid alphanumeric id/.test(e), 'invalid ids are not acceptable');
- }
-}
-
-exports.testInvalidNullID = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testInvalidNullID';
- try {
- let sidebar = Sidebar({
- id: null,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName
- });
- assert.fail('a bad sidebar was created..');
- sidebar.destroy();
- }
- catch(e) {
- assert.ok(/The option "id" must be a valid alphanumeric id/.test(e), 'invalid ids are not acceptable');
- }
-}
-
-exports.testUndefinedID = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testInvalidUndefinedID';
-
- try {
- let sidebar = Sidebar({
- title: testName,
- url: 'data:text/html;charset=utf-8,' + testName
- });
-
- assert.ok(sidebar.id, 'an undefined id was accepted, id was creawted: ' + sidebar.id);
- assert.ok(getMostRecentBrowserWindow().document.getElementById(makeID(sidebar.id)), 'the sidebar element was found');
-
- sidebar.destroy();
- }
- catch(e) {
- assert.fail('undefined ids are acceptable');
- assert.fail(e.message);
- }
-}
-
-// TEST: edge case where web panel is destroyed while loading
-exports.testDestroyEdgeCaseBug = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testDestroyEdgeCaseBug';
- let window = getMostRecentBrowserWindow();
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName
- });
-
- // NOTE: purposely not listening to show event b/c the event happens
- // between now and then.
- sidebar.show();
-
- assert.equal(isPrivate(window), false, 'the new window is not private');
- assert.equal(isSidebarShowing(window), true, 'the sidebar is showing');
-
- //assert.equal(isShowing(sidebar), true, 'the sidebar is showing');
-
- let window2 = yield open().then(focus);
-
- assert.equal(isPrivate(window2), false, 'the new window is not private');
- assert.equal(isSidebarShowing(window2), false, 'the sidebar is not showing');
- assert.equal(isShowing(sidebar), false, 'the sidebar is not showing');
-
- sidebar.destroy();
- assert.pass('destroying the sidebar');
-
- yield close(window2);
-
- let loader = Loader(module);
-
- assert.equal(isPrivate(window), false, 'the current window is not private');
-
- sidebar = loader.require('sdk/ui/sidebar').Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+ testName,
- onShow: function() {
- }
- })
-
- assert.pass('showing the sidebar');
- yield sidebar.show();
- loader.unload();
-
- for (let mi of getSidebarMenuitems()) {
- let id = mi.getAttribute('id');
-
- if (BUILTIN_SIDEBAR_MENUITEMS.indexOf(id) < 0) {
- assert.fail('the menuitem "' + id + '" is not a built-in sidebar');
- }
- assert.ok(!isChecked(mi), 'no sidebar menuitem is checked');
- }
- assert.ok(!window.document.getElementById(makeID(testName)), 'sidebar id DNE');
- assert.equal(isSidebarShowing(window), false, 'the sidebar is not showing');
-}
-
-exports.testClickingACheckedMenuitem = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- const testName = 'testClickingACheckedMenuitem';
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName,
- });
- assert.pass('sidebar was created');
-
- let window = yield open().then(focus);
- yield sidebar.show();
- assert.pass('the show callback works');
-
- let waitForHide = defer();
- sidebar.once('hide', waitForHide.resolve);
- let menuitem = window.document.getElementById(makeID(sidebar.id));
- simulateCommand(menuitem);
-
- yield waitForHide.promise;
-
- assert.pass('clicking the menuitem after the sidebar has shown hides it.');
- sidebar.destroy();
-};
-
-exports.testTitleSetter = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testTitleSetter';
- let { document } = getMostRecentBrowserWindow();
-
- let sidebar1 = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName,
- });
-
- assert.equal(sidebar1.title, testName, 'title getter works');
-
- yield sidebar1.show();
- assert.equal(document.getElementById(makeID(sidebar1.id)).getAttribute('label'),
- testName,
- 'the menuitem label is correct');
-
- assert.equal(document.getElementById('sidebar-title').value, testName, 'the menuitem label is correct');
-
- sidebar1.title = 'foo';
-
- assert.equal(sidebar1.title, 'foo', 'title getter works');
-
- assert.equal(document.getElementById(makeID(sidebar1.id)).getAttribute('label'),
- 'foo',
- 'the menuitem label was updated');
-
- assert.equal(document.getElementById('sidebar-title').value, 'foo', 'the sidebar title was updated');
-
- sidebar1.destroy();
-}
-
-exports.testURLSetter = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testURLSetter';
- let window = getMostRecentBrowserWindow();
- let { document } = window;
- let url = 'data:text/html;charset=utf-8,'+testName;
-
- let sidebar1 = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- assert.equal(sidebar1.url, url, 'url getter works');
- assert.equal(isShowing(sidebar1), false, 'the sidebar is not showing');
- assert.ok(!isChecked(document.getElementById(makeID(sidebar1.id))),
- 'the menuitem is not checked');
- assert.equal(isSidebarShowing(window), false, 'the new window sidebar is not showing');
-
- window = yield windowPromise(window.OpenBrowserWindow(), 'load');
- document = window.document;
- assert.pass('new window was opened');
-
- yield sidebar1.show();
-
- assert.equal(isShowing(sidebar1), true, 'the sidebar is showing');
- assert.ok(isChecked(document.getElementById(makeID(sidebar1.id))),
- 'the menuitem is checked');
- assert.ok(isSidebarShowing(window), 'the new window sidebar is showing');
-
- yield new Promise(resolve => {
- sidebar1.once('show', resolve);
- sidebar1.url = (url + '1');
- assert.equal(sidebar1.url, (url + '1'), 'url getter works');
- assert.equal(isShowing(sidebar1), true, 'the sidebar is showing');
- assert.ok(isSidebarShowing(window), 'the new window sidebar is showing');
- });
-
- assert.pass('setting the sidebar.url causes a show event');
-
- assert.equal(isShowing(sidebar1), true, 'the sidebar is showing');
- assert.equal(isSidebarShowing(window), true, 'the new window sidebar is still showing');
-
- assert.ok(isChecked(document.getElementById(makeID(sidebar1.id))),
- 'the menuitem is still checked');
-
- sidebar1.destroy();
- assert.equal(isSidebarShowing(window), false, 'the new window sidebar is not showing');
-}
-
-exports.testDuplicateID = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testDuplicateID';
- let window = getMostRecentBrowserWindow();
- let { document } = window;
- let url = 'data:text/html;charset=utf-8,'+testName;
-
- let sidebar1 = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- assert.throws(function() {
- Sidebar({
- id: testName,
- title: testName + 1,
- url: url + 2
- }).destroy();
- }, /The ID .+ seems already used\./i, 'duplicate IDs will throw errors');
-
- sidebar1.destroy();
-}
-
-exports.testURLSetterToSameValueReloadsSidebar = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testURLSetterToSameValueReloadsSidebar';
- let window = getMostRecentBrowserWindow();
- let { document } = window;
- let url = 'data:text/html;charset=utf-8,'+testName;
-
- let sidebar1 = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- assert.equal(sidebar1.url, url, 'url getter works');
- assert.equal(isShowing(sidebar1), false, 'the sidebar is not showing');
- assert.ok(!isChecked(document.getElementById(makeID(sidebar1.id))),
- 'the menuitem is not checked');
- assert.equal(isSidebarShowing(window), false, 'the new window sidebar is not showing');
-
- window = yield windowPromise(window.OpenBrowserWindow(), 'load');
- document = window.document;
- assert.pass('new window was opened');
-
- yield focus(window);
- assert.pass('new window was focused');
-
- yield sidebar1.show();
-
- assert.equal(isShowing(sidebar1), true, 'the sidebar is showing');
- assert.ok(isChecked(document.getElementById(makeID(sidebar1.id))),
- 'the menuitem is checked');
- assert.ok(isSidebarShowing(window), 'the new window sidebar is showing');
-
- let shown = defer();
- sidebar1.once('show', shown.resolve);
- sidebar1.url = url;
-
- assert.equal(sidebar1.url, url, 'url getter works');
- assert.equal(isShowing(sidebar1), true, 'the sidebar is showing');
- assert.ok(isSidebarShowing(window), 'the new window sidebar is showing');
-
- yield shown.promise;
-
- assert.pass('setting the sidebar.url causes a show event');
-
- assert.equal(isShowing(sidebar1), true, 'the sidebar is showing');
- assert.ok(isSidebarShowing(window), 'the new window sidebar is still showing');
-
- assert.ok(isChecked(document.getElementById(makeID(sidebar1.id))),
- 'the menuitem is still checked');
-
- sidebar1.destroy();
-}
-
-exports.testShowingInOneWindowDoesNotAffectOtherWindows = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testShowingInOneWindowDoesNotAffectOtherWindows';
- let window1 = getMostRecentBrowserWindow();
- let url = 'data:text/html;charset=utf-8,'+testName;
-
- let sidebar1 = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- assert.equal(sidebar1.url, url, 'url getter works');
- assert.equal(isShowing(sidebar1), false, 'the sidebar is not showing');
- let checkCount = 1;
- function checkSidebarShowing(window, expected) {
- assert.pass('check count ' + checkCount++);
-
- let mi = window.document.getElementById(makeID(sidebar1.id));
- if (mi) {
- assert.equal(isChecked(mi), expected,
- 'the menuitem is not checked');
- }
- assert.equal(isSidebarShowing(window), expected || false, 'the new window sidebar is not showing');
- }
- checkSidebarShowing(window1, false);
-
- let window = yield windowPromise(window1.OpenBrowserWindow(), 'load');
- let { document } = window;
- assert.pass('new window was opened!');
-
- // waiting for show
- yield sidebar1.show();
-
- // check state of the new window
- assert.equal(isShowing(sidebar1), true, 'the sidebar is showing');
- checkSidebarShowing(window, true);
-
- // check state of old window
- checkSidebarShowing(window1, false);
-
- yield sidebar1.show();
-
- // check state of the new window
- assert.equal(isShowing(sidebar1), true, 'the sidebar is showing');
- checkSidebarShowing(window, true);
-
- // check state of old window
- checkSidebarShowing(window1, false);
-
- // calling destroy() twice should not matter
- sidebar1.destroy();
- sidebar1.destroy();
-
- // check state of the new window
- assert.equal(isShowing(sidebar1), false, 'the sidebar is not showing');
- checkSidebarShowing(window, undefined);
-
- // check state of old window
- checkSidebarShowing(window1, undefined);
-}
-
-exports.testHidingAHiddenSidebarRejects = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testHidingAHiddenSidebarRejects';
- let url = 'data:text/html;charset=utf-8,'+testName;
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- yield sidebar.hide().then(assert.fail, assert.pass);
-
- sidebar.destroy();
-}
-
-exports.testGCdSidebarsOnUnload = function*(assert) {
- const loader = Loader(module);
- const { Sidebar } = loader.require('sdk/ui/sidebar');
- const window = getMostRecentBrowserWindow();
-
- let testName = 'testGCdSidebarsOnUnload';
- let url = 'data:text/html;charset=utf-8,'+testName;
-
- assert.equal(isSidebarShowing(window), false, 'the sidebar is not showing');
-
- // IMPORTANT: make no reference to the sidebar instance, so it is GC'd
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- yield sidebar.show();
- sidebar = null;
-
- assert.equal(isSidebarShowing(window), true, 'the sidebar is showing');
-
- let menuitemID = makeID(testName);
-
- assert.ok(window.document.getElementById(menuitemID), 'the menuitem was found');
-
- yield new Promise(resolve => Cu.schedulePreciseGC(resolve));
-
- loader.unload();
-
- assert.equal(isSidebarShowing(window), false, 'the sidebar is not showing after unload');
- assert.ok(!window.document.getElementById(menuitemID), 'the menuitem was removed');
-}
-
-exports.testGCdShowingSidebarsOnUnload = function*(assert) {
- const loader = Loader(module);
- const { Sidebar } = loader.require('sdk/ui/sidebar');
- const window = getMostRecentBrowserWindow();
-
- let testName = 'testGCdShowingSidebarsOnUnload';
- let url = 'data:text/html;charset=utf-8,'+testName;
-
- assert.equal(isSidebarShowing(window), false, 'the sidebar is not showing');
-
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- yield sidebar.show();
-
- sidebar = null;
-
- assert.equal(isSidebarShowing(window), true, 'the sidebar is showing');
-
- let menuitemID = makeID(testName);
-
- assert.ok(!!window.document.getElementById(menuitemID), 'the menuitem was found');
-
- yield new Promise(resolve => Cu.schedulePreciseGC(resolve));
-
- assert.equal(isSidebarShowing(window), true, 'the sidebar is still showing after gc');
- assert.ok(!!window.document.getElementById(menuitemID), 'the menuitem was found after gc');
-
- loader.unload();
-
- assert.equal(isSidebarShowing(window), false, 'the sidebar is not showing after unload');
- assert.ok(!window.document.getElementById(menuitemID), 'the menuitem was removed');
-}
-
-exports.testDetachEventOnWindowClose = function*(assert) {
- const loader = Loader(module);
- const { Sidebar } = loader.require('sdk/ui/sidebar');
- let window = getMostRecentBrowserWindow();
-
- let testName = 'testDetachEventOnWindowClose';
- let url = 'data:text/html;charset=utf-8,' + testName;
-
- window = yield windowPromise(window.OpenBrowserWindow(), 'load').then(focus);
-
- yield new Promise(resolve => {
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url,
- onAttach: function() {
- assert.pass('the attach event is fired');
- window.close();
- },
- onDetach: resolve
- });
-
- sidebar.show();
- });
-
- assert.pass('the detach event is fired when the window showing it closes');
- loader.unload();
-}
-
-exports.testHideEventOnWindowClose = function*(assert) {
- const loader = Loader(module);
- const { Sidebar } = loader.require('sdk/ui/sidebar');
- let window = getMostRecentBrowserWindow();
-
- let testName = 'testDetachEventOnWindowClose';
- let url = 'data:text/html;charset=utf-8,' + testName;
-
-
- window = yield windowPromise(window.OpenBrowserWindow(), 'load').then(focus);
- yield new Promise(resolve => {
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url,
- onAttach: function() {
- assert.pass('the attach event is fired');
- window.close();
- },
- onHide: resolve
- });
-
- sidebar.show();
- });
-
- assert.pass('the hide event is fired when the window showing it closes');
- loader.unload();
-}
-
-exports.testGCdHiddenSidebarsOnUnload = function*(assert) {
- const loader = Loader(module);
- const { Sidebar } = loader.require('sdk/ui/sidebar');
- const window = getMostRecentBrowserWindow();
-
- let testName = 'testGCdHiddenSidebarsOnUnload';
- let url = 'data:text/html;charset=utf-8,'+testName;
-
- assert.equal(isSidebarShowing(window), false, 'the sidebar is not showing');
-
- // IMPORTANT: make no reference to the sidebar instance, so it is GC'd
- Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- let menuitemID = makeID(testName);
-
- assert.ok(!!window.document.getElementById(menuitemID), 'the menuitem was found');
-
- yield new Promise(resolve => Cu.schedulePreciseGC(resolve));
-
- assert.ok(!!window.document.getElementById(menuitemID), 'the menuitem was found after gc');
-
- loader.unload();
-
- assert.ok(!window.document.getElementById(menuitemID), 'the menuitem was removed');
-}
-
-exports.testSidebarGettersAndSettersAfterDestroy = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testSidebarGettersAndSettersAfterDestroy';
- let url = 'data:text/html;charset=utf-8,'+testName;
-
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- sidebar.destroy();
-
- assert.equal(sidebar.id, undefined, 'sidebar after destroy has no id');
-
- assert.throws(() => sidebar.id = 'foo-tang',
- /^setting a property that has only a getter/,
- 'id cannot be set at runtime');
-
- assert.equal(sidebar.id, undefined, 'sidebar after destroy has no id');
-
- assert.equal(sidebar.title, undefined, 'sidebar after destroy has no title');
- sidebar.title = 'boo-tang';
- assert.equal(sidebar.title, undefined, 'sidebar after destroy has no title');
-
- assert.equal(sidebar.url, undefined, 'sidebar after destroy has no url');
- sidebar.url = url + 'barz';
- assert.equal(sidebar.url, undefined, 'sidebar after destroy has no url');
-}
-
-
-exports.testSidebarLeakCheckDestroyAfterAttach = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testSidebarLeakCheckDestroyAfterAttach';
- let window = getMostRecentBrowserWindow();
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName
- });
-
- yield new Promise(resolve => {
- sidebar.on('attach', resolve);
- assert.pass('showing the sidebar');
- sidebar.show();
- })
-
- assert.pass('the sidebar was shown');
-
- sidebar.on('show', () => {
- assert.fail('the sidebar show listener should have been removed');
- });
- assert.pass('added a sidebar show listener');
-
- sidebar.on('hide', () => {
- assert.fail('the sidebar hide listener should have been removed');
- });
- assert.pass('added a sidebar hide listener');
-
- yield new Promise(resolve => {
- let panelBrowser = window.document.getElementById('sidebar').contentDocument.getElementById('web-panels-browser');
- panelBrowser.contentWindow.addEventListener('unload', function onUnload() {
- panelBrowser.contentWindow.removeEventListener('unload', onUnload, false);
- resolve();
- }, false);
- sidebar.destroy();
- });
-
- assert.pass('the sidebar web panel was unloaded properly');
-}
-
-exports.testSidebarLeakCheckUnloadAfterAttach = function*(assert) {
- const loader = Loader(module);
- const { Sidebar } = loader.require('sdk/ui/sidebar');
- let testName = 'testSidebarLeakCheckUnloadAfterAttach';
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName
- });
-
- let window = yield open().then(focus);
-
- yield new Promise(resolve => {
- sidebar.on('attach', resolve);
- assert.pass('showing the sidebar');
- sidebar.show();
- });
-
- assert.pass('the sidebar was shown');
-
- sidebar.on('show', function() {
- assert.fail('the sidebar show listener should have been removed');
- });
- assert.pass('added a sidebar show listener');
-
- sidebar.on('hide', function() {
- assert.fail('the sidebar hide listener should have been removed');
- });
- assert.pass('added a sidebar hide listener');
-
- let panelBrowser = window.document.getElementById('sidebar').contentDocument.getElementById('web-panels-browser');
- yield new Promise(resolve => {
- panelBrowser.contentWindow.addEventListener('unload', function onUnload() {
- panelBrowser.contentWindow.removeEventListener('unload', onUnload, false);
- resolve();
- }, false);
- loader.unload();
- });
-
- assert.pass('the sidebar web panel was unloaded properly');
-}
-
-exports.testTwoSidebarsWithSameTitleAndURL = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testTwoSidebarsWithSameTitleAndURL';
-
- let title = testName;
- let url = 'data:text/html;charset=utf-8,' + testName;
-
- let sidebar1 = Sidebar({
- id: testName + 1,
- title: title,
- url: url
- });
-
- assert.throws(function() {
- Sidebar({
- id: testName + 2,
- title: title,
- url: url
- }).destroy();
- }, /title.+url.+invalid/i, 'Creating two sidebars with the same title + url is not allowed');
-
- let sidebar2 = Sidebar({
- id: testName + 2,
- title: title,
- url: 'data:text/html;charset=utf-8,X'
- });
-
- assert.throws(function() {
- sidebar2.url = url;
- }, /title.+url.+invalid/i, 'Creating two sidebars with the same title + url is not allowed');
-
- sidebar2.title = 'foo';
- sidebar2.url = url;
-
- assert.throws(function() {
- sidebar2.title = title;
- }, /title.+url.+invalid/i, 'Creating two sidebars with the same title + url is not allowed');
-
- sidebar1.destroy();
- sidebar2.destroy();
-}
-
-exports.testChangingURLBackToOriginalValue = function(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testChangingURLBackToOriginalValue';
-
- let title = testName;
- let url = 'data:text/html;charset=utf-8,' + testName;
- let count = 0;
-
- let sidebar = Sidebar({
- id: testName,
- title: title,
- url: url
- });
-
- sidebar.url = url + 2;
- assert.equal(sidebar.url, url + 2, 'the sidebar.url is correct');
- sidebar.url = url;
- assert.equal(sidebar.url, url, 'the sidebar.url is correct');
-
- sidebar.title = 'foo';
- assert.equal(sidebar.title, 'foo', 'the sidebar.title is correct');
- sidebar.title = title;
- assert.equal(sidebar.title, title, 'the sidebar.title is correct');
-
- sidebar.destroy();
-
- assert.pass('Changing values back to originals works');
-}
-
-exports.testShowToOpenXToClose = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testShowToOpenXToClose';
-
- let title = testName;
- let url = 'data:text/html;charset=utf-8,' + testName;
- let window = getMostRecentBrowserWindow();
- let shown = defer();
- let hidden = defer();
-
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url,
- onShow: shown.resolve,
- onHide: hidden.resolve
- });
-
- let menuitem = window.document.getElementById(makeID(sidebar.id));
-
- assert.ok(!isChecked(menuitem), 'menuitem is not checked');
-
- sidebar.show();
-
- yield shown.promise;
-
- assert.ok(isChecked(menuitem), 'menuitem is checked');
-
- let closeButton = window.document.querySelector('#sidebar-header > toolbarbutton.close-icon');
- simulateCommand(closeButton);
-
- yield hidden.promise;
-
- assert.ok(!isChecked(menuitem), 'menuitem is not checked');
-
- sidebar.destroy();
-}
-
-exports.testShowToOpenMenuitemToClose = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testShowToOpenMenuitemToClose';
-
- let title = testName;
- let url = 'data:text/html;charset=utf-8,' + testName;
- let window = getMostRecentBrowserWindow();
-
- let hidden = defer();
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url,
- onHide: hidden.resolve
- });
-
- let menuitem = window.document.getElementById(makeID(sidebar.id));
-
- assert.ok(!isChecked(menuitem), 'menuitem is not checked');
-
- yield sidebar.show();
-
- assert.ok(isChecked(menuitem), 'menuitem is checked');
-
- simulateCommand(menuitem);
-
- yield hidden.promise;
-
- assert.ok(!isChecked(menuitem), 'menuitem is not checked');
-
- sidebar.destroy();
-}
-
-exports.testDestroyWhileNonBrowserWindowIsOpen = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testDestroyWhileNonBrowserWindowIsOpen';
- let url = 'data:text/html;charset=utf-8,' + testName;
-
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: url
- });
-
- let window = yield open('chrome://browser/content/aboutDialog.xul');
-
- yield sidebar.show();
- assert.equal(isSidebarShowing(getMostRecentBrowserWindow()), true, 'the sidebar is showing');
-
- sidebar.destroy();
- assert.pass('sidebar was destroyed while a non browser window was open');
-
- yield cleanUI();
- assert.equal(isSidebarShowing(getMostRecentBrowserWindow()), false, 'the sidebar is not showing');
-}
-
-exports.testEventListeners = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testWhatThisIsInSidebarEventListeners';
- let eventListenerOrder = [];
-
- let constructorOnShow = defer();
- let constructorOnHide = defer();
- let constructorOnAttach = defer();
- let constructorOnReady = defer();
-
- let onShow = defer();
- let onHide = defer();
- let onAttach = defer();
- let onReady = defer();
-
- let onceShow = defer();
- let onceHide = defer();
- let onceAttach = defer();
- let onceReady = defer();
-
- function testThis() {
- assert(this, sidebar, '`this` is correct');
- }
-
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,' + testName,
- onShow: function() {
- assert.equal(this, sidebar, '`this` is correct in onShow');
- eventListenerOrder.push('onShow');
- constructorOnShow.resolve();
- },
- onAttach: function() {
- assert.equal(this, sidebar, '`this` is correct in onAttach');
- eventListenerOrder.push('onAttach');
- constructorOnAttach.resolve();
- },
- onReady: function() {
- assert.equal(this, sidebar, '`this` is correct in onReady');
- eventListenerOrder.push('onReady');
- constructorOnReady.resolve();
- },
- onHide: function() {
- assert.equal(this, sidebar, '`this` is correct in onHide');
- eventListenerOrder.push('onHide');
- constructorOnHide.resolve();
- }
- });
-
- sidebar.once('show', function() {
- assert.equal(this, sidebar, '`this` is correct in once show');
- eventListenerOrder.push('once show');
- onceShow.resolve();
- });
- sidebar.once('attach', function() {
- assert.equal(this, sidebar, '`this` is correct in once attach');
- eventListenerOrder.push('once attach');
- onceAttach.resolve();
- });
- sidebar.once('ready', function() {
- assert.equal(this, sidebar, '`this` is correct in once ready');
- eventListenerOrder.push('once ready');
- onceReady.resolve();
- });
- sidebar.once('hide', function() {
- assert.equal(this, sidebar, '`this` is correct in once hide');
- eventListenerOrder.push('once hide');
- onceHide.resolve();
- });
-
- sidebar.on('show', function() {
- assert.equal(this, sidebar, '`this` is correct in on show');
- eventListenerOrder.push('on show');
- onShow.resolve();
-
- sidebar.hide();
- });
- sidebar.on('attach', function() {
- assert.equal(this, sidebar, '`this` is correct in on attach');
- eventListenerOrder.push('on attach');
- onAttach.resolve();
- });
- sidebar.on('ready', function() {
- assert.equal(this, sidebar, '`this` is correct in on ready');
- eventListenerOrder.push('on ready');
- onReady.resolve();
- });
- sidebar.on('hide', function() {
- assert.equal(this, sidebar, '`this` is correct in on hide');
- eventListenerOrder.push('on hide');
- onHide.resolve();
- });
-
- sidebar.show();
-
- yield all([constructorOnShow.promise,
- constructorOnAttach.promise,
- constructorOnReady.promise,
- constructorOnHide.promise,
- onceShow.promise,
- onceAttach.promise,
- onceReady.promise,
- onceHide.promise,
- onShow.promise,
- onAttach.promise,
- onReady.promise,
- onHide.promise]);
-
- assert.equal(eventListenerOrder.join(), [
- 'onAttach',
- 'once attach',
- 'on attach',
- 'onReady',
- 'once ready',
- 'on ready',
- 'onShow',
- 'once show',
- 'on show',
- 'onHide',
- 'once hide',
- 'on hide'
- ].join(), 'the event order was correct');
-
- sidebar.destroy();
-}
-
-// For more information see Bug 920780
-exports.testAttachDoesNotEmitWhenShown = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
- let testName = 'testAttachDoesNotEmitWhenShown';
- let count = 0;
-
- let attached = defer();
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,'+testName,
- onAttach: function() {
- if (count > 2) {
- assert.fail('sidebar was attached again..');
- }
- else {
- assert.pass('sidebar was attached ' + count + ' time(s)');
- }
-
- count++;
- attached.resolve();
- }
- });
-
- sidebar.show();
-
- yield attached.promise;
-
- let shownFired = 0;
- let onShow = () => shownFired++;
- sidebar.on('show', onShow);
-
- yield sidebar.show();
- assert.equal(shownFired, 0, 'shown should not be fired again when already showing from after attach');
-
- yield sidebar.hide();
- assert.pass("the sidebar was hidden");
-
- yield sidebar.show();
- assert.equal(shownFired, 1, 'shown was emitted when `show` called after being hidden');
-
- yield sidebar.show();
- assert.equal(shownFired, 1, 'shown was not emitted again if already being shown');
-
- sidebar.off('show', onShow);
- sidebar.destroy();
-}
-
-exports.testShowHideRawWindowArg = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
-
- let testName = 'testShowHideRawWindowArg';
-
- assert.pass("Creating sidebar");
-
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,' + testName
- });
-
- assert.pass("Created sidebar");
-
- let mainWindow = getMostRecentBrowserWindow();
- let newWindow = yield windowPromise(mainWindow.OpenBrowserWindow(), 'load');
- assert.pass("Created the new window");
-
- yield focus(newWindow);
- assert.pass("Focused the new window");
-
- let newWindow2 = yield windowPromise(mainWindow.OpenBrowserWindow(), 'load');
- assert.pass("Created the second new window");
-
- yield focus(newWindow2);
- assert.pass("Focused the second new window");
-
- yield sidebar.show(newWindow);
-
- assert.pass('the sidebar was shown');
- assert.equal(isSidebarShowing(mainWindow), false, 'sidebar is not showing in main window');
- assert.equal(isSidebarShowing(newWindow2), false, 'sidebar is not showing in second window');
- assert.equal(isSidebarShowing(newWindow), true, 'sidebar is showing in new window');
-
- assert.ok(isFocused(newWindow2), 'main window is still focused');
-
- yield sidebar.hide(newWindow);
-
- assert.equal(isFocused(newWindow2), true, 'second window is still focused');
- assert.equal(isSidebarShowing(mainWindow), false, 'sidebar is not showing in main window');
- assert.equal(isSidebarShowing(newWindow2), false, 'sidebar is not showing in second window');
- assert.equal(isSidebarShowing(newWindow), false, 'sidebar is not showing in new window');
-
- sidebar.destroy();
-}
-
-exports.testShowHideSDKWindowArg = function*(assert) {
- const { Sidebar } = require('sdk/ui/sidebar');
-
- let testName = 'testShowHideSDKWindowArg';
- let sidebar = Sidebar({
- id: testName,
- title: testName,
- url: 'data:text/html;charset=utf-8,' + testName
- });
-
- let mainWindow = getMostRecentBrowserWindow();
- let newWindow = yield open().then(focus);
- let newSDKWindow = modelFor(newWindow);
-
- yield focus(mainWindow);
-
- yield sidebar.show(newSDKWindow);
-
- assert.pass('the sidebar was shown');
- assert.ok(!isSidebarShowing(mainWindow), 'sidebar is not showing in main window');
- assert.ok(isSidebarShowing(newWindow), 'sidebar is showing in new window');
-
- assert.ok(isFocused(mainWindow), 'main window is still focused');
-
- yield sidebar.hide(newSDKWindow);
-
- assert.ok(isFocused(mainWindow), 'main window is still focused');
- assert.ok(!isSidebarShowing(mainWindow), 'sidebar is not showing in main window');
- assert.ok(!isSidebarShowing(newWindow), 'sidebar is not showing in new window');
- sidebar.destroy();
-}
-
-before(exports, (name, assert) => {
- assert.equal(isSidebarShowing(), false, 'no sidebar is showing');
-});
-
-after(exports, function*(name, assert) {
- assert.pass("Cleaning new windows and tabs");
- yield cleanUI();
- assert.equal(isSidebarShowing(), false, 'no sidebar is showing');
-});
-
-require('sdk/test').run(exports);