-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/prefs/pref_value_store.h"
#include <stddef.h>
+#include <string>
#include "base/logging.h"
+#include "base/strings/string_piece.h"
#include "components/prefs/pref_notifier.h"
#include "components/prefs/pref_observer.h"
PrefValueStore::PrefValueStore(PrefStore* managed_prefs,
PrefStore* supervised_user_prefs,
PrefStore* extension_prefs,
+ PrefStore* standalone_browser_prefs,
PrefStore* command_line_prefs,
PrefStore* user_prefs,
PrefStore* recommended_prefs,
PrefStore* default_prefs,
- PrefNotifier* pref_notifier,
- std::unique_ptr<Delegate> delegate)
- : pref_notifier_(pref_notifier),
- initialization_failed_(false),
- delegate_(std::move(delegate)) {
+ PrefNotifier* pref_notifier)
+ : pref_notifier_(pref_notifier), initialization_failed_(false) {
InitPrefStore(MANAGED_STORE, managed_prefs);
InitPrefStore(SUPERVISED_USER_STORE, supervised_user_prefs);
InitPrefStore(EXTENSION_STORE, extension_prefs);
+ InitPrefStore(STANDALONE_BROWSER_STORE, standalone_browser_prefs);
InitPrefStore(COMMAND_LINE_STORE, command_line_prefs);
InitPrefStore(USER_STORE, user_prefs);
InitPrefStore(RECOMMENDED_STORE, recommended_prefs);
InitPrefStore(DEFAULT_STORE, default_prefs);
CheckInitializationCompleted();
- if (delegate_) {
- delegate_->Init(managed_prefs, supervised_user_prefs, extension_prefs,
- command_line_prefs, user_prefs, recommended_prefs,
- default_prefs, pref_notifier);
- }
}
PrefValueStore::~PrefValueStore() {}
PrefStore* managed_prefs,
PrefStore* supervised_user_prefs,
PrefStore* extension_prefs,
+ PrefStore* standalone_browser_prefs,
PrefStore* command_line_prefs,
PrefStore* user_prefs,
PrefStore* recommended_prefs,
PrefStore* default_prefs,
- PrefNotifier* pref_notifier,
- std::unique_ptr<Delegate> delegate) {
+ PrefNotifier* pref_notifier) {
DCHECK(pref_notifier);
if (!managed_prefs)
managed_prefs = GetPrefStore(MANAGED_STORE);
supervised_user_prefs = GetPrefStore(SUPERVISED_USER_STORE);
if (!extension_prefs)
extension_prefs = GetPrefStore(EXTENSION_STORE);
+ if (!standalone_browser_prefs)
+ standalone_browser_prefs = GetPrefStore(STANDALONE_BROWSER_STORE);
if (!command_line_prefs)
command_line_prefs = GetPrefStore(COMMAND_LINE_STORE);
if (!user_prefs)
default_prefs = GetPrefStore(DEFAULT_STORE);
return std::make_unique<PrefValueStore>(
- managed_prefs, supervised_user_prefs, extension_prefs, command_line_prefs,
- user_prefs, recommended_prefs, default_prefs, pref_notifier,
- std::move(delegate));
+ managed_prefs, supervised_user_prefs, extension_prefs,
+ standalone_browser_prefs, command_line_prefs, user_prefs,
+ recommended_prefs, default_prefs, pref_notifier);
}
-void PrefValueStore::set_callback(const PrefChangedCallback& callback) {
- pref_changed_callback_ = callback;
+PrefValueStore::PrefStoreType PrefValueStore::ControllingPrefStoreForPref(
+ const std::string& name) const {
+ for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) {
+ if (PrefValueInStore(name, static_cast<PrefStoreType>(i))) {
+ return static_cast<PrefStoreType>(i);
+ }
+ }
+ return INVALID_STORE;
}
-bool PrefValueStore::GetValue(const std::string& name,
+bool PrefValueStore::GetValue(base::StringPiece name,
base::Value::Type type,
const base::Value** out_value) const {
// Check the |PrefStore|s in order of their priority from highest to lowest,
// store is currently being overridden by a higher-priority store, the
// effective value of the pref will not have changed.
pref_notifier_->OnPreferenceChanged(path);
- if (!pref_changed_callback_.is_null())
- pref_changed_callback_.Run(path);
}
bool PrefValueStore::PrefValueInManagedStore(const std::string& name) const {
return ControllingPrefStoreForPref(name) == RECOMMENDED_STORE;
}
+bool PrefValueStore::PrefValueFromStandaloneBrowserStore(
+ const std::string& name) const {
+ return ControllingPrefStoreForPref(name) == STANDALONE_BROWSER_STORE;
+}
+
bool PrefValueStore::PrefValueFromDefaultStore(const std::string& name) const {
return ControllingPrefStoreForPref(name) == DEFAULT_STORE;
}
effective_store == INVALID_STORE;
}
+bool PrefValueStore::PrefValueStandaloneBrowserModifiable(
+ const std::string& name) const {
+ PrefStoreType effective_store = ControllingPrefStoreForPref(name);
+ return effective_store >= STANDALONE_BROWSER_STORE ||
+ effective_store == INVALID_STORE;
+}
+
void PrefValueStore::UpdateCommandLinePrefStore(PrefStore* command_line_prefs) {
InitPrefStore(COMMAND_LINE_STORE, command_line_prefs);
- if (delegate_)
- delegate_->UpdateCommandLinePrefStore(command_line_prefs);
}
bool PrefValueStore::IsInitializationComplete() const {
for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) {
const PrefStore* pref_store = GetPrefStore(static_cast<PrefStoreType>(i));
- if (pref_store && !pref_store->IsInitializationComplete())
+ if (pref_store && !pref_store->IsInitializationComplete()) {
return false;
+ }
}
return true;
}
return false;
}
-PrefValueStore::PrefStoreType PrefValueStore::ControllingPrefStoreForPref(
- const std::string& name) const {
- for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) {
- if (PrefValueInStore(name, static_cast<PrefStoreType>(i)))
- return static_cast<PrefStoreType>(i);
- }
- return INVALID_STORE;
-}
-
-bool PrefValueStore::GetValueFromStore(const std::string& name,
+bool PrefValueStore::GetValueFromStore(base::StringPiece name,
PrefValueStore::PrefStoreType store_type,
const base::Value** out_value) const {
// Only return true if we find a value and it is the correct type, so stale
}
bool PrefValueStore::GetValueFromStoreWithType(
- const std::string& name,
+ base::StringPiece name,
base::Value::Type type,
PrefStoreType store,
const base::Value** out_value) const {