OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // TODO(dbeam): test for loading upacked extensions? | 5 // TODO(dbeam): test for loading upacked extensions? |
6 | 6 |
7 GEN('#include "chrome/browser/ui/webui/extensions/' + | 7 GEN('#include "chrome/browser/ui/webui/extensions/' + |
8 'extension_settings_browsertest.h"'); | 8 'extension_settings_browsertest.h"'); |
9 | 9 |
10 // chrome/test/data/extensions/good.crx's extension ID. good.crx is loaded by | 10 // chrome/test/data/extensions/good.crx's extension ID. good.crx is loaded by |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 // Show the dialog, which triggers a chrome.send() for metrics purposes. | 144 // Show the dialog, which triggers a chrome.send() for metrics purposes. |
145 cr.dispatchSimpleEvent($('pack-extension'), 'click'); | 145 cr.dispatchSimpleEvent($('pack-extension'), 'click'); |
146 assertTrue($('pack-extension-overlay').classList.contains('showing')); | 146 assertTrue($('pack-extension-overlay').classList.contains('showing')); |
147 this.nextStep(); | 147 this.nextStep(); |
148 }; | 148 }; |
149 | 149 |
150 this.steps = [this.waitForPageLoad, testPackExtenion, testDone]; | 150 this.steps = [this.waitForPageLoad, testPackExtenion, testDone]; |
151 this.nextStep(); | 151 this.nextStep(); |
152 }); | 152 }); |
153 | 153 |
| 154 /** |
| 155 * @param {chrome.developerPrivate.EventType} eventType |
| 156 * @param {function():void} callback |
| 157 * @constructor |
| 158 */ |
| 159 function UpdateListener(eventType, callback) { |
| 160 this.callback_ = callback; |
| 161 this.eventType_ = eventType; |
| 162 this.onItemStateChangedListener_ = this.onItemStateChanged_.bind(this); |
| 163 chrome.developerPrivate.onItemStateChanged.addListener( |
| 164 this.onItemStateChangedListener_); |
| 165 } |
| 166 |
| 167 UpdateListener.prototype = { |
| 168 /** @private */ |
| 169 onItemStateChanged_: function(data) { |
| 170 if (this.eventType_ == data.event_type) { |
| 171 window.setTimeout(function() { |
| 172 chrome.developerPrivate.onItemStateChanged.removeListener( |
| 173 this.onItemStateChangedListener_); |
| 174 this.callback_(); |
| 175 }.bind(this), 0); |
| 176 } |
| 177 } |
| 178 }; |
| 179 |
154 function BasicExtensionSettingsWebUITest() {} | 180 function BasicExtensionSettingsWebUITest() {} |
155 | 181 |
156 BasicExtensionSettingsWebUITest.prototype = { | 182 BasicExtensionSettingsWebUITest.prototype = { |
157 __proto__: ExtensionSettingsWebUITest.prototype, | 183 __proto__: ExtensionSettingsWebUITest.prototype, |
158 | 184 |
159 /** @override */ | 185 /** @override */ |
160 testGenPreamble: function() { | 186 testGenPreamble: function() { |
161 // Install multiple types of extensions to ensure we handle each type. | 187 // Install multiple types of extensions to ensure we handle each type. |
162 // TODO(devlin): There are more types to add here. | 188 // TODO(devlin): There are more types to add here. |
163 GEN(' InstallGoodExtension();'); | 189 GEN(' InstallGoodExtension();'); |
164 GEN(' InstallErrorsExtension();'); | 190 GEN(' InstallErrorsExtension();'); |
165 GEN(' InstallSharedModule();'); | 191 GEN(' InstallSharedModule();'); |
166 GEN(' InstallPackagedApp();'); | 192 GEN(' InstallPackagedApp();'); |
167 | 193 |
168 GEN(' SetAutoConfirmUninstall();'); | 194 GEN(' SetAutoConfirmUninstall();'); |
169 }, | 195 }, |
170 | 196 |
171 /** @protected */ | 197 /** @protected */ |
172 verifyDisabledWorks: function() { | 198 verifyDisabledWorks: function() { |
173 chrome.management.setEnabled(GOOD_CRX_ID, false, function() { | 199 var listener = new UpdateListener( |
| 200 chrome.developerPrivate.EventType.UNLOADED, |
| 201 function() { |
174 var node = getRequiredElement(GOOD_CRX_ID); | 202 var node = getRequiredElement(GOOD_CRX_ID); |
175 assertTrue(node.classList.contains('inactive-extension')); | 203 assertTrue(node.classList.contains('inactive-extension')); |
176 this.nextStep(); | 204 this.nextStep(); |
177 }.bind(this)); | 205 }.bind(this)); |
| 206 chrome.management.setEnabled(GOOD_CRX_ID, false); |
178 }, | 207 }, |
179 | 208 |
180 /** @protected */ | 209 /** @protected */ |
181 verifyEnabledWorks: function() { | 210 verifyEnabledWorks: function() { |
182 chrome.management.setEnabled(GOOD_CRX_ID, true, function() { | 211 var listener = new UpdateListener( |
| 212 chrome.developerPrivate.EventType.LOADED, |
| 213 function() { |
183 var node = getRequiredElement(GOOD_CRX_ID); | 214 var node = getRequiredElement(GOOD_CRX_ID); |
184 assertFalse(node.classList.contains('inactive-extension')); | 215 assertFalse(node.classList.contains('inactive-extension')); |
185 this.nextStep(); | 216 this.nextStep(); |
186 }.bind(this)); | 217 }.bind(this)); |
| 218 chrome.management.setEnabled(GOOD_CRX_ID, true); |
187 }, | 219 }, |
188 | 220 |
189 /** @protected */ | 221 /** @protected */ |
190 verifyUninstallWorks: function() { | 222 verifyUninstallWorks: function() { |
191 var next = this.nextStep.bind(this); | 223 var listener = new UpdateListener( |
| 224 chrome.developerPrivate.EventType.UNINSTALLED, |
| 225 function() { |
| 226 assertEquals(null, $(GOOD_CRX_ID)); |
| 227 this.nextStep(); |
| 228 }.bind(this)); |
192 chrome.test.runWithUserGesture(function() { | 229 chrome.test.runWithUserGesture(function() { |
193 chrome.management.uninstall(GOOD_CRX_ID, function() { | 230 chrome.management.uninstall(GOOD_CRX_ID); |
194 assertEquals(null, $(GOOD_CRX_ID)); | |
195 next(); | |
196 }); | |
197 }); | 231 }); |
198 }, | 232 }, |
199 }; | 233 }; |
200 | 234 |
201 // Verify that developer mode doesn't change behavior when the number of | 235 // Verify that developer mode doesn't change behavior when the number of |
202 // extensions changes. | 236 // extensions changes. |
203 TEST_F('BasicExtensionSettingsWebUITest', 'testDeveloperModeManyExtensions', | 237 TEST_F('BasicExtensionSettingsWebUITest', 'testDeveloperModeManyExtensions', |
204 function() { | 238 function() { |
205 this.testDeveloperMode(); | 239 this.testDeveloperMode(); |
206 }); | 240 }); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 | 417 |
384 /** @override */ | 418 /** @override */ |
385 browsePreload: ExtensionSettingsWebUITest.prototype.browsePreload + | 419 browsePreload: ExtensionSettingsWebUITest.prototype.browsePreload + |
386 '?options=' + GOOD_CRX_ID, | 420 '?options=' + GOOD_CRX_ID, |
387 }; | 421 }; |
388 | 422 |
389 TEST_F('OptionsDialogExtensionSettingsWebUITest', 'testAccessibility', | 423 TEST_F('OptionsDialogExtensionSettingsWebUITest', 'testAccessibility', |
390 function() { | 424 function() { |
391 this.emptyTestForAccessibility(); | 425 this.emptyTestForAccessibility(); |
392 }); | 426 }); |
OLD | NEW |