// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * TestFixture for OptionsPage WebUI testing. * @extends {testing.Test} * @constructor */ function OptionsWebUITest() {} OptionsWebUITest.prototype = { __proto__: testing.Test.prototype, /** * Browse to the options page & call our preLoad(). */ browsePreload: 'chrome://settings-frame', /** * Register a mock handler to ensure expectations are met and options pages * behave correctly. */ preLoad: function() { this.makeAndRegisterMockHandler( ['defaultZoomFactorAction', 'fetchPrefs', 'observePrefs', 'setBooleanPref', 'setIntegerPref', 'setDoublePref', 'setStringPref', 'setObjectPref', 'clearPref', 'coreOptionsUserMetricsAction', ]); // Register stubs for methods expected to be called before/during tests. // Specific expectations can be made in the tests themselves. this.mockHandler.stubs().fetchPrefs(ANYTHING); this.mockHandler.stubs().observePrefs(ANYTHING); this.mockHandler.stubs().coreOptionsUserMetricsAction(ANYTHING); }, }; // Crashes on Mac only. See http://crbug.com/79181 GEN('#if defined(OS_MACOSX)'); GEN('#define MAYBE_testSetBooleanPrefTriggers ' + 'DISABLED_testSetBooleanPrefTriggers'); GEN('#else'); GEN('#define MAYBE_testSetBooleanPrefTriggers testSetBooleanPrefTriggers'); GEN('#endif // defined(OS_MACOSX)'); TEST_F('OptionsWebUITest', 'MAYBE_testSetBooleanPrefTriggers', function() { // TODO(dtseng): make generic to click all buttons. var showHomeButton = $('show-home-button'); var trueListValue = [ 'browser.show_home_button', true, 'Options_Homepage_HomeButton', ]; // Note: this expectation is checked in testing::Test::tearDown. this.mockHandler.expects(once()).setBooleanPref(trueListValue); // Cause the handler to be called. showHomeButton.click(); showHomeButton.blur(); }); // Not meant to run on ChromeOS at this time. // Not finishing in windows. http://crbug.com/81723 TEST_F('OptionsWebUITest', 'DISABLED_testRefreshStaysOnCurrentPage', function() { assertTrue($('search-engine-manager-page').hidden); var item = $('manage-default-search-engines'); item.click(); assertFalse($('search-engine-manager-page').hidden); window.location.reload(); assertEquals('chrome://settings-frame/searchEngines', document.location.href); assertFalse($('search-engine-manager-page').hidden); }); /** * Test the default zoom factor select element. */ TEST_F('OptionsWebUITest', 'testDefaultZoomFactor', function() { // The expected minimum length of the |defaultZoomFactor| element. var defaultZoomFactorMinimumLength = 10; // Verify that the zoom factor element exists. var defaultZoomFactor = $('defaultZoomFactor'); assertNotEquals(defaultZoomFactor, null); // Verify that the zoom factor element has a reasonable number of choices. expectGE(defaultZoomFactor.options.length, defaultZoomFactorMinimumLength); // Simulate a change event, selecting the highest zoom value. Verify that // the javascript handler was invoked once. this.mockHandler.expects(once()).defaultZoomFactorAction(NOT_NULL). will(callFunction(function() { })); defaultZoomFactor.selectedIndex = defaultZoomFactor.options.length - 1; var event = { target: defaultZoomFactor }; if (defaultZoomFactor.onchange) defaultZoomFactor.onchange(event); });