summaryrefslogtreecommitdiffstats
path: root/chrome/common/pref_service.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/common/pref_service.h')
-rw-r--r--chrome/common/pref_service.h222
1 files changed, 0 insertions, 222 deletions
diff --git a/chrome/common/pref_service.h b/chrome/common/pref_service.h
deleted file mode 100644
index 9d9b6d2..0000000
--- a/chrome/common/pref_service.h
+++ /dev/null
@@ -1,222 +0,0 @@
-// Copyright (c) 2006-2008 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.
-
-// This provides a way to access the application's current preferences.
-// This service has two preference stores, one for "persistent" preferences,
-// which get serialized for use in the next session, and one for "transient"
-// preferences, which are in effect for only the current session
-// (this usually encodes things like command-line switches).
-//
-// Calling the getter functions in this class basically looks at both the
-// persistent and transient stores, where any corresponding value in the
-// transient store overrides the one in the persistent store.
-
-#ifndef CHROME_COMMON_PREF_SERVICE_H_
-#define CHROME_COMMON_PREF_SERVICE_H_
-
-#include <set>
-
-#include "base/file_path.h"
-#include "base/hash_tables.h"
-#include "base/non_thread_safe.h"
-#include "base/observer_list.h"
-#include "base/scoped_ptr.h"
-#include "base/values.h"
-#include "chrome/common/important_file_writer.h"
-
-class NotificationObserver;
-class Preference;
-
-class PrefService : public NonThreadSafe,
- public ImportantFileWriter::DataSerializer {
- public:
-
- // A helper class to store all the information associated with a preference.
- class Preference {
- public:
-
- // The type of the preference is determined by the type of |default_value|.
- // Therefore, the type needs to be a boolean, integer, real, string,
- // dictionary (a branch), or list. You shouldn't need to construct this on
- // your own, use the PrefService::Register*Pref methods instead.
- // |default_value| will be owned by the Preference object.
- Preference(DictionaryValue* root_pref,
- const wchar_t* name,
- Value* default_value);
- ~Preference() {}
-
- Value::ValueType type() const { return type_; }
-
- // Returns the name of the Preference (i.e., the key, e.g.,
- // browser.window_placement).
- const std::wstring name() const { return name_; }
-
- // Returns the value of the Preference. If there is no user specified
- // value, it returns the default value.
- const Value* GetValue() const;
-
- // Returns true if the current value matches the default value.
- bool IsDefaultValue() const;
-
- private:
- friend class PrefService;
-
- Value::ValueType type_;
- std::wstring name_;
- scoped_ptr<Value> default_value_;
-
- // A reference to the pref service's persistent prefs.
- DictionaryValue* root_pref_;
-
- DISALLOW_COPY_AND_ASSIGN(Preference);
- };
-
- // |pref_filename| is the path to the prefs file we will try to load or save
- // to. Saves will be executed on the file thread.
- explicit PrefService(const FilePath& pref_filename);
- ~PrefService();
-
- // Reloads the data from file. This should only be called when the importer
- // is running during first run, and the main process may not change pref
- // values while the importer process is running. Returns true on success.
- bool ReloadPersistentPrefs();
-
- // Writes the data to disk. The return value only reflects whether
- // serialization was successful; we don't know whether the data actually made
- // it on disk (since it's on a different thread). This should only be used if
- // we need to save immediately (basically, during shutdown). Otherwise, you
- // should use ScheduleSavePersistentPrefs.
- bool SavePersistentPrefs();
-
- // Serializes the data and schedules save using ImportantFileWriter.
- void ScheduleSavePersistentPrefs();
-
- // Make the PrefService aware of a pref.
- void RegisterBooleanPref(const wchar_t* path,
- bool default_value);
- void RegisterIntegerPref(const wchar_t* path,
- int default_value);
- void RegisterRealPref(const wchar_t* path,
- double default_value);
- void RegisterStringPref(const wchar_t* path,
- const std::wstring& default_value);
- void RegisterFilePathPref(const wchar_t* path,
- const FilePath& default_value);
- void RegisterListPref(const wchar_t* path);
- void RegisterDictionaryPref(const wchar_t* path);
-
- // These varients use a default value from the locale dll instead.
- void RegisterLocalizedBooleanPref(const wchar_t* path,
- int locale_default_message_id);
- void RegisterLocalizedIntegerPref(const wchar_t* path,
- int locale_default_message_id);
- void RegisterLocalizedRealPref(const wchar_t* path,
- int locale_default_message_id);
- void RegisterLocalizedStringPref(const wchar_t* path,
- int locale_default_message_id);
-
- // If the path is valid and the value at the end of the path matches the type
- // specified, it will return the specified value. Otherwise, the default
- // value (set when the pref was registered) will be returned.
- bool GetBoolean(const wchar_t* path) const;
- int GetInteger(const wchar_t* path) const;
- double GetReal(const wchar_t* path) const;
- std::wstring GetString(const wchar_t* path) const;
- FilePath GetFilePath(const wchar_t* path) const;
-
- // Returns the branch if it exists. If it's not a branch or the branch does
- // not exist, returns NULL.
- const DictionaryValue* GetDictionary(const wchar_t* path) const;
- const ListValue* GetList(const wchar_t* path) const;
-
- // If the pref at the given path changes, we call the observer's Observe
- // method with NOTIFY_PREF_CHANGED.
- void AddPrefObserver(const wchar_t* path, NotificationObserver* obs);
- void RemovePrefObserver(const wchar_t* path, NotificationObserver* obs);
-
- // Removes a user pref and restores the pref to its default value.
- void ClearPref(const wchar_t* path);
-
- // If the path is valid (i.e., registered), update the pref value.
- void Set(const wchar_t* path, const Value& value);
- void SetBoolean(const wchar_t* path, bool value);
- void SetInteger(const wchar_t* path, int value);
- void SetReal(const wchar_t* path, double value);
- void SetString(const wchar_t* path, const std::wstring& value);
- void SetFilePath(const wchar_t* path, const FilePath& value);
-
- // Int64 helper methods that actually store the given value as a string.
- // Note that if obtaining the named value via GetDictionary or GetList, the
- // Value type will be TYPE_STRING.
- void SetInt64(const wchar_t* path, int64 value);
- int64 GetInt64(const wchar_t* path) const;
- void RegisterInt64Pref(const wchar_t* path, int64 default_value);
-
- // Used to set the value of dictionary or list values in the pref tree. This
- // will create a dictionary or list if one does not exist in the pref tree.
- // This method returns NULL only if you're requesting an unregistered pref or
- // a non-dict/non-list pref.
- // WARNING: Changes to the dictionary or list will not automatically notify
- // pref observers. TODO(tc): come up with a way to still fire observers.
- DictionaryValue* GetMutableDictionary(const wchar_t* path);
- ListValue* GetMutableList(const wchar_t* path);
-
- // Returns true if a value has been set for the specified path.
- // NOTE: this is NOT the same as FindPreference. In particular
- // FindPreference returns whether RegisterXXX has been invoked, where as
- // this checks if a value exists for the path.
- bool HasPrefPath(const wchar_t* path) const;
-
- class PreferencePathComparator {
- public:
- bool operator() (Preference* lhs, Preference* rhs) const {
- return lhs->name() < rhs->name();
- }
- };
- typedef std::set<Preference*, PreferencePathComparator> PreferenceSet;
- const PreferenceSet& preference_set() const { return prefs_; }
-
- // A helper method to quickly look up a preference. Returns NULL if the
- // preference is not registered.
- const Preference* FindPreference(const wchar_t* pref_name) const;
-
- // ImportantFileWriter::DataSerializer
- virtual bool SerializeData(std::string* output);
-
- private:
- // Add a preference to the PreferenceMap. If the pref already exists, return
- // false. This method takes ownership of |pref|.
- void RegisterPreference(Preference* pref);
-
- // Returns a copy of the current pref value. The caller is responsible for
- // deleting the returned object.
- Value* GetPrefCopy(const wchar_t* pref_name);
-
- // For the given pref_name, fire any observer of the pref.
- void FireObservers(const wchar_t* pref_name);
-
- // For the given pref_name, fire any observer of the pref only if |old_value|
- // is different from the current value.
- void FireObserversIfChanged(const wchar_t* pref_name,
- const Value* old_value);
-
- scoped_ptr<DictionaryValue> persistent_;
-
- // Helper for safe writing pref data.
- ImportantFileWriter writer_;
-
- // A set of all the registered Preference objects.
- PreferenceSet prefs_;
-
- // A map from pref names to a list of observers. Observers get fired in the
- // order they are added.
- typedef ObserverList<NotificationObserver> NotificationObserverList;
- typedef base::hash_map<std::wstring, NotificationObserverList*>
- PrefObserverMap;
- PrefObserverMap pref_observers_;
-
- DISALLOW_COPY_AND_ASSIGN(PrefService);
-};
-
-#endif // CHROME_COMMON_PREF_SERVICE_H_