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); |
+}); |