Commit 08c03bc5 authored by vitaliii's avatar vitaliii Committed by Commit Bot

[Sync] Enable consents when sync is enabled.

Previously "Sync Everything" settings switch disabled user consents
datatype. In this CL, the datatype is always enabled (like device info).

Bug: 859825
Change-Id: I345465be97d8b2d95c503130bb2e1274a96f48e1
Reviewed-on: https://chromium-review.googlesource.com/1124330
Commit-Queue: vitaliii <vitaliii@chromium.org>
Reviewed-by: default avatarMikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572542}
parent a6db9de7
......@@ -224,6 +224,11 @@ constexpr ModelTypeSet UserTypes() {
return ModelTypeSet::FromRange(FIRST_USER_MODEL_TYPE, LAST_USER_MODEL_TYPE);
}
// User types, which are not user-controlled.
constexpr ModelTypeSet AlwaysPreferredUserTypes() {
return ModelTypeSet(DEVICE_INFO, USER_CONSENTS);
}
// These are the user-selectable data types.
constexpr ModelTypeSet UserSelectableTypes() {
return ModelTypeSet(BOOKMARKS, PREFERENCES, PASSWORDS, AUTOFILL, THEMES,
......
......@@ -64,16 +64,13 @@ void SyncPrefs::RegisterProfilePrefs(
// although they don't have sync representations.
user_types.PutAll(ProxyTypes());
// Treat device info specially.
RegisterDataTypePreferredPref(registry, DEVICE_INFO, true);
user_types.Remove(DEVICE_INFO);
// All types are set to off by default, which forces a configuration to
// explicitly enable them. GetPreferredTypes() will ensure that any new
// implicit types are enabled when their pref group is, or via
// KeepEverythingSynced.
// All types except the always-preferred ones are set to off by default, which
// forces a configuration to explicitly enable them. GetPreferredTypes() will
// ensure that any new implicit types are enabled when their pref group is, or
// via KeepEverythingSynced.
for (ModelTypeSet::Iterator it = user_types.First(); it.Good(); it.Inc()) {
RegisterDataTypePreferredPref(registry, it.Get(), false);
RegisterDataTypePreferredPref(registry, it.Get(),
AlwaysPreferredUserTypes().Has(it.Get()));
}
registry->RegisterBooleanPref(prefs::kSyncManaged, false);
......@@ -451,8 +448,7 @@ bool SyncPrefs::GetDataTypePreferred(ModelType type) const {
return false;
}
// Device info is always enabled.
if (pref_name == prefs::kSyncDeviceInfo)
if (AlwaysPreferredUserTypes().Has(type))
return true;
if (type == PROXY_TABS &&
......@@ -474,8 +470,7 @@ void SyncPrefs::SetDataTypePreferred(ModelType type, bool is_preferred) {
return;
}
// Device info is always preferred.
if (type == DEVICE_INFO)
if (AlwaysPreferredUserTypes().Has(type))
return;
pref_service_->SetBoolean(pref_name, is_preferred);
......
......@@ -66,10 +66,8 @@ TEST_F(SyncPrefsTest, DefaultTypes) {
SyncPrefs sync_prefs(&pref_service_);
sync_prefs.SetKeepEverythingSynced(false);
// Only device info is enabled by default.
ModelTypeSet expected(DEVICE_INFO);
ModelTypeSet preferred_types = sync_prefs.GetPreferredDataTypes(UserTypes());
EXPECT_EQ(expected, preferred_types);
EXPECT_EQ(AlwaysPreferredUserTypes(), preferred_types);
// Simulate an upgrade to delete directives + proxy tabs support. None of the
// new types or their pref group types should be registering, ensuring they
......@@ -165,8 +163,7 @@ TEST_F(SyncPrefsTest, PreferredTypesNotKeepEverythingSynced) {
expected_preferred_types.Put(FAVICON_TRACKING);
}
// Device info is always preferred.
expected_preferred_types.Put(DEVICE_INFO);
expected_preferred_types.PutAll(AlwaysPreferredUserTypes());
sync_prefs.SetPreferredDataTypes(user_types, preferred_types);
EXPECT_EQ(expected_preferred_types,
......@@ -229,6 +226,24 @@ TEST_F(SyncPrefsTest, DeviceInfo) {
EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(DEVICE_INFO));
sync_prefs.SetKeepEverythingSynced(false);
EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(DEVICE_INFO));
sync_prefs.SetPreferredDataTypes(
/*registered_types=*/ModelTypeSet(DEVICE_INFO),
/*preferred_types=*/ModelTypeSet());
EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(DEVICE_INFO));
}
// User Consents should always be enabled.
TEST_F(SyncPrefsTest, UserConsents) {
SyncPrefs sync_prefs(&pref_service_);
EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(USER_CONSENTS));
sync_prefs.SetKeepEverythingSynced(true);
EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(USER_CONSENTS));
sync_prefs.SetKeepEverythingSynced(false);
EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(USER_CONSENTS));
sync_prefs.SetPreferredDataTypes(
/*registered_types=*/ModelTypeSet(USER_CONSENTS),
/*preferred_types=*/ModelTypeSet());
EXPECT_TRUE(sync_prefs.GetPreferredDataTypes(UserTypes()).Has(USER_CONSENTS));
}
// Verify that invalidation versions are persisted and loaded correctly.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment