OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/browser/chromeos/customization_document.h" | 5 #include "chrome/browser/chromeos/customization_document.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/prefs/testing_pref_service.h" | 8 #include "base/prefs/testing_pref_service.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
11 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" | 11 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" |
12 #include "chrome/browser/extensions/external_provider_impl.h" | 12 #include "chrome/browser/extensions/external_provider_impl.h" |
13 #include "chrome/browser/prefs/browser_prefs.h" | 13 #include "chrome/browser/prefs/browser_prefs.h" |
14 #include "chrome/browser/prefs/pref_service_mock_factory.h" | 14 #include "chrome/browser/prefs/pref_service_mock_factory.h" |
15 #include "chrome/browser/prefs/pref_service_syncable.h" | 15 #include "chrome/browser/prefs/pref_service_syncable.h" |
16 #include "chrome/browser/ui/app_list/app_list_syncable_service.h" | 16 #include "chrome/browser/ui/app_list/app_list_syncable_service.h" |
17 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" | 17 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h" |
18 #include "chrome/test/base/testing_browser_process.h" | 18 #include "chrome/test/base/testing_browser_process.h" |
19 #include "chrome/test/base/testing_profile.h" | 19 #include "chrome/test/base/testing_profile.h" |
20 #include "chromeos/dbus/dbus_thread_manager.h" | 20 #include "chromeos/dbus/dbus_thread_manager.h" |
21 #include "chromeos/network/network_handler.h" | 21 #include "chromeos/network/network_handler.h" |
22 #include "chromeos/network/network_state.h" | 22 #include "chromeos/network/network_state.h" |
23 #include "chromeos/network/network_state_handler.h" | 23 #include "chromeos/network/network_state_handler.h" |
24 #include "chromeos/system/mock_statistics_provider.h" | 24 #include "chromeos/system/fake_statistics_provider.h" |
25 #include "components/pref_registry/pref_registry_syncable.h" | 25 #include "components/pref_registry/pref_registry_syncable.h" |
26 #include "content/public/test/test_browser_thread_bundle.h" | 26 #include "content/public/test/test_browser_thread_bundle.h" |
27 #include "extensions/common/extension.h" | 27 #include "extensions/common/extension.h" |
28 #include "extensions/common/manifest.h" | 28 #include "extensions/common/manifest.h" |
29 #include "net/http/http_response_headers.h" | 29 #include "net/http/http_response_headers.h" |
30 #include "net/http/http_status_code.h" | 30 #include "net/http/http_status_code.h" |
31 #include "net/url_request/test_url_fetcher_factory.h" | 31 #include "net/url_request/test_url_fetcher_factory.h" |
32 #include "net/url_request/url_request_status.h" | 32 #include "net/url_request/url_request_status.h" |
33 #include "testing/gmock/include/gmock/gmock.h" | 33 #include "testing/gmock/include/gmock/gmock.h" |
34 #include "testing/gtest/include/gtest/gtest.h" | 34 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 " }\n" | 94 " }\n" |
95 " }\n" | 95 " }\n" |
96 "}"; | 96 "}"; |
97 | 97 |
98 const char kDummyCustomizationID[] = "test-dummy"; | 98 const char kDummyCustomizationID[] = "test-dummy"; |
99 | 99 |
100 } // anonymous namespace | 100 } // anonymous namespace |
101 | 101 |
102 namespace chromeos { | 102 namespace chromeos { |
103 | 103 |
104 using ::testing::_; | |
105 using ::testing::DoAll; | 104 using ::testing::DoAll; |
106 using ::testing::NotNull; | 105 using ::testing::NotNull; |
107 using ::testing::Return; | 106 using ::testing::Return; |
108 using ::testing::SetArgumentPointee; | 107 using ::testing::SetArgumentPointee; |
| 108 using ::testing::_; |
109 | 109 |
110 TEST(StartupCustomizationDocumentTest, Basic) { | 110 TEST(StartupCustomizationDocumentTest, Basic) { |
111 system::MockStatisticsProvider mock_statistics_provider; | 111 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
112 EXPECT_CALL(mock_statistics_provider, GetMachineStatistic(_, NotNull())) | 112 |
113 .WillRepeatedly(Return(false)); | 113 // hardware_class selects the appropriate entry in hwid_map in the manifest. |
114 EXPECT_CALL(mock_statistics_provider, | 114 fake_statistics_provider.SetMachineStatistic("hardware_class", "Mario 12345"); |
115 GetMachineStatistic(std::string("hardware_class"), NotNull())) | 115 StartupCustomizationDocument customization(&fake_statistics_provider, |
116 .WillOnce(DoAll(SetArgumentPointee<1>(std::string("Mario 12345")), | |
117 Return(true))); | |
118 StartupCustomizationDocument customization(&mock_statistics_provider, | |
119 kGoodStartupManifest); | 116 kGoodStartupManifest); |
120 EXPECT_EQ("ru-RU", customization.initial_locale()); | 117 EXPECT_EQ("ru-RU", customization.initial_locale()); |
121 EXPECT_EQ("Europe/Moscow", customization.initial_timezone()); | 118 EXPECT_EQ("Europe/Moscow", customization.initial_timezone()); |
122 EXPECT_EQ("xkb:ru::rus", customization.keyboard_layout()); | 119 EXPECT_EQ("xkb:ru::rus", customization.keyboard_layout()); |
123 | 120 |
124 EXPECT_EQ("file:///opt/oem/eula/en-US/eula.html", | 121 EXPECT_EQ("file:///opt/oem/eula/en-US/eula.html", |
125 customization.GetEULAPage("en-US")); | 122 customization.GetEULAPage("en-US")); |
126 EXPECT_EQ("file:///opt/oem/eula/ru-RU/eula.html", | 123 EXPECT_EQ("file:///opt/oem/eula/ru-RU/eula.html", |
127 customization.GetEULAPage("ru-RU")); | 124 customization.GetEULAPage("ru-RU")); |
128 EXPECT_EQ("file:///opt/oem/eula/en/eula.html", | 125 EXPECT_EQ("file:///opt/oem/eula/en/eula.html", |
129 customization.GetEULAPage("ja")); | 126 customization.GetEULAPage("ja")); |
130 } | 127 } |
131 | 128 |
132 TEST(StartupCustomizationDocumentTest, VPD) { | 129 TEST(StartupCustomizationDocumentTest, VPD) { |
133 system::MockStatisticsProvider mock_statistics_provider; | 130 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
134 EXPECT_CALL(mock_statistics_provider, | 131 |
135 GetMachineStatistic(std::string("hardware_class"), NotNull())) | 132 // hardware_class selects the appropriate entry in hwid_map in the manifest. |
136 .WillOnce(DoAll(SetArgumentPointee<1>(std::string("Mario 12345")), | 133 fake_statistics_provider.SetMachineStatistic("hardware_class", "Mario 12345"); |
137 Return(true))); | 134 fake_statistics_provider.SetMachineStatistic("initial_locale", "ja"); |
138 EXPECT_CALL(mock_statistics_provider, | 135 fake_statistics_provider.SetMachineStatistic("initial_timezone", |
139 GetMachineStatistic(std::string("initial_locale"), NotNull())) | 136 "Asia/Tokyo"); |
140 .WillOnce(DoAll(SetArgumentPointee<1>(std::string("ja")), | 137 fake_statistics_provider.SetMachineStatistic("keyboard_layout", "mozc-jp"); |
141 Return(true))); | 138 StartupCustomizationDocument customization(&fake_statistics_provider, |
142 EXPECT_CALL(mock_statistics_provider, | |
143 GetMachineStatistic(std::string("initial_timezone"), NotNull())) | |
144 .WillOnce(DoAll(SetArgumentPointee<1>(std::string("Asia/Tokyo")), | |
145 Return(true))); | |
146 EXPECT_CALL(mock_statistics_provider, | |
147 GetMachineStatistic(std::string("keyboard_layout"), NotNull())) | |
148 .WillOnce(DoAll(SetArgumentPointee<1>(std::string("mozc-jp")), | |
149 Return(true))); | |
150 StartupCustomizationDocument customization(&mock_statistics_provider, | |
151 kGoodStartupManifest); | 139 kGoodStartupManifest); |
152 EXPECT_TRUE(customization.IsReady()); | 140 EXPECT_TRUE(customization.IsReady()); |
153 EXPECT_EQ("ja", customization.initial_locale()); | 141 EXPECT_EQ("ja", customization.initial_locale()); |
154 EXPECT_EQ("Asia/Tokyo", customization.initial_timezone()); | 142 EXPECT_EQ("Asia/Tokyo", customization.initial_timezone()); |
155 EXPECT_EQ("mozc-jp", customization.keyboard_layout()); | 143 EXPECT_EQ("mozc-jp", customization.keyboard_layout()); |
156 } | 144 } |
157 | 145 |
158 TEST(StartupCustomizationDocumentTest, BadManifest) { | 146 TEST(StartupCustomizationDocumentTest, BadManifest) { |
159 system::MockStatisticsProvider mock_statistics_provider; | 147 system::ScopedFakeStatisticsProvider fake_statistics_provider; |
160 StartupCustomizationDocument customization(&mock_statistics_provider, | 148 StartupCustomizationDocument customization(&fake_statistics_provider, |
161 kBadManifest); | 149 kBadManifest); |
162 EXPECT_FALSE(customization.IsReady()); | 150 EXPECT_FALSE(customization.IsReady()); |
163 } | 151 } |
164 | 152 |
165 class TestURLFetcherCallback { | 153 class TestURLFetcherCallback { |
166 public: | 154 public: |
167 scoped_ptr<net::FakeURLFetcher> CreateURLFetcher( | 155 scoped_ptr<net::FakeURLFetcher> CreateURLFetcher( |
168 const GURL& url, | 156 const GURL& url, |
169 net::URLFetcherDelegate* d, | 157 net::URLFetcherDelegate* d, |
170 const std::string& response_data, | 158 const std::string& response_data, |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 ServicesCustomizationDocumentTest() | 202 ServicesCustomizationDocumentTest() |
215 : factory_(NULL, | 203 : factory_(NULL, |
216 base::Bind(&TestURLFetcherCallback::CreateURLFetcher, | 204 base::Bind(&TestURLFetcherCallback::CreateURLFetcher, |
217 base::Unretained(&url_callback_))) { | 205 base::Unretained(&url_callback_))) { |
218 } | 206 } |
219 | 207 |
220 // testing::Test: | 208 // testing::Test: |
221 virtual void SetUp() override { | 209 virtual void SetUp() override { |
222 ServicesCustomizationDocument::InitializeForTesting(); | 210 ServicesCustomizationDocument::InitializeForTesting(); |
223 | 211 |
224 EXPECT_CALL(mock_statistics_provider_, GetMachineStatistic(_, NotNull())) | |
225 .WillRepeatedly(Return(false)); | |
226 chromeos::system::StatisticsProvider::SetTestProvider( | |
227 &mock_statistics_provider_); | |
228 | |
229 DBusThreadManager::Initialize(); | 212 DBusThreadManager::Initialize(); |
230 NetworkHandler::Initialize(); | 213 NetworkHandler::Initialize(); |
231 RunUntilIdle(); | 214 RunUntilIdle(); |
232 const NetworkState* default_network = | 215 const NetworkState* default_network = |
233 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); | 216 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
234 std::string default_network_path = | 217 std::string default_network_path = |
235 default_network ? default_network->path() : ""; | 218 default_network ? default_network->path() : ""; |
236 | 219 |
237 NetworkPortalDetector::InitializeForTesting(&network_portal_detector_); | 220 NetworkPortalDetector::InitializeForTesting(&network_portal_detector_); |
238 NetworkPortalDetector::CaptivePortalState online_state; | 221 NetworkPortalDetector::CaptivePortalState online_state; |
239 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; | 222 online_state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; |
240 online_state.response_code = 204; | 223 online_state.response_code = 204; |
241 std::string guid = | 224 std::string guid = |
242 default_network ? default_network->guid() : std::string(); | 225 default_network ? default_network->guid() : std::string(); |
243 network_portal_detector_.SetDefaultNetworkForTesting(guid); | 226 network_portal_detector_.SetDefaultNetworkForTesting(guid); |
244 if (!guid.empty()) { | 227 if (!guid.empty()) { |
245 network_portal_detector_.SetDetectionResultsForTesting( | 228 network_portal_detector_.SetDetectionResultsForTesting( |
246 guid, online_state); | 229 guid, online_state); |
247 } | 230 } |
248 | 231 |
249 TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_); | 232 TestingBrowserProcess::GetGlobal()->SetLocalState(&local_state_); |
250 ServicesCustomizationDocument::RegisterPrefs(local_state_.registry()); | 233 ServicesCustomizationDocument::RegisterPrefs(local_state_.registry()); |
251 } | 234 } |
252 | 235 |
253 virtual void TearDown() override { | 236 virtual void TearDown() override { |
254 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); | 237 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); |
255 NetworkHandler::Shutdown(); | 238 NetworkHandler::Shutdown(); |
256 DBusThreadManager::Shutdown(); | 239 DBusThreadManager::Shutdown(); |
257 NetworkPortalDetector::InitializeForTesting(NULL); | 240 NetworkPortalDetector::InitializeForTesting(NULL); |
258 chromeos::system::StatisticsProvider::SetTestProvider(NULL); | |
259 | 241 |
260 ServicesCustomizationDocument::ShutdownForTesting(); | 242 ServicesCustomizationDocument::ShutdownForTesting(); |
261 } | 243 } |
262 | 244 |
263 void RunUntilIdle() { | 245 void RunUntilIdle() { |
264 base::RunLoop().RunUntilIdle(); | 246 base::RunLoop().RunUntilIdle(); |
265 } | 247 } |
266 | 248 |
267 void AddCustomizationIdToVp(const std::string& id) { | 249 void AddCustomizationIdToVp(const std::string& id) { |
268 EXPECT_CALL(mock_statistics_provider_, | 250 fake_statistics_provider_.SetMachineStatistic(system::kCustomizationIdKey, |
269 GetMachineStatistic(system::kCustomizationIdKey, NotNull())) | 251 id); |
270 .WillOnce(DoAll(SetArgumentPointee<1>(id), | |
271 Return(true))); | |
272 } | 252 } |
273 | 253 |
274 void AddExpectedManifest(const std::string& id, | 254 void AddExpectedManifest(const std::string& id, |
275 const std::string& manifest) { | 255 const std::string& manifest) { |
276 GURL url(base::StringPrintf(ServicesCustomizationDocument::kManifestUrl, | 256 GURL url(base::StringPrintf(ServicesCustomizationDocument::kManifestUrl, |
277 id.c_str())); | 257 id.c_str())); |
278 factory_.SetFakeResponse(url, | 258 factory_.SetFakeResponse(url, |
279 manifest, | 259 manifest, |
280 net::HTTP_OK, | 260 net::HTTP_OK, |
281 net::URLRequestStatus::SUCCESS); | 261 net::URLRequestStatus::SUCCESS); |
(...skipping 20 matching lines...) Expand all Loading... |
302 scoped_refptr<user_prefs::PrefRegistrySyncable> registry( | 282 scoped_refptr<user_prefs::PrefRegistrySyncable> registry( |
303 new user_prefs::PrefRegistrySyncable); | 283 new user_prefs::PrefRegistrySyncable); |
304 scoped_ptr<PrefServiceSyncable> prefs( | 284 scoped_ptr<PrefServiceSyncable> prefs( |
305 factory.CreateSyncable(registry.get())); | 285 factory.CreateSyncable(registry.get())); |
306 chrome::RegisterUserProfilePrefs(registry.get()); | 286 chrome::RegisterUserProfilePrefs(registry.get()); |
307 profile_builder.SetPrefService(prefs.Pass()); | 287 profile_builder.SetPrefService(prefs.Pass()); |
308 return profile_builder.Build(); | 288 return profile_builder.Build(); |
309 } | 289 } |
310 | 290 |
311 private: | 291 private: |
312 system::MockStatisticsProvider mock_statistics_provider_; | 292 system::ScopedFakeStatisticsProvider fake_statistics_provider_; |
313 content::TestBrowserThreadBundle thread_bundle_; | 293 content::TestBrowserThreadBundle thread_bundle_; |
314 TestingPrefServiceSimple local_state_; | 294 TestingPrefServiceSimple local_state_; |
315 TestURLFetcherCallback url_callback_; | 295 TestURLFetcherCallback url_callback_; |
316 net::FakeURLFetcherFactory factory_; | 296 net::FakeURLFetcherFactory factory_; |
317 NetworkPortalDetectorTestImpl network_portal_detector_; | 297 NetworkPortalDetectorTestImpl network_portal_detector_; |
318 }; | 298 }; |
319 | 299 |
320 TEST_F(ServicesCustomizationDocumentTest, Basic) { | 300 TEST_F(ServicesCustomizationDocumentTest, Basic) { |
321 AddCustomizationIdToVp(kDummyCustomizationID); | 301 AddCustomizationIdToVp(kDummyCustomizationID); |
322 AddExpectedManifest(kDummyCustomizationID, kGoodServicesManifest); | 302 AddExpectedManifest(kDummyCustomizationID, kGoodServicesManifest); |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 EXPECT_CALL(visitor, OnExternalExtensionUpdateUrlFound(_, _, _, _, _, _)) | 456 EXPECT_CALL(visitor, OnExternalExtensionUpdateUrlFound(_, _, _, _, _, _)) |
477 .Times(0); | 457 .Times(0); |
478 EXPECT_CALL(visitor, OnExternalProviderReady(_)) | 458 EXPECT_CALL(visitor, OnExternalProviderReady(_)) |
479 .Times(1); | 459 .Times(1); |
480 | 460 |
481 RunUntilIdle(); | 461 RunUntilIdle(); |
482 EXPECT_TRUE(doc->IsReady()); | 462 EXPECT_TRUE(doc->IsReady()); |
483 } | 463 } |
484 | 464 |
485 } // namespace chromeos | 465 } // namespace chromeos |
OLD | NEW |