Index: chrome/browser/prefs/profile_pref_store_manager_unittest.cc |
diff --git a/chrome/browser/prefs/profile_pref_store_manager_unittest.cc b/chrome/browser/prefs/profile_pref_store_manager_unittest.cc |
index 3ece36760d793fed58da7163d3494fd0384ef9ca..f729fe309bac6e66890be6704f39eb8bc767741b 100644 |
--- a/chrome/browser/prefs/profile_pref_store_manager_unittest.cc |
+++ b/chrome/browser/prefs/profile_pref_store_manager_unittest.cc |
@@ -32,11 +32,11 @@ |
#include "components/prefs/pref_service_factory.h" |
#include "components/prefs/pref_store.h" |
#include "components/prefs/testing_pref_service.h" |
-#include "components/user_prefs/tracked/mock_validation_delegate.h" |
-#include "components/user_prefs/tracked/pref_hash_filter.h" |
-#include "components/user_prefs/tracked/pref_names.h" |
#include "content/public/common/service_names.mojom.h" |
#include "services/preferences/public/cpp/pref_service_main.h" |
+#include "services/preferences/public/cpp/tracked/configuration.h" |
+#include "services/preferences/public/cpp/tracked/mock_validation_delegate.h" |
+#include "services/preferences/public/cpp/tracked/pref_names.h" |
#include "services/preferences/public/interfaces/preferences.mojom.h" |
#include "services/service_manager/public/cpp/connector.h" |
#include "services/service_manager/public/cpp/service_context.h" |
@@ -44,6 +44,12 @@ |
namespace { |
+using EnforcementLevel = |
+ prefs::mojom::TrackedPreferenceMetadata::EnforcementLevel; |
+using PrefTrackingStrategy = |
+ prefs::mojom::TrackedPreferenceMetadata::PrefTrackingStrategy; |
+using ValueType = prefs::mojom::TrackedPreferenceMetadata::ValueType; |
+ |
class FirstEqualsPredicate { |
public: |
explicit FirstEqualsPredicate(const std::string& expected) |
@@ -120,11 +126,11 @@ const char kBarfoo[] = "BARFOO"; |
const char kHelloWorld[] = "HELLOWORLD"; |
const char kGoodbyeWorld[] = "GOODBYEWORLD"; |
-const PrefHashFilter::TrackedPreferenceMetadata kConfiguration[] = { |
- {0u, kTrackedAtomic, PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT, |
- PrefHashFilter::PrefTrackingStrategy::ATOMIC}, |
- {1u, kProtectedAtomic, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
- PrefHashFilter::PrefTrackingStrategy::ATOMIC}}; |
+const prefs::TrackedPreferenceMetadata kConfiguration[] = { |
+ {0u, kTrackedAtomic, EnforcementLevel::NO_ENFORCEMENT, |
+ PrefTrackingStrategy::ATOMIC}, |
+ {1u, kProtectedAtomic, EnforcementLevel::ENFORCE_ON_LOAD, |
+ PrefTrackingStrategy::ATOMIC}}; |
const size_t kExtraReportingId = 2u; |
const size_t kReportingIdCount = 3u; |
@@ -134,8 +140,7 @@ const size_t kReportingIdCount = 3u; |
class ProfilePrefStoreManagerTest : public testing::TestWithParam<bool> { |
public: |
ProfilePrefStoreManagerTest() |
- : configuration_(kConfiguration, |
- kConfiguration + arraysize(kConfiguration)), |
+ : configuration_(prefs::ConstructTrackedConfiguration(kConfiguration)), |
profile_pref_registry_(new user_prefs::PrefRegistrySyncable), |
registry_verifier_(profile_pref_registry_.get()), |
seed_("seed"), |
@@ -168,10 +173,9 @@ class ProfilePrefStoreManagerTest : public testing::TestWithParam<bool> { |
} |
mock_validation_delegate_record_ = new MockValidationDelegateRecord; |
ProfilePrefStoreManager::RegisterProfilePrefs(profile_pref_registry_.get()); |
- for (const PrefHashFilter::TrackedPreferenceMetadata* it = kConfiguration; |
- it != kConfiguration + arraysize(kConfiguration); |
- ++it) { |
- if (it->strategy == PrefHashFilter::PrefTrackingStrategy::ATOMIC) { |
+ for (const prefs::TrackedPreferenceMetadata* it = kConfiguration; |
+ it != kConfiguration + arraysize(kConfiguration); ++it) { |
+ if (it->strategy == PrefTrackingStrategy::ATOMIC) { |
profile_pref_registry_->RegisterStringPref(it->name, std::string()); |
} else { |
profile_pref_registry_->RegisterDictionaryPref(it->name); |
@@ -184,12 +188,12 @@ class ProfilePrefStoreManagerTest : public testing::TestWithParam<bool> { |
// SegregatedPrefStore. Only declare it after configured prefs have been |
// registered above for this test as kPreferenceResetTime is already |
// registered in ProfilePrefStoreManager::RegisterProfilePrefs. |
- PrefHashFilter::TrackedPreferenceMetadata pref_reset_time_config = { |
- configuration_.rbegin()->reporting_id + 1, |
- user_prefs::kPreferenceResetTime, |
- PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
- PrefHashFilter::PrefTrackingStrategy::ATOMIC}; |
- configuration_.push_back(pref_reset_time_config); |
+ prefs::TrackedPreferenceMetadata pref_reset_time_config = { |
+ (*configuration_.rbegin())->reporting_id + 1, |
+ user_prefs::kPreferenceResetTime, EnforcementLevel::ENFORCE_ON_LOAD, |
+ PrefTrackingStrategy::ATOMIC}; |
+ configuration_.push_back( |
+ prefs::ConstructTrackedMetadata(pref_reset_time_config)); |
ASSERT_TRUE(profile_dir_.CreateUniqueTempDir()); |
ReloadConfiguration(); |
@@ -198,8 +202,9 @@ class ProfilePrefStoreManagerTest : public testing::TestWithParam<bool> { |
void ReloadConfiguration() { |
RelaunchPrefService(); |
manager_.reset(new ProfilePrefStoreManager( |
- profile_dir_.GetPath(), configuration_, kReportingIdCount, seed_, |
- "device_id", &local_state_)); |
+ profile_dir_.GetPath(), |
+ prefs::CloneTrackedConfiguration(configuration_), kReportingIdCount, |
+ seed_, "device_id", &local_state_)); |
} |
void TearDown() override { |
@@ -322,6 +327,9 @@ class ProfilePrefStoreManagerTest : public testing::TestWithParam<bool> { |
void LoadExistingPrefs() { |
DestroyPrefStore(); |
+ // Constructing the PrefStore consumes the tracking configuration in |
+ // |manager_|, so recreate it before constructing another PrefStore. |
+ ReloadConfiguration(); |
mock_validation_delegate_ = base::MakeUnique<MockValidationDelegate>( |
mock_validation_delegate_record_); |
pref_store_ = manager_->CreateProfilePrefStore( |
@@ -374,7 +382,7 @@ class ProfilePrefStoreManagerTest : public testing::TestWithParam<bool> { |
} |
base::MessageLoop main_message_loop_; |
- std::vector<PrefHashFilter::TrackedPreferenceMetadata> configuration_; |
+ std::vector<prefs::mojom::TrackedPreferenceMetadataPtr> configuration_; |
base::ScopedTempDir profile_dir_; |
TestingPrefServiceSimple local_state_; |
scoped_refptr<user_prefs::PrefRegistrySyncable> profile_pref_registry_; |
@@ -484,11 +492,10 @@ TEST_P(ProfilePrefStoreManagerTest, UnprotectedToProtected) { |
ExpectStringValueEquals(kUnprotectedPref, kBarfoo); |
// Now update the configuration to protect it. |
- PrefHashFilter::TrackedPreferenceMetadata new_protected = { |
- kExtraReportingId, kUnprotectedPref, |
- PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
- PrefHashFilter::PrefTrackingStrategy::ATOMIC}; |
- configuration_.push_back(new_protected); |
+ prefs::TrackedPreferenceMetadata new_protected = { |
+ kExtraReportingId, kUnprotectedPref, EnforcementLevel::ENFORCE_ON_LOAD, |
+ PrefTrackingStrategy::ATOMIC}; |
+ configuration_.push_back(prefs::ConstructTrackedMetadata(new_protected)); |
ReloadConfiguration(); |
// And try loading with the new configuration. |
@@ -512,13 +519,10 @@ TEST_P(ProfilePrefStoreManagerTest, UnprotectedToProtected) { |
} |
TEST_P(ProfilePrefStoreManagerTest, NewPrefWhenFirstProtecting) { |
- std::vector<PrefHashFilter::TrackedPreferenceMetadata> |
- original_configuration = configuration_; |
- for (std::vector<PrefHashFilter::TrackedPreferenceMetadata>::iterator it = |
- configuration_.begin(); |
- it != configuration_.end(); |
- ++it) { |
- it->enforcement_level = PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT; |
+ std::vector<prefs::mojom::TrackedPreferenceMetadataPtr> |
+ original_configuration = prefs::CloneTrackedConfiguration(configuration_); |
+ for (const auto& metadata : configuration_) { |
+ metadata->enforcement_level = EnforcementLevel::NO_ENFORCEMENT; |
} |
ReloadConfiguration(); |
@@ -534,12 +538,11 @@ TEST_P(ProfilePrefStoreManagerTest, NewPrefWhenFirstProtecting) { |
DestroyPrefStore(); |
// Now introduce protection, including the never-before tracked "new_pref". |
- configuration_ = original_configuration; |
- PrefHashFilter::TrackedPreferenceMetadata new_protected = { |
- kExtraReportingId, kUnprotectedPref, |
- PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
- PrefHashFilter::PrefTrackingStrategy::ATOMIC}; |
- configuration_.push_back(new_protected); |
+ configuration_ = std::move(original_configuration); |
+ prefs::TrackedPreferenceMetadata new_protected = { |
+ kExtraReportingId, kUnprotectedPref, EnforcementLevel::ENFORCE_ON_LOAD, |
+ PrefTrackingStrategy::ATOMIC}; |
+ configuration_.push_back(prefs::ConstructTrackedMetadata(new_protected)); |
ReloadConfiguration(); |
// And try loading with the new configuration. |
@@ -558,11 +561,10 @@ TEST_P(ProfilePrefStoreManagerTest, UnprotectedToProtectedWithoutTrust) { |
ExpectValidationObserved(kProtectedAtomic); |
// Now update the configuration to protect it. |
- PrefHashFilter::TrackedPreferenceMetadata new_protected = { |
- kExtraReportingId, kUnprotectedPref, |
- PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD, |
- PrefHashFilter::PrefTrackingStrategy::ATOMIC}; |
- configuration_.push_back(new_protected); |
+ prefs::TrackedPreferenceMetadata new_protected = { |
+ kExtraReportingId, kUnprotectedPref, EnforcementLevel::ENFORCE_ON_LOAD, |
+ PrefTrackingStrategy::ATOMIC}; |
+ configuration_.push_back(prefs::ConstructTrackedMetadata(new_protected)); |
seed_ = "new-seed-to-break-trust"; |
ReloadConfiguration(); |
@@ -587,12 +589,9 @@ TEST_P(ProfilePrefStoreManagerTest, ProtectedToUnprotected) { |
DestroyPrefStore(); |
// Unconfigure protection for kProtectedAtomic |
- for (std::vector<PrefHashFilter::TrackedPreferenceMetadata>::iterator it = |
- configuration_.begin(); |
- it != configuration_.end(); |
- ++it) { |
- if (it->name == kProtectedAtomic) { |
- it->enforcement_level = PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT; |
+ for (const auto& metadata : configuration_) { |
+ if (metadata->name == kProtectedAtomic) { |
+ metadata->enforcement_level = EnforcementLevel::NO_ENFORCEMENT; |
break; |
} |
} |