| 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/dom_ui/dom_ui_browsertest.h" |
| 6 #include "chrome/browser/dom_ui/options/core_options_handler.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 dom_ui_->RegisterMessageCallback("coreOptionsInitialize", |
| 45 NewCallback(this, &MockCoreOptionsHandler ::HandleInitialize)); |
| 46 dom_ui_->RegisterMessageCallback("fetchPrefs", |
| 47 NewCallback(this, &MockCoreOptionsHandler ::HandleFetchPrefs)); |
| 48 dom_ui_->RegisterMessageCallback("observePrefs", |
| 49 NewCallback(this, &MockCoreOptionsHandler ::HandleObservePrefs)); |
| 50 dom_ui_->RegisterMessageCallback("setBooleanPref", |
| 51 NewCallback(this, &MockCoreOptionsHandler ::HandleSetBooleanPref)); |
| 52 dom_ui_->RegisterMessageCallback("setIntegerPref", |
| 53 NewCallback(this, &MockCoreOptionsHandler ::HandleSetIntegerPref)); |
| 54 dom_ui_->RegisterMessageCallback("setDoublePref", |
| 55 NewCallback(this, &MockCoreOptionsHandler ::HandleSetDoublePref)); |
| 56 dom_ui_->RegisterMessageCallback("setStringPref", |
| 57 NewCallback(this, &MockCoreOptionsHandler ::HandleSetStringPref)); |
| 58 dom_ui_->RegisterMessageCallback("setObjectPref", |
| 59 NewCallback(this, &MockCoreOptionsHandler ::HandleSetObjectPref)); |
| 60 dom_ui_->RegisterMessageCallback("clearPref", |
| 61 NewCallback(this, &MockCoreOptionsHandler ::HandleClearPref)); |
| 62 dom_ui_->RegisterMessageCallback("coreOptionsUserMetricsAction", |
| 63 NewCallback(this, &MockCoreOptionsHandler ::HandleUserMetricsAction)); |
| 64 } |
| 65 }; |
| 66 |
| 67 class SettingsDOMUITest : public DOMUITest { |
| 68 protected: |
| 69 virtual DOMMessageHandler* GetMockMessageHandler() { |
| 70 return &mock_core_options_handler_; |
| 71 } |
| 72 |
| 73 StrictMock<MockCoreOptionsHandler> mock_core_options_handler_; |
| 74 }; |
| 75 |
| 76 // Test the end to end js to DOMUI handler code path for |
| 77 // the message setBooleanPref. |
| 78 // TODO(dtseng): add more EXPECT_CALL's when updating js test. |
| 79 IN_PROC_BROWSER_TEST_F(SettingsDOMUITest, TestSetBooleanPrefTriggers) { |
| 80 // This serves as an example of a very constrained test. |
| 81 ListValue true_list_value; |
| 82 true_list_value.Append(Value::CreateStringValue("browser.show_home_button")); |
| 83 true_list_value.Append(Value::CreateStringValue("true")); |
| 84 true_list_value.Append( |
| 85 Value::CreateStringValue("Options_Homepage_HomeButton")); |
| 86 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUISettingsURL)); |
| 87 EXPECT_CALL(mock_core_options_handler_, |
| 88 HandleSetBooleanPref(Eq_ListValue(&true_list_value))); |
| 89 ASSERT_TRUE(RunDOMUITest( |
| 90 FILE_PATH_LITERAL("settings_set_boolean_pref_triggers.js"))); |
| 91 } |
| 92 |
| OLD | NEW |