summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/settings/cros_settings_provider.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/chromeos/settings/cros_settings_provider.h')
-rw-r--r--chrome/browser/chromeos/settings/cros_settings_provider.h81
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_