Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1050)

Side by Side Diff: chrome/browser/ui/webui/settings_browsertest.cc

Issue 7237030: Added options browser_tests using the generator and js handler framework. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase. Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698