OLD | NEW |
1 <script> | 1 <!-- |
2 var normalWindow, normalTab; | 2 * Copyright (c) 2011 The Chromium Authors. All rights reserved. Use of this |
3 var incognitoWindow, incognitoTab; | 3 * source code is governed by a BSD-style license that can be found in the |
4 | 4 * LICENSE file. |
5 var pass = chrome.test.callbackPass; | 5 --> |
6 var fail = chrome.test.callbackFail; | 6 <script src="background.js"></script> |
7 var assertEq = chrome.test.assertEq; | |
8 var assertTrue = chrome.test.assertTrue; | |
9 | |
10 chrome.test.getConfig(function(config) { | |
11 chrome.test.runTests([ | |
12 function setupWindows() { | |
13 // The test harness should have set us up with 2 windows: 1 incognito | |
14 // and 1 regular. Verify that we can see both when we ask for it. | |
15 chrome.windows.getAll({populate: true}, pass(function(windows) { | |
16 assertEq(2, windows.length); | |
17 | |
18 if (windows[0].incognito) { | |
19 incognitoWindow = windows[0]; | |
20 normalWindow = windows[1]; | |
21 } else { | |
22 normalWindow = windows[0]; | |
23 incognitoWindow = windows[1]; | |
24 } | |
25 normalTab = normalWindow.tabs[0]; | |
26 incognitoTab = incognitoWindow.tabs[0]; | |
27 assertTrue(!normalWindow.incognito); | |
28 assertTrue(incognitoWindow.incognito); | |
29 })); | |
30 }, | |
31 | |
32 // Tests that we can update an incognito tab and get the event for it. | |
33 function tabUpdate() { | |
34 var newUrl = "about:blank"; | |
35 | |
36 // Prepare the event listeners first. | |
37 var done = chrome.test.listenForever(chrome.tabs.onUpdated, | |
38 function(id, info, tab) { | |
39 if (id == incognitoTab.id) { | |
40 assertTrue(tab.incognito); | |
41 assertEq(newUrl, tab.url); | |
42 if (info.status == "complete") | |
43 done(); | |
44 } | |
45 }); | |
46 | |
47 // Update our tabs. | |
48 chrome.tabs.update(incognitoTab.id, {"url": newUrl}, pass()); | |
49 }, | |
50 | |
51 // Tests a sequence of tab API calls. | |
52 function tabNested() { | |
53 // Setup our listeners. We check that the events fire in order. | |
54 var eventCounter = 0; | |
55 chrome.test.listenOnce(chrome.tabs.onCreated, function(tab) { | |
56 assertEq(1, ++eventCounter); | |
57 assertEq(incognitoTab.windowId, tab.windowId); | |
58 assertTrue(tab.incognito); | |
59 }); | |
60 chrome.test.listenOnce(chrome.tabs.onMoved, function(tabId) { | |
61 assertEq(2, ++eventCounter); | |
62 }); | |
63 chrome.test.listenOnce(chrome.tabs.onRemoved, function(tabId) { | |
64 assertEq(3, ++eventCounter); | |
65 }); | |
66 | |
67 // Create, select, move, and close a tab in our incognito window. | |
68 chrome.tabs.create({windowId: incognitoTab.windowId}, | |
69 pass(function(tab) { | |
70 chrome.tabs.move(tab.id, {index: 0}, | |
71 pass(function(tab) { | |
72 assertEq(incognitoTab.incognito, tab.incognito); | |
73 chrome.tabs.remove(tab.id, pass()); | |
74 })); | |
75 })); | |
76 }, | |
77 | |
78 // Tests content script injection to verify that the script can tell its | |
79 // in incongnito. | |
80 function contentScriptTestIncognito() { | |
81 assertTrue(!chrome.extension.inIncognitoContext); | |
82 | |
83 var testUrl = "http://localhost:PORT/files/extensions/test_file.html" | |
84 .replace(/PORT/, config.testServer.port); | |
85 | |
86 // Test that chrome.extension.inIncognitoTab is true for incognito tabs. | |
87 chrome.tabs.create({windowId: incognitoWindow.id, url: testUrl}, | |
88 pass(function(tab) { | |
89 chrome.tabs.executeScript(tab.id, | |
90 {code: 'document.title = chrome.extension.inIncognitoContext'}, | |
91 pass(function() { | |
92 assertEq(undefined, chrome.extension.lastError); | |
93 chrome.tabs.get(tab.id, pass(function(tab) { | |
94 assertEq("true", tab.title); | |
95 })); | |
96 })); | |
97 })); | |
98 | |
99 // ... and false for normal tabs. | |
100 chrome.tabs.create({windowId: normalWindow.id, url: testUrl}, | |
101 pass(function(tab) { | |
102 chrome.tabs.executeScript(tab.id, | |
103 {code: 'document.title = chrome.extension.inIncognitoContext'}, | |
104 pass(function() { | |
105 assertEq(undefined, chrome.extension.lastError); | |
106 chrome.tabs.get(tab.id, pass(function(tab) { | |
107 assertEq("false", tab.title); | |
108 })); | |
109 })); | |
110 })); | |
111 }, | |
112 | |
113 // Tests that extensions can't move tabs between incognito and | |
114 // non-incognito windows. | |
115 function moveTabBetweenProfiles() { | |
116 var errorMsg = "Tabs can only be moved between " + | |
117 "windows in the same profile."; | |
118 | |
119 // Create a tab in the non-incognito window... | |
120 chrome.tabs.create({windowId: normalWindow.id, url: 'about:blank'}, | |
121 pass(function(tab) { | |
122 // ... and then try to move it to the incognito window. | |
123 chrome.tabs.move(tab.id, | |
124 {windowId: incognitoWindow.id, index: 0}, fail(errorMsg)); | |
125 })); | |
126 } | |
127 ]); | |
128 }); | |
129 | |
130 </script> | |
OLD | NEW |