| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/ui/webui/options/core_options_handler.h" | |
| 6 #include "chrome/browser/ui/webui/web_ui_browsertest.h" | |
| 7 #include "chrome/common/url_constants.h" | |
| 8 #include "chrome/test/ui_test_utils.h" | |
| 9 #include "googleurl/src/gurl.h" | |
| 10 #include "testing/gmock/include/gmock/gmock.h" | |
| 11 #include "testing/gtest/include/gtest/gtest.h" | |
| 12 | |
| 13 using ::testing::StrictMock; | |
| 14 using ::testing::_; | |
| 15 | |
| 16 MATCHER_P(Eq_ListValue, inList, "") { | |
| 17 return arg->Equals(inList); | |
| 18 } | |
| 19 | |
| 20 class MockCoreOptionsHandler : public CoreOptionsHandler { | |
| 21 public: | |
| 22 MOCK_METHOD1(HandleInitialize, | |
| 23 void(const ListValue* args)); | |
| 24 MOCK_METHOD1(HandleFetchPrefs, | |
| 25 void(const ListValue* args)); | |
| 26 MOCK_METHOD1(HandleObservePrefs, | |
| 27 void(const ListValue* args)); | |
| 28 MOCK_METHOD1(HandleSetBooleanPref, | |
| 29 void(const ListValue* args)); | |
| 30 MOCK_METHOD1(HandleSetIntegerPref, | |
| 31 void(const ListValue* args)); | |
| 32 MOCK_METHOD1(HandleSetDoublePref, | |
| 33 void(const ListValue* args)); | |
| 34 MOCK_METHOD1(HandleSetStringPref, | |
| 35 void(const ListValue* args)); | |
| 36 MOCK_METHOD1(HandleSetObjectPref, | |
| 37 void(const ListValue* args)); | |
| 38 MOCK_METHOD1(HandleClearPref, | |
| 39 void(const ListValue* args)); | |
| 40 MOCK_METHOD1(HandleUserMetricsAction, | |
| 41 void(const ListValue* args)); | |
| 42 | |
| 43 virtual void RegisterMessages() { | |
| 44 web_ui_->RegisterMessageCallback("coreOptionsInitialize", | |
| 45 NewCallback(this, &MockCoreOptionsHandler ::HandleInitialize)); | |
| 46 web_ui_->RegisterMessageCallback("fetchPrefs", | |
| 47 NewCallback(this, &MockCoreOptionsHandler ::HandleFetchPrefs)); | |
| 48 web_ui_->RegisterMessageCallback("observePrefs", | |
| 49 NewCallback(this, &MockCoreOptionsHandler ::HandleObservePrefs)); | |
| 50 web_ui_->RegisterMessageCallback("setBooleanPref", | |
| 51 NewCallback(this, &MockCoreOptionsHandler ::HandleSetBooleanPref)); | |
| 52 web_ui_->RegisterMessageCallback("setIntegerPref", | |
| 53 NewCallback(this, &MockCoreOptionsHandler ::HandleSetIntegerPref)); | |
| 54 web_ui_->RegisterMessageCallback("setDoublePref", | |
| 55 NewCallback(this, &MockCoreOptionsHandler ::HandleSetDoublePref)); | |
| 56 web_ui_->RegisterMessageCallback("setStringPref", | |
| 57 NewCallback(this, &MockCoreOptionsHandler ::HandleSetStringPref)); | |
| 58 web_ui_->RegisterMessageCallback("setObjectPref", | |
| 59 NewCallback(this, &MockCoreOptionsHandler ::HandleSetObjectPref)); | |
| 60 web_ui_->RegisterMessageCallback("clearPref", | |
| 61 NewCallback(this, &MockCoreOptionsHandler ::HandleClearPref)); | |
| 62 web_ui_->RegisterMessageCallback("coreOptionsUserMetricsAction", | |
| 63 NewCallback(this, &MockCoreOptionsHandler ::HandleUserMetricsAction)); | |
| 64 } | |
| 65 }; | |
| 66 | |
| 67 class SettingsWebUITest : public WebUIBrowserTest { | |
| 68 protected: | |
| 69 virtual void SetUpInProcessBrowserTestFixture() { | |
| 70 WebUIBrowserTest::SetUpInProcessBrowserTestFixture(); | |
| 71 AddLibrary(FilePath(FILE_PATH_LITERAL("settings.js"))); | |
| 72 } | |
| 73 | |
| 74 virtual void SetUpOnMainThread() { | |
| 75 mock_core_options_handler_.reset(new StrictMock<MockCoreOptionsHandler>()); | |
| 76 ui_test_utils::NavigateToURL( | |
| 77 browser(), GURL(chrome::kChromeUISettingsURL)); | |
| 78 } | |
| 79 | |
| 80 virtual void CleanUpOnMainThread() { | |
| 81 mock_core_options_handler_.reset(); | |
| 82 } | |
| 83 | |
| 84 virtual WebUIMessageHandler* GetMockMessageHandler() { | |
| 85 return mock_core_options_handler_.get(); | |
| 86 } | |
| 87 | |
| 88 scoped_ptr<StrictMock<MockCoreOptionsHandler> > mock_core_options_handler_; | |
| 89 }; | |
| 90 | |
| 91 // Test the end to end js to WebUI handler code path for | |
| 92 // the message setBooleanPref. | |
| 93 // TODO(dtseng): add more EXPECT_CALL's when updating js test. | |
| 94 | |
| 95 // Crashes on Mac only. See http://crbug.com/79181 | |
| 96 #if defined(OS_MACOSX) | |
| 97 #define MAYBE_TestSetBooleanPrefTriggers DISABLED_TestSetBooleanPrefTriggers | |
| 98 #else | |
| 99 #define MAYBE_TestSetBooleanPrefTriggers TestSetBooleanPrefTriggers | |
| 100 #endif | |
| 101 IN_PROC_BROWSER_TEST_F(SettingsWebUITest, MAYBE_TestSetBooleanPrefTriggers) { | |
| 102 // This serves as an example of a very constrained test. | |
| 103 ListValue true_list_value; | |
| 104 true_list_value.Append(Value::CreateStringValue("browser.show_home_button")); | |
| 105 true_list_value.Append(Value::CreateBooleanValue(true)); | |
| 106 true_list_value.Append( | |
| 107 Value::CreateStringValue("Options_Homepage_HomeButton")); | |
| 108 EXPECT_CALL(*mock_core_options_handler_, | |
| 109 HandleSetBooleanPref(Eq_ListValue(&true_list_value))); | |
| 110 ASSERT_TRUE(RunJavascriptTest("testSetBooleanPrefTriggers")); | |
| 111 } | |
| 112 | |
| 113 // Not meant to run on ChromeOS at this time. | |
| 114 // Not finishing in windows. http://crbug.com/81723 | |
| 115 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined (OS_WIN) || defined(TO
UCH_UI) | |
| 116 #define MAYBE_TestRefreshStaysOnCurrentPage\ | |
| 117 DISABLED_TestRefreshStaysOnCurrentPage | |
| 118 #else | |
| 119 #define MAYBE_TestRefreshStaysOnCurrentPage TestRefreshStaysOnCurrentPage | |
| 120 #endif | |
| 121 IN_PROC_BROWSER_TEST_F(SettingsWebUITest, | |
| 122 MAYBE_TestRefreshStaysOnCurrentPage) { | |
| 123 ASSERT_TRUE(RunJavascriptFunction("openUnderTheHood")); | |
| 124 ASSERT_TRUE(RunJavascriptFunction("refreshPage")); | |
| 125 ASSERT_TRUE(RunJavascriptTest("testPageIsUnderTheHood")); | |
| 126 } | |
| OLD | NEW |