| 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 |