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

Side by Side Diff: chrome/browser/chromeos/login/oobe_localization_browsertest.cc

Issue 644413003: Replace MockStatisticsProvider with FakeStatisticsProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add clarifying comments. Created 6 years, 2 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "base/prefs/pref_service.h" 6 #include "base/prefs/pref_service.h"
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "base/task_runner.h" 8 #include "base/task_runner.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
11 #include "chrome/browser/chromeos/customization_document.h" 11 #include "chrome/browser/chromeos/customization_document.h"
12 #include "chrome/browser/chromeos/input_method/input_method_util.h" 12 #include "chrome/browser/chromeos/input_method/input_method_util.h"
13 #include "chrome/browser/chromeos/login/login_manager_test.h" 13 #include "chrome/browser/chromeos/login/login_manager_test.h"
14 #include "chrome/browser/chromeos/login/login_wizard.h" 14 #include "chrome/browser/chromeos/login/login_wizard.h"
15 #include "chrome/browser/chromeos/login/test/js_checker.h" 15 #include "chrome/browser/chromeos/login/test/js_checker.h"
16 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" 16 #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
17 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
18 #include "chrome/test/base/in_process_browser_test.h" 18 #include "chrome/test/base/in_process_browser_test.h"
19 #include "chromeos/ime/extension_ime_util.h" 19 #include "chromeos/ime/extension_ime_util.h"
20 #include "chromeos/ime/input_method_manager.h" 20 #include "chromeos/ime/input_method_manager.h"
21 #include "chromeos/ime/input_method_whitelist.h" 21 #include "chromeos/ime/input_method_whitelist.h"
22 #include "chromeos/system/fake_statistics_provider.h"
22 #include "chromeos/system/statistics_provider.h" 23 #include "chromeos/system/statistics_provider.h"
23 #include "content/public/browser/notification_service.h" 24 #include "content/public/browser/notification_service.h"
24 #include "content/public/browser/web_contents.h" 25 #include "content/public/browser/web_contents.h"
25 #include "content/public/test/browser_test_utils.h" 26 #include "content/public/test/browser_test_utils.h"
26 #include "content/public/test/test_utils.h" 27 #include "content/public/test/test_utils.h"
27 28
28 namespace base { 29 namespace base {
29 class TaskRunner; 30 class TaskRunner;
30 } 31 }
31 32
32 namespace chromeos { 33 namespace chromeos {
33 34
34 namespace { 35 namespace {
35 36
36 // OOBE constants. 37 // OOBE constants.
37 const char* kLocaleSelect = "language-select"; 38 const char* kLocaleSelect = "language-select";
38 const char* kKeyboardSelect = "keyboard-select"; 39 const char* kKeyboardSelect = "keyboard-select";
39 40
40 const char* kUSLayout = "xkb:us::eng"; 41 const char* kUSLayout = "xkb:us::eng";
41 42
42 } 43 }
43 44
44 namespace system {
45
46 // Custom StatisticsProvider that will return each set of region settings.
47 class FakeStatisticsProvider : public StatisticsProvider {
48 public:
49 virtual ~FakeStatisticsProvider() {}
50
51 void set_locale(const std::string& locale) {
52 initial_locale_ = locale;
53 }
54
55 void set_keyboard_layout(const std::string& keyboard_layout) {
56 keyboard_layout_ = keyboard_layout;
57 }
58
59 private:
60 // StatisticsProvider overrides.
61 virtual void StartLoadingMachineStatistics(
62 const scoped_refptr<base::TaskRunner>& file_task_runner,
63 bool load_oem_manifest) override {
64 }
65
66 // Populates the named machine statistic for initial_locale and
67 // keyboard_layout only.
68 virtual bool GetMachineStatistic(const std::string& name,
69 std::string* result) override {
70 if (name == "initial_locale")
71 *result = initial_locale_;
72 else if (name == "keyboard_layout")
73 *result = keyboard_layout_;
74 else
75 return false;
76
77 return true;
78 }
79
80 virtual bool GetMachineFlag(const std::string& name, bool* result) override {
81 return false;
82 }
83
84 virtual void Shutdown() override {
85 }
86
87 std::string initial_locale_;
88 std::string keyboard_layout_;
89 };
90
91 } // namespace system
92
93 struct LocalizationTestParams { 45 struct LocalizationTestParams {
94 const char* initial_locale; 46 const char* initial_locale;
95 const char* keyboard_layout; 47 const char* keyboard_layout;
96 const char* expected_locale; 48 const char* expected_locale;
97 const char* expected_keyboard_layout; 49 const char* expected_keyboard_layout;
98 const char* expected_keyboard_select_control; 50 const char* expected_keyboard_select_control;
99 } const oobe_localization_test_parameters[] = { 51 } const oobe_localization_test_parameters[] = {
100 // ------------------ Non-Latin setup 52 // ------------------ Non-Latin setup
101 // For a non-Latin keyboard layout like Russian, we expect to see the US 53 // For a non-Latin keyboard layout like Russian, we expect to see the US
102 // keyboard. 54 // keyboard.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 "en-AU", 107 "en-AU",
156 "xkb:us::eng", 108 "xkb:us::eng",
157 "xkb:us::eng,[xkb:gb:extd:eng,xkb:gb:dvorak:eng]"}, 109 "xkb:us::eng,[xkb:gb:extd:eng,xkb:gb:dvorak:eng]"},
158 }; 110 };
159 111
160 class OobeLocalizationTest 112 class OobeLocalizationTest
161 : public LoginManagerTest, 113 : public LoginManagerTest,
162 public testing::WithParamInterface<const LocalizationTestParams*> { 114 public testing::WithParamInterface<const LocalizationTestParams*> {
163 public: 115 public:
164 OobeLocalizationTest(); 116 OobeLocalizationTest();
165 virtual ~OobeLocalizationTest();
166 117
167 // Verifies that the comma-separated |values| corresponds with the first 118 // Verifies that the comma-separated |values| corresponds with the first
168 // values in |select_id|, optionally checking for an options group label after 119 // values in |select_id|, optionally checking for an options group label after
169 // the first set of options. 120 // the first set of options.
170 bool VerifyInitialOptions(const char* select_id, 121 bool VerifyInitialOptions(const char* select_id,
171 const char* values, 122 const char* values,
172 bool check_separator); 123 bool check_separator);
173 124
174 // Verifies that |value| exists in |select_id|. 125 // Verifies that |value| exists in |select_id|.
175 bool VerifyOptionExists(const char* select_id, const char* value); 126 bool VerifyOptionExists(const char* select_id, const char* value);
(...skipping 13 matching lines...) Expand all
189 chromeos::OobeUI* oobe_ui = host->GetOobeUI(); 140 chromeos::OobeUI* oobe_ui = host->GetOobeUI();
190 if (!oobe_ui) 141 if (!oobe_ui)
191 return; 142 return;
192 base::RunLoop run_loop; 143 base::RunLoop run_loop;
193 const bool oobe_ui_ready = oobe_ui->IsJSReady(run_loop.QuitClosure()); 144 const bool oobe_ui_ready = oobe_ui->IsJSReady(run_loop.QuitClosure());
194 if (!oobe_ui_ready) 145 if (!oobe_ui_ready)
195 run_loop.Run(); 146 run_loop.Run();
196 } 147 }
197 148
198 private: 149 private:
199 scoped_ptr<system::FakeStatisticsProvider> statistics_provider_; 150 system::ScopedFakeStatisticsProvider fake_statistics_provider_;
200 test::JSChecker checker; 151 test::JSChecker checker;
201 152
202 DISALLOW_COPY_AND_ASSIGN(OobeLocalizationTest); 153 DISALLOW_COPY_AND_ASSIGN(OobeLocalizationTest);
203 }; 154 };
204 155
205 OobeLocalizationTest::OobeLocalizationTest() : LoginManagerTest(false) { 156 OobeLocalizationTest::OobeLocalizationTest() : LoginManagerTest(false) {
206 statistics_provider_.reset(new system::FakeStatisticsProvider()); 157 fake_statistics_provider_.SetMachineStatistic("initial_locale",
207 // Set the instance returned by GetInstance() for testing. 158 GetParam()->initial_locale);
208 system::StatisticsProvider::SetTestProvider(statistics_provider_.get()); 159 fake_statistics_provider_.SetMachineStatistic("keyboard_layout",
209 160 GetParam()->keyboard_layout);
210 statistics_provider_->set_locale(GetParam()->initial_locale);
211 statistics_provider_->set_keyboard_layout(GetParam()->keyboard_layout);
212 }
213
214 OobeLocalizationTest::~OobeLocalizationTest() {
215 system::StatisticsProvider::SetTestProvider(NULL);
216 } 161 }
217 162
218 bool OobeLocalizationTest::VerifyInitialOptions(const char* select_id, 163 bool OobeLocalizationTest::VerifyInitialOptions(const char* select_id,
219 const char* values, 164 const char* values,
220 bool check_separator) { 165 bool check_separator) {
221 const std::string expression = base::StringPrintf( 166 const std::string expression = base::StringPrintf(
222 "(function () {\n" 167 "(function () {\n"
223 " var select = document.querySelector('#%s');\n" 168 " var select = document.querySelector('#%s');\n"
224 " if (!select)\n" 169 " if (!select)\n"
225 " return false;\n" 170 " return false;\n"
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 RunLocalizationTest(); 347 RunLocalizationTest();
403 } 348 }
404 349
405 INSTANTIATE_TEST_CASE_P( 350 INSTANTIATE_TEST_CASE_P(
406 StructSequence, 351 StructSequence,
407 OobeLocalizationTest, 352 OobeLocalizationTest,
408 testing::Range(&oobe_localization_test_parameters[0], 353 testing::Range(&oobe_localization_test_parameters[0],
409 &oobe_localization_test_parameters[arraysize( 354 &oobe_localization_test_parameters[arraysize(
410 oobe_localization_test_parameters)])); 355 oobe_localization_test_parameters)]));
411 } // namespace chromeos 356 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698