1// Copyright (c) 2012 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.
4
5#ifndef CHROME_BROWSER_CHROMEOS_SETTINGS_STUB_CROS_SETTINGS_PROVIDER_H_
6#define CHROME_BROWSER_CHROMEOS_SETTINGS_STUB_CROS_SETTINGS_PROVIDER_H_
7
8#include <string>
9
10#include "base/prefs/pref_value_map.h"
11#include "chromeos/settings/cros_settings_provider.h"
12
13namespace chromeos {
14
15class CrosSettings;
16
17// CrosSettingsProvider implementation that stores settings in memory unsigned.
18class StubCrosSettingsProvider : public CrosSettingsProvider {
19 public:
20  explicit StubCrosSettingsProvider(const NotifyObserversCallback& notify_cb);
21  StubCrosSettingsProvider();
22  virtual ~StubCrosSettingsProvider();
23
24  // CrosSettingsProvider implementation.
25  virtual const base::Value* Get(const std::string& path) const OVERRIDE;
26  virtual TrustedStatus PrepareTrustedValues(
27      const base::Closure& callback) OVERRIDE;
28  virtual bool HandlesSetting(const std::string& path) const OVERRIDE;
29
30 private:
31  // CrosSettingsProvider implementation:
32  virtual void DoSet(const std::string& path,
33                     const base::Value& value) OVERRIDE;
34
35  // Initializes settings to their defaults.
36  void SetDefaults();
37
38  // In-memory settings storage.
39  PrefValueMap values_;
40
41  CrosSettings* cros_settings_;
42
43  DISALLOW_COPY_AND_ASSIGN(StubCrosSettingsProvider);
44};
45
46}  // namespace chromeos
47
48#endif  // CHROME_BROWSER_CHROMEOS_SETTINGS_STUB_CROS_SETTINGS_PROVIDER_H_
49