Implement proximity_auth::WireMessage::Serialize().
[chromium-blink-merge.git] / chromeos / settings / cros_settings_provider.h
blob491113be42a45e0cf1402ac92d96c88ae4d82ae3
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROMEOS_SETTINGS_CROS_SETTINGS_PROVIDER_H_
6 #define CHROMEOS_SETTINGS_CROS_SETTINGS_PROVIDER_H_
8 #include <string>
10 #include "base/callback.h"
11 #include "chromeos/chromeos_export.h"
13 namespace base {
14 class Value;
17 namespace chromeos {
19 class CHROMEOS_EXPORT CrosSettingsProvider {
20 public:
21 // The callback type that is called to notify the CrosSettings observers
22 // about a setting change.
23 typedef base::Callback<void(const std::string&)> NotifyObserversCallback;
25 // Possible results of a trusted check.
26 enum TrustedStatus {
27 // The trusted values were populated in the cache and can be accessed
28 // until the next iteration of the message loop.
29 TRUSTED,
30 // Either a store or a load operation is in progress. The provided
31 // callback will be invoked once the verification has finished.
32 TEMPORARILY_UNTRUSTED,
33 // The verification of the trusted store has failed permanently. The
34 // client should assume this state final and further checks for
35 // trustedness will fail at least until the browser restarts.
36 PERMANENTLY_UNTRUSTED,
39 // Creates a new provider instance. |notify_cb| will be used to notify
40 // about setting changes.
41 explicit CrosSettingsProvider(const NotifyObserversCallback& notify_cb);
42 virtual ~CrosSettingsProvider();
44 // Sets |in_value| to given |path| in cros settings.
45 void Set(const std::string& path, const base::Value& in_value);
47 // Gets settings value of given |path| to |out_value|.
48 virtual const base::Value* Get(const std::string& path) const = 0;
50 // Requests the provider to fetch its values from a trusted store, if it
51 // hasn't done so yet. Returns TRUSTED if the values returned by this provider
52 // are trusted during the current loop cycle. Otherwise returns
53 // TEMPORARILY_UNTRUSTED, and |callback| will be invoked later when trusted
54 // values become available, PrepareTrustedValues() should be tried again in
55 // that case. Returns PERMANENTLY_UNTRUSTED if a permanent error has occurred.
56 virtual TrustedStatus PrepareTrustedValues(
57 const base::Closure& callback) = 0;
59 // Gets the namespace prefix provided by this provider.
60 virtual bool HandlesSetting(const std::string& path) const = 0;
62 void SetNotifyObserversCallback(const NotifyObserversCallback& notify_cb);
64 protected:
65 // Notifies the observers about a setting change.
66 void NotifyObservers(const std::string& path);
68 private:
69 // Does the real job for Set().
70 virtual void DoSet(const std::string& path,
71 const base::Value& in_value) = 0;
73 // Callback used to notify about setting changes.
74 NotifyObserversCallback notify_cb_;
77 } // namespace chromeos
79 #endif // CHROMEOS_SETTINGS_CROS_SETTINGS_PROVIDER_H_