15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// TODO(dbeam): test for loading upacked extensions?
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
78bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)GEN('#include "chrome/browser/ui/webui/extensions/' +
88bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    'extension_settings_browsertest.h"');
98bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)/**
118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) * Test C++ fixture for settings WebUI testing.
128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) * @constructor
138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) * @extends {testing.Test}
148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) */
158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)function ExtensionSettingsUIBrowserTest() {}
168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TestFixture for extension settings WebUI testing.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @extends {testing.Test}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function ExtensionSettingsWebUITest() {}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExtensionSettingsWebUITest.prototype = {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  __proto__: testing.Test.prototype,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  accessibilityIssuesAreErrors: true,
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  /** @override */
308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  setUp: function() {
318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    // TODO(aboxhall): remove these when crbug.com/267035 is closed.
328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    this.accessibilityAuditConfig.ignoreSelectors(
338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      'lowContrastElements',
348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      '.enable-checkbox input:disabled + .enable-checkbox-text > *');
358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    this.accessibilityAuditConfig.ignoreSelectors(
368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      'lowContrastElements', '.extension-description > *');
378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    this.accessibilityAuditConfig.ignoreSelectors(
388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      'lowContrastElements', '.location-text');
398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  },
408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  /**
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch   * A URL to load before starting each test.
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch   * @type {string}
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch   * @const
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch   */
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  browsePreload: 'chrome://extensions-frame/',
478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  /** @override */
498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  typedefCppFixture: 'ExtensionSettingsUIBrowserTest',
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F('ExtensionSettingsWebUITest', 'testChromeSendHandled', function() {
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  assertEquals(this.browsePreload, document.location.href);
54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // This dialog should be hidden at first.
563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  assertFalse($('pack-extension-overlay').classList.contains('showing'));
57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Show the dialog, which triggers a chrome.send() for metrics purposes.
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  cr.dispatchSimpleEvent($('pack-extension'), 'click');
603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  assertTrue($('pack-extension-overlay').classList.contains('showing'));
61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch});
62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/**
64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * TestFixture for extension settings WebUI testing (commands config edition).
65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @extends {testing.Test}
66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @constructor
67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */
68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochfunction ExtensionSettingsCommandsConfigWebUITest() {}
69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochExtensionSettingsCommandsConfigWebUITest.prototype = {
71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  __proto__: testing.Test.prototype,
72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  accessibilityIssuesAreErrors: true,
748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  /**
76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch   * A URL to load before starting each test.
77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch   * @type {string}
78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch   * @const
79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch   */
80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browsePreload: 'chrome://extensions-frame/configureCommands',
81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch};
82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochTEST_F('ExtensionSettingsCommandsConfigWebUITest', 'testChromeSendHandler',
84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    function() {
85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Just navigating to the page should trigger the chrome.send().
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  assertEquals(this.browsePreload, document.location.href);
873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  assertTrue($('extension-commands-overlay').classList.contains('showing'));
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)function ExtensionSettingsWebUITestWithExtensionInstalled() {}
918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)ExtensionSettingsWebUITestWithExtensionInstalled.prototype = {
938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  __proto__: ExtensionSettingsWebUITest.prototype,
948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  /** @override */
968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  typedefCppFixture: 'ExtensionSettingsUIBrowserTest',
978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  /** @override */
998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  testGenPreamble: function() {
1008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    GEN('  InstallGoodExtension();');
1018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  }
102010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)};
1038bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
1048bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F('ExtensionSettingsWebUITestWithExtensionInstalled',
1058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)       'baseAccessibilityIsOk', function() {
1068bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  assertEquals(this.browsePreload, document.location.href);
1078bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  this.runAccessibilityAudit();
1088bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)});
109