Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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/arc/arc_util.h" | 5 #include "chrome/browser/chromeos/arc/arc_util.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| 11 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
| 12 #include "base/sys_info.h" | 12 #include "base/sys_info.h" |
| 13 #include "base/test/scoped_command_line.h" | 13 #include "base/test/scoped_command_line.h" |
| 14 #include "base/values.h" | 14 #include "base/values.h" |
| 15 #include "chrome/browser/chromeos/arc/arc_session_manager.h" | |
| 15 #include "chrome/browser/chromeos/login/supervised/supervised_user_creation_flow .h" | 16 #include "chrome/browser/chromeos/login/supervised/supervised_user_creation_flow .h" |
| 16 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" | 17 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" |
| 17 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" | 18 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
| 18 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" | 19 #include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" |
| 19 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 20 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 20 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
| 21 #include "chrome/common/pref_names.h" | 22 #include "chrome/common/pref_names.h" |
| 22 #include "chrome/test/base/testing_profile.h" | 23 #include "chrome/test/base/testing_profile.h" |
| 23 #include "components/prefs/pref_service.h" | 24 #include "components/prefs/pref_service.h" |
| 25 #include "components/prefs/testing_pref_service.h" | |
| 24 #include "components/signin/core/account_id/account_id.h" | 26 #include "components/signin/core/account_id/account_id.h" |
| 25 #include "components/sync_preferences/testing_pref_service_syncable.h" | 27 #include "components/sync_preferences/testing_pref_service_syncable.h" |
| 28 #include "components/user_manager/known_user.h" | |
| 26 #include "components/user_manager/user_manager.h" | 29 #include "components/user_manager/user_manager.h" |
| 27 #include "components/user_manager/user_names.h" | 30 #include "components/user_manager/user_names.h" |
| 28 #include "content/public/test/test_browser_thread_bundle.h" | 31 #include "content/public/test/test_browser_thread_bundle.h" |
| 29 #include "testing/gtest/include/gtest/gtest.h" | 32 #include "testing/gtest/include/gtest/gtest.h" |
| 30 | 33 |
| 31 namespace arc { | 34 namespace arc { |
| 32 namespace util { | 35 namespace util { |
| 33 | 36 |
| 34 namespace { | 37 namespace { |
| 35 | 38 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 78 } | 81 } |
| 79 | 82 |
| 80 void LogOut() { fake_user_manager_->RemoveUserFromList(account_id_); } | 83 void LogOut() { fake_user_manager_->RemoveUserFromList(account_id_); } |
| 81 | 84 |
| 82 chromeos::FakeChromeUserManager* fake_user_manager_; | 85 chromeos::FakeChromeUserManager* fake_user_manager_; |
| 83 const AccountId account_id_; | 86 const AccountId account_id_; |
| 84 | 87 |
| 85 DISALLOW_COPY_AND_ASSIGN(ScopedLogIn); | 88 DISALLOW_COPY_AND_ASSIGN(ScopedLogIn); |
| 86 }; | 89 }; |
| 87 | 90 |
| 91 class FakeUserManagerWithLocalState : public chromeos::FakeChromeUserManager { | |
| 92 public: | |
| 93 FakeUserManagerWithLocalState() | |
| 94 : test_local_state_(base::MakeUnique<TestingPrefServiceSimple>()) { | |
| 95 RegisterPrefs(test_local_state_->registry()); | |
| 96 } | |
| 97 | |
| 98 PrefService* GetLocalState() const override { | |
| 99 return test_local_state_.get(); | |
| 100 } | |
| 101 | |
| 102 private: | |
| 103 std::unique_ptr<TestingPrefServiceSimple> test_local_state_; | |
| 104 }; | |
|
xiyuan
2017/04/14 06:51:31
nit: DISALLOW_COPY_AND_ASSIGN(...)
kinaba
2017/04/14 06:57:13
Done.
| |
| 105 | |
| 88 } // namespace | 106 } // namespace |
| 89 | 107 |
| 90 class ChromeArcUtilTest : public testing::Test { | 108 class ChromeArcUtilTest : public testing::Test { |
| 91 public: | 109 public: |
| 92 ChromeArcUtilTest() = default; | 110 ChromeArcUtilTest() = default; |
| 93 ~ChromeArcUtilTest() override = default; | 111 ~ChromeArcUtilTest() override = default; |
| 94 | 112 |
| 95 void SetUp() override { | 113 void SetUp() override { |
| 96 command_line_ = base::MakeUnique<base::test::ScopedCommandLine>(); | 114 command_line_ = base::MakeUnique<base::test::ScopedCommandLine>(); |
| 97 command_line_->GetProcessCommandLine()->InitFromArgv({"", "--enable-arc"}); | 115 command_line_->GetProcessCommandLine()->InitFromArgv({"", "--enable-arc"}); |
| 98 | 116 |
| 99 user_manager_enabler_ = | 117 user_manager_enabler_ = |
| 100 base::MakeUnique<chromeos::ScopedUserManagerEnabler>( | 118 base::MakeUnique<chromeos::ScopedUserManagerEnabler>( |
| 101 new chromeos::FakeChromeUserManager()); | 119 new FakeUserManagerWithLocalState()); |
| 102 chromeos::WallpaperManager::Initialize(); | 120 chromeos::WallpaperManager::Initialize(); |
| 103 profile_ = base::MakeUnique<TestingProfile>(); | 121 profile_ = base::MakeUnique<TestingProfile>(); |
| 104 profile_->set_profile_name(kTestProfileName); | 122 profile_->set_profile_name(kTestProfileName); |
| 105 } | 123 } |
| 106 | 124 |
| 107 void TearDown() override { | 125 void TearDown() override { |
| 108 profile_.reset(); | 126 profile_.reset(); |
| 109 chromeos::WallpaperManager::Shutdown(); | 127 chromeos::WallpaperManager::Shutdown(); |
| 110 user_manager_enabler_.reset(); | 128 user_manager_enabler_.reset(); |
| 111 command_line_.reset(); | 129 command_line_.reset(); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 271 TEST_F(ChromeArcUtilTest, IsArcAllowedForProfile_DemoAccount) { | 289 TEST_F(ChromeArcUtilTest, IsArcAllowedForProfile_DemoAccount) { |
| 272 ScopedLogIn login(GetFakeUserManager(), user_manager::DemoAccountId()); | 290 ScopedLogIn login(GetFakeUserManager(), user_manager::DemoAccountId()); |
| 273 EXPECT_FALSE(IsArcAllowedForProfile(profile())); | 291 EXPECT_FALSE(IsArcAllowedForProfile(profile())); |
| 274 EXPECT_FALSE(IsArcAllowedInAppListForProfile(profile())); | 292 EXPECT_FALSE(IsArcAllowedInAppListForProfile(profile())); |
| 275 } | 293 } |
| 276 | 294 |
| 277 TEST_F(ChromeArcUtilTest, IsArcCompatibleFileSystemUsedForProfile) { | 295 TEST_F(ChromeArcUtilTest, IsArcCompatibleFileSystemUsedForProfile) { |
| 278 // TODO(kinaba): Come up with some way to test the conditions below | 296 // TODO(kinaba): Come up with some way to test the conditions below |
| 279 // causes differences in the return values of IsArcAllowedForProfile() | 297 // causes differences in the return values of IsArcAllowedForProfile() |
| 280 // and IsArcAllowedInAppListForProfile(). | 298 // and IsArcAllowedInAppListForProfile(). |
| 281 ScopedLogIn login(GetFakeUserManager(), | 299 const AccountId id(AccountId::FromUserEmailGaiaId( |
| 282 AccountId::FromUserEmailGaiaId( | 300 profile()->GetProfileUserName(), kTestGaiaId)); |
| 283 profile()->GetProfileUserName(), kTestGaiaId)); | 301 ScopedLogIn login(GetFakeUserManager(), id); |
| 284 | 302 |
| 285 // Unconfirmed + Old ARC | 303 // Unconfirmed + Old ARC |
| 286 profile()->GetPrefs()->ClearPref(prefs::kArcCompatibleFilesystemChosen); | |
| 287 base::SysInfo::SetChromeOSVersionInfoForTest( | 304 base::SysInfo::SetChromeOSVersionInfoForTest( |
| 288 "CHROMEOS_ARC_ANDROID_SDK_VERSION=23", base::Time::Now()); | 305 "CHROMEOS_ARC_ANDROID_SDK_VERSION=23", base::Time::Now()); |
| 289 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); | 306 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); |
| 290 | 307 |
| 291 // Unconfirmed + New ARC | 308 // Unconfirmed + New ARC |
| 292 base::SysInfo::SetChromeOSVersionInfoForTest( | 309 base::SysInfo::SetChromeOSVersionInfoForTest( |
| 293 "CHROMEOS_ARC_ANDROID_SDK_VERSION=25", base::Time::Now()); | 310 "CHROMEOS_ARC_ANDROID_SDK_VERSION=25", base::Time::Now()); |
| 294 EXPECT_FALSE(IsArcCompatibleFileSystemUsedForProfile(profile())); | 311 EXPECT_FALSE(IsArcCompatibleFileSystemUsedForProfile(profile())); |
| 295 | 312 |
| 296 // Old FS + Old ARC | 313 // Old FS + Old ARC |
| 297 profile()->GetPrefs()->SetBoolean(prefs::kArcCompatibleFilesystemChosen, | 314 user_manager::known_user::SetIntegerPref( |
| 298 false); | 315 id, prefs::kArcCompatibleFilesystemChosen, kFileSystemIncompatible); |
| 299 base::SysInfo::SetChromeOSVersionInfoForTest( | 316 base::SysInfo::SetChromeOSVersionInfoForTest( |
| 300 "CHROMEOS_ARC_ANDROID_SDK_VERSION=23", base::Time::Now()); | 317 "CHROMEOS_ARC_ANDROID_SDK_VERSION=23", base::Time::Now()); |
| 301 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); | 318 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); |
| 302 | 319 |
| 303 // Old FS + New ARC | 320 // Old FS + New ARC |
| 304 base::SysInfo::SetChromeOSVersionInfoForTest( | 321 base::SysInfo::SetChromeOSVersionInfoForTest( |
| 305 "CHROMEOS_ARC_ANDROID_SDK_VERSION=25", base::Time::Now()); | 322 "CHROMEOS_ARC_ANDROID_SDK_VERSION=25", base::Time::Now()); |
| 306 EXPECT_FALSE(IsArcCompatibleFileSystemUsedForProfile(profile())); | 323 EXPECT_FALSE(IsArcCompatibleFileSystemUsedForProfile(profile())); |
| 307 | 324 |
| 308 // New FS + Old ARC | 325 // New FS + Old ARC |
| 309 profile()->GetPrefs()->SetBoolean(prefs::kArcCompatibleFilesystemChosen, | 326 user_manager::known_user::SetIntegerPref( |
| 310 true); | 327 id, prefs::kArcCompatibleFilesystemChosen, kFileSystemCompatible); |
| 311 base::SysInfo::SetChromeOSVersionInfoForTest( | 328 base::SysInfo::SetChromeOSVersionInfoForTest( |
| 312 "CHROMEOS_ARC_ANDROID_SDK_VERSION=23", base::Time::Now()); | 329 "CHROMEOS_ARC_ANDROID_SDK_VERSION=23", base::Time::Now()); |
| 313 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); | 330 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); |
| 314 | 331 |
| 315 // New FS + New ARC | 332 // New FS + New ARC |
| 316 base::SysInfo::SetChromeOSVersionInfoForTest( | 333 base::SysInfo::SetChromeOSVersionInfoForTest( |
| 317 "CHROMEOS_ARC_ANDROID_SDK_VERSION=25", base::Time::Now()); | 334 "CHROMEOS_ARC_ANDROID_SDK_VERSION=25", base::Time::Now()); |
| 318 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); | 335 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); |
| 336 | |
| 337 // New FS (User notified) + Old ARC | |
| 338 user_manager::known_user::SetIntegerPref( | |
| 339 id, prefs::kArcCompatibleFilesystemChosen, | |
| 340 kFileSystemCompatibleAndNotified); | |
| 341 base::SysInfo::SetChromeOSVersionInfoForTest( | |
| 342 "CHROMEOS_ARC_ANDROID_SDK_VERSION=23", base::Time::Now()); | |
| 343 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); | |
| 344 | |
| 345 // New FS (User notified) + New ARC | |
| 346 base::SysInfo::SetChromeOSVersionInfoForTest( | |
| 347 "CHROMEOS_ARC_ANDROID_SDK_VERSION=25", base::Time::Now()); | |
| 348 EXPECT_TRUE(IsArcCompatibleFileSystemUsedForProfile(profile())); | |
| 319 } | 349 } |
| 320 | 350 |
| 321 TEST_F(ChromeArcUtilTest, ArcPlayStoreEnabledForProfile) { | 351 TEST_F(ChromeArcUtilTest, ArcPlayStoreEnabledForProfile) { |
| 322 // Ensure IsAllowedForProfile() true. | 352 // Ensure IsAllowedForProfile() true. |
| 323 ScopedLogIn login(GetFakeUserManager(), | 353 ScopedLogIn login(GetFakeUserManager(), |
| 324 AccountId::FromUserEmailGaiaId( | 354 AccountId::FromUserEmailGaiaId( |
| 325 profile()->GetProfileUserName(), kTestGaiaId)); | 355 profile()->GetProfileUserName(), kTestGaiaId)); |
| 326 ASSERT_TRUE(IsArcAllowedForProfile(profile())); | 356 ASSERT_TRUE(IsArcAllowedForProfile(profile())); |
| 327 | 357 |
| 328 // By default, Google Play Store is disabled. | 358 // By default, Google Play Store is disabled. |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 414 EXPECT_FALSE(AreArcAllOptInPreferencesManagedForProfile(profile())); | 444 EXPECT_FALSE(AreArcAllOptInPreferencesManagedForProfile(profile())); |
| 415 | 445 |
| 416 // Both OptIn prefs are set to managed values, and the function returns true. | 446 // Both OptIn prefs are set to managed values, and the function returns true. |
| 417 profile()->GetTestingPrefService()->SetManagedPref( | 447 profile()->GetTestingPrefService()->SetManagedPref( |
| 418 prefs::kArcBackupRestoreEnabled, base::MakeUnique<base::Value>(false)); | 448 prefs::kArcBackupRestoreEnabled, base::MakeUnique<base::Value>(false)); |
| 419 EXPECT_TRUE(AreArcAllOptInPreferencesManagedForProfile(profile())); | 449 EXPECT_TRUE(AreArcAllOptInPreferencesManagedForProfile(profile())); |
| 420 } | 450 } |
| 421 | 451 |
| 422 } // namespace util | 452 } // namespace util |
| 423 } // namespace arc | 453 } // namespace arc |
| OLD | NEW |