Chromium Code Reviews| Index: chrome/test/data/webui/options.js |
| diff --git a/chrome/test/data/webui/options.js b/chrome/test/data/webui/options.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a55b31e55c618cadd04e6b33d95cde4b8a7c4737 |
| --- /dev/null |
| +++ b/chrome/test/data/webui/options.js |
| @@ -0,0 +1,118 @@ |
| +// Copyright (c) 2011 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', |
| + |
| + /** |
| + * Register a mock handler to ensure expectations are met and options pages |
| + * behave correctly. |
| + **/ |
| + 'PreLoad': function() { |
| + |
| + /** |
| + * Create handler class with empty methods to allow mocking to register |
| + * expectations and for registration of handlers with chrome.send. |
| + **/ |
| + function MockOptionsHandler() {} |
| + |
| + MockOptionsHandler.prototype = { |
| + 'coreOptionsInitialize': function() { |
| + }, |
| + 'fetchPrefs': function() { |
|
Evan Stade
2011/07/08 23:04:46
I think the closing curly might as well be on the
Sheridan Rawlins
2011/07/08 23:47:24
Done.
|
| + }, |
| + 'observePrefs': function() { |
| + }, |
| + 'setBooleanPref': function() { |
| + }, |
| + 'setIntegerPref': function() { |
| + }, |
| + 'setDoublePref': function() { |
| + }, |
| + 'setStringPref': function() { |
| + }, |
| + 'setObjectPref': function() { |
| + }, |
| + 'clearPref': function() { |
| + }, |
| + 'coreOptionsUserMetricsAction': function() { |
| + }, |
| + }; |
| + |
| + // Create the actual mock and register stubs for methods expected to be |
| + // called before our tests run. Specific expectations can be made in the |
| + // tests themselves. |
| + var mockHandler = this.mockHandler = mock(MockOptionsHandler); |
| + mockHandler.stubs().fetchPrefs(ANYTHING); |
| + mockHandler.stubs().observePrefs(ANYTHING); |
| + mockHandler.stubs().coreOptionsInitialize(); |
| + |
| + // Register our mock as a handler of the chrome.send messages. |
| + registerMockMessageCallbacks(mockHandler, MockOptionsHandler); |
| + }, |
| +}; |
| + |
| +GEN('#include "chrome/browser/ui/webui/web_ui_browsertest.h"'); |
| +GEN('#include "googleurl/src/gurl.h"'); |
| +GEN('#include "testing/gtest/include/gtest/gtest.h"'); |
| +GEN(''); |
| +GEN('typedef WebUIBrowserTest OptionsWebUITest;'); |
| + |
| +// 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 = $('toolbarShowHomeButton'); |
| + 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 |
| +GEN('#if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) \\'); |
| +GEN(' || defined(TOUCH_UI)'); |
| +GEN('#define MAYBE_testRefreshStaysOnCurrentPage \\'); |
| +GEN(' DISABLED_testRefreshStaysOnCurrentPage'); |
| +GEN('#else'); |
| +GEN('#define MAYBE_testRefreshStaysOnCurrentPage ' + |
| + 'testRefreshStaysOnCurrentPage'); |
| +GEN('#endif'); |
| + |
| +TEST_F('OptionsWebUITest', 'MAYBE_testRefreshStaysOnCurrentPage', function() { |
| + var item = $('advancedPageNav'); |
| + item.onclick(); |
| + window.location.reload(); |
| + var pageInstance = AdvancedOptions.getInstance(); |
| + var topPage = OptionsPage.getTopmostVisiblePage(); |
| + var expectedTitle = pageInstance.title; |
| + var actualTitle = document.title; |
| + assertEquals("chrome://settings/advanced", document.location.href); |
| + assertEquals(expectedTitle, actualTitle); |
| + assertEquals(pageInstance, topPage); |
| +}); |