Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5870)

Unified Diff: chrome/browser/prefs/profile_pref_store_manager_unittest.cc

Issue 2743463002: WIP: Pref service user prefs. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prefs/profile_pref_store_manager.cc ('k') | chrome/browser/profiles/profile_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 60c41652e07fe01c68ce25d416c80bee283672c8..7b7f34c2b569408040dac183b1762651e9b006b3 100644
--- a/chrome/browser/prefs/profile_pref_store_manager_unittest.cc
+++ b/chrome/browser/prefs/profile_pref_store_manager_unittest.cc
@@ -10,6 +10,7 @@
#include <utility>
#include <vector>
+#include "base/callback_helpers.h"
#include "base/compiler_specific.h"
#include "base/files/file_enumerator.h"
#include "base/files/file_util.h"
@@ -30,6 +31,7 @@
#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 "services/preferences/public/cpp/persistent_pref_store_client.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
@@ -68,6 +70,37 @@ class RegistryVerifier : public PrefStore::Observer {
scoped_refptr<PrefRegistry> pref_registry_;
};
+class PrefStoreReadObserver : public PrefStore::Observer {
+ public:
+ explicit PrefStoreReadObserver(scoped_refptr<PersistentPrefStore> pref_store)
+ : pref_store_(std::move(pref_store)) {
+ pref_store_->AddObserver(this);
+ }
+
+ ~PrefStoreReadObserver() override { pref_store_->RemoveObserver(this); }
+
+ PersistentPrefStore::PrefReadError Read() {
+ base::RunLoop run_loop;
+ stop_waiting_ = run_loop.QuitClosure();
+ pref_store_->ReadPrefsAsync(nullptr);
+ run_loop.Run();
+ return pref_store_->GetReadError();
+ }
+
+ // PrefStore::Observer implementation
+ void OnPrefValueChanged(const std::string& key) override {}
+
+ void OnInitializationCompleted(bool succeeded) override {
+ if (!stop_waiting_.is_null()) {
+ base::ResetAndReturn(&stop_waiting_).Run();
+ }
+ }
+
+ private:
+ scoped_refptr<PersistentPrefStore> pref_store_;
+ base::Closure stop_waiting_;
+};
+
const char kUnprotectedPref[] = "unprotected_pref";
const char kTrackedAtomic[] = "tracked_atomic";
const char kProtectedAtomic[] = "protected_atomic";
@@ -78,10 +111,10 @@ const char kHelloWorld[] = "HELLOWORLD";
const char kGoodbyeWorld[] = "GOODBYEWORLD";
const PrefHashFilter::TrackedPreferenceMetadata kConfiguration[] = {
- {0u, kTrackedAtomic, PrefHashFilter::NO_ENFORCEMENT,
- PrefHashFilter::TRACKING_STRATEGY_ATOMIC},
- {1u, kProtectedAtomic, PrefHashFilter::ENFORCE_ON_LOAD,
- PrefHashFilter::TRACKING_STRATEGY_ATOMIC}};
+ {0u, kTrackedAtomic, PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT,
+ PrefHashFilter::PrefTrackingStrategy::ATOMIC},
+ {1u, kProtectedAtomic, PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
+ PrefHashFilter::PrefTrackingStrategy::ATOMIC}};
const size_t kExtraReportingId = 2u;
const size_t kReportingIdCount = 3u;
@@ -100,13 +133,11 @@ class ProfilePrefStoreManagerTest : public testing::Test {
void SetUp() override {
mock_validation_delegate_record_ = new MockValidationDelegateRecord;
- mock_validation_delegate_ = base::MakeUnique<MockValidationDelegate>(
- mock_validation_delegate_record_);
ProfilePrefStoreManager::RegisterProfilePrefs(profile_pref_registry_.get());
for (const PrefHashFilter::TrackedPreferenceMetadata* it = kConfiguration;
it != kConfiguration + arraysize(kConfiguration);
++it) {
- if (it->strategy == PrefHashFilter::TRACKING_STRATEGY_ATOMIC) {
+ if (it->strategy == PrefHashFilter::PrefTrackingStrategy::ATOMIC) {
profile_pref_registry_->RegisterStringPref(it->name, std::string());
} else {
profile_pref_registry_->RegisterDictionaryPref(it->name);
@@ -119,11 +150,11 @@ class ProfilePrefStoreManagerTest : public testing::Test {
// 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::ENFORCE_ON_LOAD,
- PrefHashFilter::TRACKING_STRATEGY_ATOMIC};
+ 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);
ASSERT_TRUE(profile_dir_.CreateUniqueTempDir());
@@ -170,12 +201,19 @@ class ProfilePrefStoreManagerTest : public testing::Test {
void InitializePrefs() {
// According to the implementation of ProfilePrefStoreManager, this is
// actually a SegregatedPrefStore backed by two underlying pref stores.
+ mock_validation_delegate_ = base::MakeUnique<MockValidationDelegate>(
+ mock_validation_delegate_record_);
+ prefs::mojom::PersistentPrefStoreConnectorPtr connector;
scoped_refptr<PersistentPrefStore> pref_store =
manager_->CreateProfilePrefStore(
- main_message_loop_.task_runner(),
+ main_message_loop_.task_runner(), main_message_loop_.task_runner(),
base::Bind(&ProfilePrefStoreManagerTest::RecordReset,
base::Unretained(this)),
- mock_validation_delegate_.get());
+ &mock_validation_delegate_, &connector);
+ if (!pref_store) {
+ ASSERT_TRUE(connector);
+ pref_store = new prefs::PersistentPrefStoreMojo(std::move(connector));
+ }
InitializePrefStore(pref_store.get());
pref_store = NULL;
base::RunLoop().RunUntilIdle();
@@ -199,7 +237,8 @@ class ProfilePrefStoreManagerTest : public testing::Test {
void InitializePrefStore(PersistentPrefStore* pref_store) {
pref_store->AddObserver(&registry_verifier_);
- PersistentPrefStore::PrefReadError error = pref_store->ReadPrefs();
+ PrefStoreReadObserver read_observer(pref_store);
+ PersistentPrefStore::PrefReadError error = read_observer.Read();
EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, error);
pref_store->SetValue(kTrackedAtomic, base::MakeUnique<base::Value>(kFoobar),
WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
@@ -216,13 +255,21 @@ class ProfilePrefStoreManagerTest : public testing::Test {
void LoadExistingPrefs() {
DestroyPrefStore();
+ std::unique_ptr<prefs::mojom::TrackedPreferenceValidationDelegate>
+ validation_delegate;
+ prefs::mojom::PersistentPrefStoreConnectorPtr connector;
pref_store_ = manager_->CreateProfilePrefStore(
- main_message_loop_.task_runner(),
+ main_message_loop_.task_runner(), main_message_loop_.task_runner(),
base::Bind(&ProfilePrefStoreManagerTest::RecordReset,
base::Unretained(this)),
- NULL);
+ &validation_delegate, &connector);
+ if (!pref_store_) {
+ ASSERT_TRUE(connector);
+ pref_store_ = new prefs::PersistentPrefStoreMojo(std::move(connector));
+ }
pref_store_->AddObserver(&registry_verifier_);
- pref_store_->ReadPrefs();
+ PrefStoreReadObserver read_observer(pref_store_);
+ read_observer.Read();
}
void ReplaceStringInPrefs(const std::string& find,
@@ -269,7 +316,8 @@ class ProfilePrefStoreManagerTest : public testing::Test {
scoped_refptr<user_prefs::PrefRegistrySyncable> profile_pref_registry_;
RegistryVerifier registry_verifier_;
scoped_refptr<MockValidationDelegateRecord> mock_validation_delegate_record_;
- std::unique_ptr<MockValidationDelegate> mock_validation_delegate_;
+ std::unique_ptr<prefs::mojom::TrackedPreferenceValidationDelegate>
+ mock_validation_delegate_;
std::unique_ptr<ProfilePrefStoreManager> manager_;
scoped_refptr<PersistentPrefStore> pref_store_;
@@ -358,8 +406,9 @@ TEST_F(ProfilePrefStoreManagerTest, UnprotectedToProtected) {
// Now update the configuration to protect it.
PrefHashFilter::TrackedPreferenceMetadata new_protected = {
- kExtraReportingId, kUnprotectedPref, PrefHashFilter::ENFORCE_ON_LOAD,
- PrefHashFilter::TRACKING_STRATEGY_ATOMIC};
+ kExtraReportingId, kUnprotectedPref,
+ PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
+ PrefHashFilter::PrefTrackingStrategy::ATOMIC};
configuration_.push_back(new_protected);
ReloadConfiguration();
@@ -391,7 +440,7 @@ TEST_F(ProfilePrefStoreManagerTest, NewPrefWhenFirstProtecting) {
configuration_.begin();
it != configuration_.end();
++it) {
- it->enforcement_level = PrefHashFilter::NO_ENFORCEMENT;
+ it->enforcement_level = PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT;
}
ReloadConfiguration();
@@ -409,8 +458,9 @@ TEST_F(ProfilePrefStoreManagerTest, NewPrefWhenFirstProtecting) {
// Now introduce protection, including the never-before tracked "new_pref".
configuration_ = original_configuration;
PrefHashFilter::TrackedPreferenceMetadata new_protected = {
- kExtraReportingId, kUnprotectedPref, PrefHashFilter::ENFORCE_ON_LOAD,
- PrefHashFilter::TRACKING_STRATEGY_ATOMIC};
+ kExtraReportingId, kUnprotectedPref,
+ PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
+ PrefHashFilter::PrefTrackingStrategy::ATOMIC};
configuration_.push_back(new_protected);
ReloadConfiguration();
@@ -431,8 +481,9 @@ TEST_F(ProfilePrefStoreManagerTest, UnprotectedToProtectedWithoutTrust) {
// Now update the configuration to protect it.
PrefHashFilter::TrackedPreferenceMetadata new_protected = {
- kExtraReportingId, kUnprotectedPref, PrefHashFilter::ENFORCE_ON_LOAD,
- PrefHashFilter::TRACKING_STRATEGY_ATOMIC};
+ kExtraReportingId, kUnprotectedPref,
+ PrefHashFilter::EnforcementLevel::ENFORCE_ON_LOAD,
+ PrefHashFilter::PrefTrackingStrategy::ATOMIC};
configuration_.push_back(new_protected);
seed_ = "new-seed-to-break-trust";
ReloadConfiguration();
@@ -464,7 +515,7 @@ TEST_F(ProfilePrefStoreManagerTest, ProtectedToUnprotected) {
it != configuration_.end();
++it) {
if (it->name == kProtectedAtomic) {
- it->enforcement_level = PrefHashFilter::NO_ENFORCEMENT;
+ it->enforcement_level = PrefHashFilter::EnforcementLevel::NO_ENFORCEMENT;
break;
}
}
« no previous file with comments | « chrome/browser/prefs/profile_pref_store_manager.cc ('k') | chrome/browser/profiles/profile_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698