addon-sdk/source/test/addons/private-browsing-supported/test-global-private-browsing.js

branch
TOR_BUG_9701
changeset 10
ac0c01689b40
equal deleted inserted replaced
-1:000000000000 0:3a3e86fcfb06
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 'use strict';
5
6 const windowUtils = require('sdk/deprecated/window-utils');
7 const { isWindowPBSupported, isGlobalPBSupported } = require('sdk/private-browsing/utils');
8 const { getFrames, getWindowTitle, onFocus, isWindowPrivate, windows, isBrowser } = require('sdk/window/utils');
9 const { open, close, focus } = require('sdk/window/helpers');
10 const { isPrivate } = require('sdk/private-browsing');
11 const { Panel } = require('sdk/panel');
12 const { Widget } = require('sdk/widget');
13 const { fromIterator: toArray } = require('sdk/util/array');
14
15 let { Loader } = require('sdk/test/loader');
16 let loader = Loader(module, {
17 console: Object.create(console, {
18 error: {
19 value: function(e) !/DEPRECATED:/.test(e) ? console.error(e) : undefined
20 }
21 })
22 });
23 const pb = loader.require('sdk/private-browsing');
24
25 function makeEmptyBrowserWindow(options) {
26 options = options || {};
27 return open('chrome://browser/content/browser.xul', {
28 features: {
29 chrome: true,
30 private: !!options.private,
31 toolbar: true
32 }
33 });
34 }
35
36 exports.testShowPanelAndWidgetOnPrivateWindow = function(assert, done) {
37 var myPrivateWindow;
38 var finished = false;
39 var privateWindow;
40 var privateWindowClosed = false;
41
42 pb.once('start', function() {
43 assert.pass('private browsing mode started');
44
45 // make a new private window
46 makeEmptyBrowserWindow().then(function(window) {
47 myPrivateWindow = window;
48
49 let wt = windowUtils.WindowTracker({
50 onTrack: function(window) {
51 if (!isBrowser(window) || window !== myPrivateWindow) return;
52
53 assert.ok(isWindowPrivate(window), 'window is private onTrack!');
54 let panel = Panel({
55 onShow: function() {
56 assert.ok(this.isShowing, 'the panel is showing on the private window');
57
58 let count = 0;
59 let widget = Widget({
60 id: "testShowPanelAndWidgetOnPrivateWindow-id",
61 label: "My Hello Widget",
62 content: "Hello!",
63 onAttach: function(mod) {
64 count++;
65 if (count == 2) {
66 panel.destroy();
67 widget.destroy();
68 close(window);
69 }
70 }
71 });
72 }
73 }).show(null, window.gBrowser);
74 },
75 onUntrack: function(window) {
76 if (window === myPrivateWindow) {
77 wt.unload();
78
79 pb.once('stop', function() {
80 assert.pass('private browsing mode end');
81 done();
82 });
83
84 pb.deactivate();
85 }
86 }
87 });
88
89 assert.equal(isWindowPrivate(window), true, 'the opened window is private');
90 assert.equal(isPrivate(window), true, 'the opened window is private');
91 assert.ok(getFrames(window).length > 1, 'there are frames for private window');
92 assert.equal(getWindowTitle(window), window.document.title,
93 'getWindowTitle works');
94 });
95 });
96 pb.activate();
97 };
98
99 exports.testWindowTrackerDoesNotIgnorePrivateWindows = function(assert, done) {
100 var myPrivateWindow;
101 var count = 0;
102
103 let wt = windowUtils.WindowTracker({
104 onTrack: function(window) {
105 if (!isBrowser(window) || !isWindowPrivate(window)) return;
106 assert.ok(isWindowPrivate(window), 'window is private onTrack!');
107 if (++count == 1)
108 close(window);
109 },
110 onUntrack: function(window) {
111 if (count == 1 && isWindowPrivate(window)) {
112 wt.unload();
113
114 pb.once('stop', function() {
115 assert.pass('private browsing mode end');
116 done();
117 });
118 pb.deactivate();
119 }
120 }
121 });
122
123 pb.once('start', function() {
124 assert.pass('private browsing mode started');
125 makeEmptyBrowserWindow();
126 });
127 pb.activate();
128 }
129
130 exports.testWindowIteratorDoesNotIgnorePrivateWindows = function(assert, done) {
131 pb.once('start', function() {
132 // make a new private window
133 makeEmptyBrowserWindow().then(function(window) {
134 assert.ok(isWindowPrivate(window), "window is private");
135 assert.equal(isPrivate(window), true, 'the opened window is private');
136 assert.ok(toArray(windowUtils.windowIterator()).indexOf(window) > -1,
137 "window is in windowIterator()");
138 assert.ok(windows(null, { includePrivate: true }).indexOf(window) > -1,
139 "window is in windows()");
140
141 return close(window).then(function() {
142 pb.once('stop', function() {
143 done();
144 });
145 pb.deactivate();
146 });
147 }).then(null, assert.fail);
148 });
149 pb.activate();
150 };

mercurial