Chromium Code Reviews| Index: chrome/browser/chromeos/arc/arc_session_manager_unittest.cc |
| diff --git a/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc b/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc |
| index 23bfe6d9d8986fd7b9789010d37c3a567f425683..a9bdaacd67e87610bee9e5fc4898a5c27d091f59 100644 |
| --- a/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc |
| +++ b/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc |
| @@ -11,10 +11,12 @@ |
| #include "base/files/file_path.h" |
| #include "base/files/file_util.h" |
| #include "base/files/scoped_temp_dir.h" |
| +#include "base/logging.h" |
| #include "base/macros.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/observer_list.h" |
| #include "base/run_loop.h" |
| +#include "base/values.h" |
| #include "chrome/browser/chromeos/arc/arc_optin_uma.h" |
| #include "chrome/browser/chromeos/arc/arc_session_manager.h" |
| #include "chrome/browser/chromeos/arc/optin/arc_terms_of_service_oobe_negotiator.h" |
| @@ -42,6 +44,7 @@ |
| #include "components/arc/arc_util.h" |
| #include "components/arc/test/fake_arc_session.h" |
| #include "components/prefs/pref_service.h" |
| +#include "components/prefs/testing_pref_service.h" |
| #include "components/signin/core/account_id/account_id.h" |
| #include "components/sync/model/fake_sync_change_processor.h" |
| #include "components/sync/model/sync_error_factory_mock.h" |
| @@ -442,6 +445,62 @@ TEST_F(ArcSessionManagerTest, SignInStatus) { |
| arc_session_manager()->Shutdown(); |
| } |
| +TEST_F(ArcSessionManagerTest, SkippingTermsDueToPolicies) { |
|
hidehiko
2017/02/09 15:28:04
Could you use parameterized test so that what fail
emaxx
2017/02/10 15:40:16
Quick question: do you think this will be better,
hidehiko
2017/02/14 11:51:36
I do not think using WithParamInterface bloats the
emaxx
2017/02/15 03:40:59
Done. Thanks for the detailed comment!
|
| + sync_preferences::TestingPrefServiceSyncable* const prefs = |
| + profile()->GetTestingPrefService(); |
| + |
| + // Values of the ArcBackupRestoreEnabled pref to be tested. |
| + const std::vector<base::Value> test_backup_pref_values = { |
| + base::Value(), base::Value(false), base::Value(true)}; |
| + // Values of the ArcLocationServiceEnabled pref to be tested. |
| + const std::vector<base::Value> test_location_pref_values = { |
| + base::Value(), base::Value(false), base::Value(true)}; |
| + |
| + for (const auto& backup_pref_value : test_backup_pref_values) { |
| + for (const auto& location_pref_value : test_location_pref_values) { |
| + EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); |
| + EXPECT_FALSE(prefs->GetBoolean(prefs::kArcTermsAccepted)); |
| + |
| + // Set ARC to be managed. |
| + prefs->SetManagedPref(prefs::kArcEnabled, |
| + base::MakeUnique<base::Value>(true).release()); |
| + |
| + // Assign test values to the prefs. |
| + if (backup_pref_value.is_bool()) { |
| + prefs->SetManagedPref(prefs::kArcBackupRestoreEnabled, |
| + backup_pref_value.DeepCopy()); |
| + } else { |
| + prefs->RemoveManagedPref(prefs::kArcBackupRestoreEnabled); |
| + } |
| + if (location_pref_value.is_bool()) { |
| + prefs->SetManagedPref(prefs::kArcLocationServiceEnabled, |
| + location_pref_value.DeepCopy()); |
| + } else { |
| + prefs->RemoveManagedPref(prefs::kArcLocationServiceEnabled); |
| + } |
| + |
| + arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); |
| + EXPECT_TRUE(arc_session_manager()->IsArcEnabled()); |
| + EXPECT_TRUE(arc_session_manager()->IsArcManaged()); |
| + |
| + // Terms of Service should be shown if either ArcBackupRestoreEnabled or |
| + // ArcLocationServiceEnabled is unmanaged. |
| + const ArcSessionManager::State expected_state = |
| + backup_pref_value.is_bool() && location_pref_value.is_bool() |
| + ? ArcSessionManager::State::ACTIVE |
| + : ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE; |
| + EXPECT_EQ(expected_state, arc_session_manager()->state()) |
| + << "ArcBackupRestoreEnabled pref is " << backup_pref_value |
| + << "ArcLocationServiceEnabled pref is " << location_pref_value; |
| + |
| + // Stop ARC and shutdown the service. |
| + prefs->RemoveManagedPref(prefs::kArcEnabled); |
| + WaitForDataRemoved(ArcSessionManager::State::STOPPED); |
| + arc_session_manager()->Shutdown(); |
| + } |
| + } |
| +} |
| + |
| TEST_F(ArcSessionManagerTest, DisabledForDeviceLocalAccount) { |
| PrefService* const prefs = profile()->GetPrefs(); |
| EXPECT_FALSE(prefs->GetBoolean(prefs::kArcSignedIn)); |