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 // The id of the extension from |InstallGoodExtension|. |
11 // ExtensionSettingsUIBrowserTest::InstallGoodExtension() in some of the tests. | 11 var GOOD_EXTENSION_ID = 'ldnnhddmnhbkjipkidpdiheffobcpfmf'; |
12 var GOOD_CRX_ID = 'ldnnhddmnhbkjipkidpdiheffobcpfmf'; | 12 |
| 13 // The id of the extension from |InstallErrorsExtension|. |
| 14 var ERROR_EXTENSION_ID = 'pdlpifnclfacjobnmbpngemkalkjamnf'; |
13 | 15 |
14 /** | 16 /** |
15 * Test C++ fixture for settings WebUI testing. | 17 * Test C++ fixture for settings WebUI testing. |
16 * @constructor | 18 * @constructor |
17 * @extends {testing.Test} | 19 * @extends {testing.Test} |
18 */ | 20 */ |
19 function ExtensionSettingsUIBrowserTest() {} | 21 function ExtensionSettingsUIBrowserTest() {} |
20 | 22 |
21 /** | 23 /** |
22 * TestFixture for extension settings WebUI testing. | 24 * TestFixture for extension settings WebUI testing. |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 GEN(' InstallPackagedApp();'); | 194 GEN(' InstallPackagedApp();'); |
193 | 195 |
194 GEN(' SetAutoConfirmUninstall();'); | 196 GEN(' SetAutoConfirmUninstall();'); |
195 }, | 197 }, |
196 | 198 |
197 /** @protected */ | 199 /** @protected */ |
198 verifyDisabledWorks: function() { | 200 verifyDisabledWorks: function() { |
199 var listener = new UpdateListener( | 201 var listener = new UpdateListener( |
200 chrome.developerPrivate.EventType.UNLOADED, | 202 chrome.developerPrivate.EventType.UNLOADED, |
201 function() { | 203 function() { |
202 var node = getRequiredElement(GOOD_CRX_ID); | 204 var node = getRequiredElement(GOOD_EXTENSION_ID); |
203 assertTrue(node.classList.contains('inactive-extension')); | 205 assertTrue(node.classList.contains('inactive-extension')); |
204 this.nextStep(); | 206 this.nextStep(); |
205 }.bind(this)); | 207 }.bind(this)); |
206 chrome.management.setEnabled(GOOD_CRX_ID, false); | 208 chrome.management.setEnabled(GOOD_EXTENSION_ID, false); |
207 }, | 209 }, |
208 | 210 |
209 /** @protected */ | 211 /** @protected */ |
210 verifyEnabledWorks: function() { | 212 verifyEnabledWorks: function() { |
211 var listener = new UpdateListener( | 213 var listener = new UpdateListener( |
212 chrome.developerPrivate.EventType.LOADED, | 214 chrome.developerPrivate.EventType.LOADED, |
213 function() { | 215 function() { |
214 var node = getRequiredElement(GOOD_CRX_ID); | 216 var node = getRequiredElement(GOOD_EXTENSION_ID); |
215 assertFalse(node.classList.contains('inactive-extension')); | 217 assertFalse(node.classList.contains('inactive-extension')); |
216 this.nextStep(); | 218 this.nextStep(); |
217 }.bind(this)); | 219 }.bind(this)); |
218 chrome.management.setEnabled(GOOD_CRX_ID, true); | 220 chrome.management.setEnabled(GOOD_EXTENSION_ID, true); |
219 }, | 221 }, |
220 | 222 |
221 /** @protected */ | 223 /** @protected */ |
222 verifyUninstallWorks: function() { | 224 verifyUninstallWorks: function() { |
223 var listener = new UpdateListener( | 225 var listener = new UpdateListener( |
224 chrome.developerPrivate.EventType.UNINSTALLED, | 226 chrome.developerPrivate.EventType.UNINSTALLED, |
225 function() { | 227 function() { |
226 assertEquals(null, $(GOOD_CRX_ID)); | 228 assertEquals(null, $(GOOD_EXTENSION_ID)); |
227 this.nextStep(); | 229 this.nextStep(); |
228 }.bind(this)); | 230 }.bind(this)); |
229 chrome.test.runWithUserGesture(function() { | 231 chrome.test.runWithUserGesture(function() { |
230 chrome.management.uninstall(GOOD_CRX_ID); | 232 chrome.management.uninstall(GOOD_EXTENSION_ID); |
231 }); | 233 }); |
232 }, | 234 }, |
233 }; | 235 }; |
234 | 236 |
235 // Verify that developer mode doesn't change behavior when the number of | 237 // Verify that developer mode doesn't change behavior when the number of |
236 // extensions changes. | 238 // extensions changes. |
237 TEST_F('BasicExtensionSettingsWebUITest', 'testDeveloperModeManyExtensions', | 239 TEST_F('BasicExtensionSettingsWebUITest', 'testDeveloperModeManyExtensions', |
238 function() { | 240 function() { |
239 this.testDeveloperMode(); | 241 this.testDeveloperMode(); |
240 }); | 242 }); |
(...skipping 23 matching lines...) Expand all Loading... |
264 assertFalse($('extension-list-wrapper').hidden); | 266 assertFalse($('extension-list-wrapper').hidden); |
265 assertTrue($('no-extensions').hidden); | 267 assertTrue($('no-extensions').hidden); |
266 assertGT($('extension-settings-list').childNodes.length, 0); | 268 assertGT($('extension-settings-list').childNodes.length, 0); |
267 this.nextStep(); | 269 this.nextStep(); |
268 }; | 270 }; |
269 | 271 |
270 this.steps = [this.waitForPageLoad, verifyListIsNotHiddenAndEmpty, testDone]; | 272 this.steps = [this.waitForPageLoad, verifyListIsNotHiddenAndEmpty, testDone]; |
271 this.nextStep(); | 273 this.nextStep(); |
272 }); | 274 }); |
273 | 275 |
274 function AsyncExtensionSettingsWebUITest() {} | 276 function ErrorConsoleExtensionSettingsWebUITest() {} |
275 | 277 |
276 AsyncExtensionSettingsWebUITest.prototype = { | 278 ErrorConsoleExtensionSettingsWebUITest.prototype = { |
277 __proto__: ExtensionSettingsWebUITest.prototype, | 279 __proto__: ExtensionSettingsWebUITest.prototype, |
278 | 280 |
279 /** @override */ | 281 /** @override */ |
280 testGenPreamble: function() { | 282 testGenPreamble: function() { |
| 283 GEN(' EnableErrorConsole();'); |
281 GEN(' InstallGoodExtension();'); | 284 GEN(' InstallGoodExtension();'); |
282 GEN(' InstallErrorsExtension();'); | 285 GEN(' InstallErrorsExtension();'); |
283 }, | 286 }, |
284 }; | 287 }; |
285 | 288 |
286 // Still fails on CrWinClang tester. BUG=463245 | 289 TEST_F('ErrorConsoleExtensionSettingsWebUITest', |
287 TEST_F('AsyncExtensionSettingsWebUITest', | 290 'testErrorListButtonVisibility', function() { |
288 'DISABLED_testErrorListButtonVisibility', | |
289 function() { | |
290 var testButtonVisibility = function() { | 291 var testButtonVisibility = function() { |
291 var extensionList = $('extension-list-wrapper'); | 292 var extensionList = $('extension-list-wrapper'); |
292 | 293 |
293 // 2 extensions are loaded: | |
294 // The 'good' extension will have 0 errors wich means no error button. | |
295 // The 'bad' extension will have >3 manifest errors and <3 runtime errors. | |
296 // This means there will be a single error button. | |
297 var visibleButtons = extensionList.querySelectorAll( | 294 var visibleButtons = extensionList.querySelectorAll( |
298 '.errors-link:not([hidden])'); | 295 '.errors-link:not([hidden])'); |
299 expectEquals(1, visibleButtons.length); | 296 expectEquals(1, visibleButtons.length); |
300 | 297 |
| 298 if (visibleButtons.length > 0) { |
| 299 var errorLink = $(ERROR_EXTENSION_ID).querySelector('.errors-link'); |
| 300 expectEquals(visibleButtons[0], errorLink); |
| 301 |
| 302 var errorIcon = errorLink.querySelector('img'); |
| 303 expectTrue(errorIcon.classList.contains('extension-error-warning-icon')); |
| 304 } |
| 305 |
301 var hiddenButtons = extensionList.querySelectorAll('.errors-link[hidden]'); | 306 var hiddenButtons = extensionList.querySelectorAll('.errors-link[hidden]'); |
302 expectEquals(1, hiddenButtons.length); | 307 expectEquals(1, hiddenButtons.length); |
303 | 308 |
304 this.nextStep(); | 309 this.nextStep(); |
305 }; | 310 }; |
306 | 311 |
307 this.steps = [this.waitForPageLoad, | 312 this.steps = [this.waitForPageLoad, |
308 this.enableDeveloperMode, | 313 this.enableDeveloperMode, |
309 testButtonVisibility, | 314 testButtonVisibility, |
310 testDone]; | 315 testDone]; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 }; | 367 }; |
363 | 368 |
364 TEST_F('InstallGoodExtensionSettingsWebUITest', 'testAccessibility', | 369 TEST_F('InstallGoodExtensionSettingsWebUITest', 'testAccessibility', |
365 function() { | 370 function() { |
366 this.emptyTestForAccessibility(); | 371 this.emptyTestForAccessibility(); |
367 }); | 372 }); |
368 | 373 |
369 TEST_F('InstallGoodExtensionSettingsWebUITest', 'showOptions', function() { | 374 TEST_F('InstallGoodExtensionSettingsWebUITest', 'showOptions', function() { |
370 var showExtensionOptions = function() { | 375 var showExtensionOptions = function() { |
371 var optionsOverlay = extensions.ExtensionOptionsOverlay.getInstance(); | 376 var optionsOverlay = extensions.ExtensionOptionsOverlay.getInstance(); |
372 optionsOverlay.setExtensionAndShow(GOOD_CRX_ID, 'GOOD!', '', | 377 optionsOverlay.setExtensionAndShow(GOOD_EXTENSION_ID, 'GOOD!', '', |
373 this.nextStep.bind(this)); | 378 this.nextStep.bind(this)); |
374 | 379 |
375 // Preferred size changes don't happen in browser tests. Just fake it. | 380 // Preferred size changes don't happen in browser tests. Just fake it. |
376 document.querySelector('extensionoptions').onpreferredsizechanged( | 381 document.querySelector('extensionoptions').onpreferredsizechanged( |
377 {width: 500, height: 500}); | 382 {width: 500, height: 500}); |
378 }; | 383 }; |
379 | 384 |
380 this.steps = [this.waitForPageLoad, showExtensionOptions, testDone]; | 385 this.steps = [this.waitForPageLoad, showExtensionOptions, testDone]; |
381 this.nextStep(); | 386 this.nextStep(); |
382 }); | 387 }); |
(...skipping 22 matching lines...) Expand all Loading... |
405 * @constructor | 410 * @constructor |
406 * @extends {InstallGoodExtensionSettingsWebUITest} | 411 * @extends {InstallGoodExtensionSettingsWebUITest} |
407 */ | 412 */ |
408 function OptionsDialogExtensionSettingsWebUITest() {} | 413 function OptionsDialogExtensionSettingsWebUITest() {} |
409 | 414 |
410 OptionsDialogExtensionSettingsWebUITest.prototype = { | 415 OptionsDialogExtensionSettingsWebUITest.prototype = { |
411 __proto__: InstallGoodExtensionSettingsWebUITest.prototype, | 416 __proto__: InstallGoodExtensionSettingsWebUITest.prototype, |
412 | 417 |
413 /** @override */ | 418 /** @override */ |
414 browsePreload: ExtensionSettingsWebUITest.prototype.browsePreload + | 419 browsePreload: ExtensionSettingsWebUITest.prototype.browsePreload + |
415 '?options=' + GOOD_CRX_ID, | 420 '?options=' + GOOD_EXTENSION_ID, |
416 }; | 421 }; |
417 | 422 |
418 TEST_F('OptionsDialogExtensionSettingsWebUITest', 'testAccessibility', | 423 TEST_F('OptionsDialogExtensionSettingsWebUITest', 'testAccessibility', |
419 function() { | 424 function() { |
420 this.emptyTestForAccessibility(); | 425 this.emptyTestForAccessibility(); |
421 }); | 426 }); |
OLD | NEW |