blob: f00f0c6d3f1433f44e0431c1ca83fd67fca535d1 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/pref_registry/pref_registry_syncable.h"
#include "base/files/file_path.h"
#include "base/strings/string_number_conversions.h"
#include "base/values.h"
#include "components/prefs/default_pref_store.h"
namespace user_prefs {
PrefRegistrySyncable::PrefRegistrySyncable() {
}
PrefRegistrySyncable::~PrefRegistrySyncable() {
}
void PrefRegistrySyncable::SetSyncableRegistrationCallback(
const SyncableRegistrationCallback& cb) {
callback_ = cb;
}
void PrefRegistrySyncable::OnPrefRegistered(const std::string& path,
base::Value* default_value,
uint32_t flags) {
// Tests that |flags| does not contain both SYNCABLE_PREF and
// SYNCABLE_PRIORITY_PREF flags at the same time.
DCHECK(!(flags & PrefRegistrySyncable::SYNCABLE_PREF) ||
!(flags & PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF));
if (flags & PrefRegistrySyncable::SYNCABLE_PREF ||
flags & PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) {
if (!callback_.is_null())
callback_.Run(path, flags);
}
}
scoped_refptr<PrefRegistrySyncable> PrefRegistrySyncable::ForkForIncognito() {
// TODO(joi): We can directly reuse the same PrefRegistry once
// PrefService no longer registers for callbacks on registration and
// unregistration.
scoped_refptr<PrefRegistrySyncable> registry(new PrefRegistrySyncable());
registry->defaults_ = defaults_;
registry->registration_flags_ = registration_flags_;
registry->foreign_pref_keys_ = foreign_pref_keys_;
return registry;
}
} // namespace user_prefs