Index: chrome/browser/chromeos/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc |
diff --git a/chrome/browser/chromeos/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc b/chrome/browser/chromeos/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc |
index ce080c8dfbab8fe7e4c24bf783f3d47c00da0be9..78eb27f44d65f0286c963283926ab0d6590dbbde 100644 |
--- a/chrome/browser/chromeos/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc |
+++ b/chrome/browser/chromeos/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "base/run_loop.h" |
+#include "base/values.h" |
#include "chrome/browser/chromeos/arc/arc_support_host.h" |
#include "chrome/browser/chromeos/arc/extensions/fake_arc_support.h" |
#include "chrome/browser/chromeos/arc/optin/arc_terms_of_service_default_negotiator.h" |
@@ -18,6 +19,7 @@ |
#include "chrome/test/base/testing_browser_process.h" |
#include "chrome/test/base/testing_profile.h" |
#include "components/prefs/pref_service.h" |
+#include "components/sync_preferences/testing_pref_service_syncable.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -34,8 +36,6 @@ class ArcTermsOfServiceDefaultNegotiatorTest : public testing::Test { |
new chromeos::FakeChromeUserManager()); |
profile_ = base::MakeUnique<TestingProfile>(); |
- profile_->GetPrefs()->SetBoolean(prefs::kArcBackupRestoreEnabled, false); |
- profile_->GetPrefs()->SetBoolean(prefs::kArcLocationServiceEnabled, false); |
support_host_ = base::MakeUnique<ArcSupportHost>(profile_.get()); |
fake_arc_support_ = base::MakeUnique<FakeArcSupport>(support_host_.get()); |
@@ -51,7 +51,7 @@ class ArcTermsOfServiceDefaultNegotiatorTest : public testing::Test { |
user_manager_enabler_.reset(); |
} |
- Profile* profile() { return profile_.get(); } |
+ TestingProfile* profile() { return profile_.get(); } |
ArcSupportHost* support_host() { return support_host_.get(); } |
FakeArcSupport* fake_arc_support() { return fake_arc_support_.get(); } |
ArcTermsOfServiceNegotiator* negotiator() { return negotiator_.get(); } |
@@ -112,10 +112,32 @@ TEST_F(ArcTermsOfServiceDefaultNegotiatorTest, Accept) { |
EXPECT_EQ(status, Status::PENDING); |
EXPECT_EQ(fake_arc_support()->ui_page(), ArcSupportHost::UIPage::TERMS); |
- // Check the preference related checkbox. |
- fake_arc_support()->set_metrics_mode(true); |
- fake_arc_support()->set_backup_and_restore_mode(true); |
- fake_arc_support()->set_location_service_mode(true); |
+ // By default, the preference related checkboxes are checked, despite that |
+ // the preferences default to false. |
+ EXPECT_FALSE( |
+ profile()->GetPrefs()->GetBoolean(prefs::kArcBackupRestoreEnabled)); |
+ EXPECT_FALSE( |
+ profile()->GetPrefs()->GetBoolean(prefs::kArcLocationServiceEnabled)); |
+ EXPECT_TRUE(fake_arc_support()->backup_and_restore_mode()); |
+ EXPECT_TRUE(fake_arc_support()->location_service_mode()); |
+ |
+ // The preferences are assigned to the managed false value, and the |
+ // corresponding checkboxes are unchecked. |
+ profile()->GetTestingPrefService()->SetManagedPref( |
+ prefs::kArcBackupRestoreEnabled, new base::Value(false)); |
+ EXPECT_FALSE(fake_arc_support()->backup_and_restore_mode()); |
+ profile()->GetTestingPrefService()->SetManagedPref( |
+ prefs::kArcLocationServiceEnabled, new base::Value(false)); |
+ EXPECT_FALSE(fake_arc_support()->location_service_mode()); |
+ |
+ // The managed preference values are removed, and the corresponding checkboxes |
+ // are checked again. |
+ profile()->GetTestingPrefService()->RemoveManagedPref( |
+ prefs::kArcBackupRestoreEnabled); |
+ EXPECT_TRUE(fake_arc_support()->backup_and_restore_mode()); |
+ profile()->GetTestingPrefService()->RemoveManagedPref( |
+ prefs::kArcLocationServiceEnabled); |
+ EXPECT_TRUE(fake_arc_support()->location_service_mode()); |
// Make sure preference values are not yet updated. |
EXPECT_FALSE( |
@@ -135,6 +157,41 @@ TEST_F(ArcTermsOfServiceDefaultNegotiatorTest, Accept) { |
profile()->GetPrefs()->GetBoolean(prefs::kArcLocationServiceEnabled)); |
} |
+TEST_F(ArcTermsOfServiceDefaultNegotiatorTest, AcceptWithUnchecked) { |
+ // Show Terms of service page. |
+ Status status = Status::PENDING; |
+ negotiator()->StartNegotiation(UpdateStatusCallback(&status)); |
+ |
+ // TERMS page should be shown. |
+ EXPECT_EQ(status, Status::PENDING); |
+ EXPECT_EQ(fake_arc_support()->ui_page(), ArcSupportHost::UIPage::TERMS); |
+ |
+ // Override the preferences from the default values to true. |
+ profile()->GetPrefs()->SetBoolean(prefs::kArcBackupRestoreEnabled, true); |
+ profile()->GetPrefs()->SetBoolean(prefs::kArcLocationServiceEnabled, true); |
+ |
+ // Uncheck the preference related checkboxes. |
+ fake_arc_support()->set_backup_and_restore_mode(false); |
+ fake_arc_support()->set_location_service_mode(false); |
+ |
+ // Make sure preference values are not yet updated. |
+ EXPECT_TRUE( |
+ profile()->GetPrefs()->GetBoolean(prefs::kArcBackupRestoreEnabled)); |
+ EXPECT_TRUE( |
+ profile()->GetPrefs()->GetBoolean(prefs::kArcLocationServiceEnabled)); |
+ |
+ // Click the "AGREE" button so that the callback should be invoked |
+ // with |agreed| = true. |
+ fake_arc_support()->ClickAgreeButton(); |
+ EXPECT_EQ(status, Status::ACCEPTED); |
+ |
+ // Make sure preference values are now updated. |
+ EXPECT_FALSE( |
+ profile()->GetPrefs()->GetBoolean(prefs::kArcBackupRestoreEnabled)); |
+ EXPECT_FALSE( |
+ profile()->GetPrefs()->GetBoolean(prefs::kArcLocationServiceEnabled)); |
+} |
+ |
TEST_F(ArcTermsOfServiceDefaultNegotiatorTest, Cancel) { |
// Show Terms of service page. |
Status status = Status::PENDING; |