diff options
Diffstat (limited to 'chrome/browser/chromeos/settings/cros_settings_provider.h')
-rw-r--r-- | chrome/browser/chromeos/settings/cros_settings_provider.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/settings/cros_settings_provider.h b/chrome/browser/chromeos/settings/cros_settings_provider.h new file mode 100644 index 0000000..2477f34 --- /dev/null +++ b/chrome/browser/chromeos/settings/cros_settings_provider.h @@ -0,0 +1,81 @@ +// 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. + +#ifndef CHROME_BROWSER_CHROMEOS_SETTINGS_CROS_SETTINGS_PROVIDER_H_ +#define CHROME_BROWSER_CHROMEOS_SETTINGS_CROS_SETTINGS_PROVIDER_H_ + +#include <string> + +#include "base/callback.h" + +namespace base { +class Value; +} + +namespace chromeos { + +class CrosSettingsProvider { + public: + // The callback type that is called to notify the CrosSettings observers + // about a setting change. + typedef base::Callback<void(const std::string&)> NotifyObserversCallback; + + // Possible results of a trusted check. + enum TrustedStatus { + // The trusted values were populated in the cache and can be accessed + // until the next iteration of the message loop. + TRUSTED, + // Either a store or a load operation is in progress. The provided + // callback will be invoked once the verification has finished. + TEMPORARILY_UNTRUSTED, + // The verification of the trusted store has failed permanently. The + // client should assume this state final and further checks for + // trustedness will fail at least until the browser restarts. + PERMANENTLY_UNTRUSTED, + }; + + // Creates a new provider instance. |notify_cb| will be used to notify + // about setting changes. + explicit CrosSettingsProvider(const NotifyObserversCallback& notify_cb); + virtual ~CrosSettingsProvider(); + + // Sets |in_value| to given |path| in cros settings. + void Set(const std::string& path, const base::Value& in_value); + + // Gets settings value of given |path| to |out_value|. + virtual const base::Value* Get(const std::string& path) const = 0; + + // Requests the provider to fetch its values from a trusted store, if it + // hasn't done so yet. Returns TRUSTED if the values returned by this provider + // are trusted during the current loop cycle. Otherwise returns + // TEMPORARILY_UNTRUSTED, and |callback| will be invoked later when trusted + // values become available, PrepareTrustedValues() should be tried again in + // that case. Returns PERMANENTLY_UNTRUSTED if a permanent error has occurred. + virtual TrustedStatus PrepareTrustedValues( + const base::Closure& callback) = 0; + + // Gets the namespace prefix provided by this provider. + virtual bool HandlesSetting(const std::string& path) const = 0; + + // Reloads the caches if the provider has any. + virtual void Reload() = 0; + + void SetNotifyObserversCallback(const NotifyObserversCallback& notify_cb); + + protected: + // Notifies the observers about a setting change. + void NotifyObservers(const std::string& path); + + private: + // Does the real job for Set(). + virtual void DoSet(const std::string& path, + const base::Value& in_value) = 0; + + // Callback used to notify about setting changes. + NotifyObserversCallback notify_cb_; +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_SETTINGS_CROS_SETTINGS_PROVIDER_H_ |