Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / chromeos / system / fake_statistics_provider.h
1 // Copyright 2014 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 CHROMEOS_SYSTEM_FAKE_STATISTICS_PROVIDER_H_
6 #define CHROMEOS_SYSTEM_FAKE_STATISTICS_PROVIDER_H_
7
8 #include <map>
9 #include <string>
10
11 #include "chromeos/system/statistics_provider.h"
12
13 namespace chromeos {
14 namespace system {
15
16 // A fake StatisticsProvider implementation that is useful in tests.
17 class FakeStatisticsProvider : public StatisticsProvider {
18  public:
19   FakeStatisticsProvider();
20   virtual ~FakeStatisticsProvider();
21
22   // StatisticsProvider implementation:
23   virtual void StartLoadingMachineStatistics(
24       const scoped_refptr<base::TaskRunner>& file_task_runner,
25       bool load_oem_manifest) override;
26   virtual bool GetMachineStatistic(const std::string& name,
27                                    std::string* result) override;
28   virtual bool HasMachineStatistic(const std::string& name) override;
29   virtual bool GetMachineFlag(const std::string& name, bool* result) override;
30   virtual bool HasMachineFlag(const std::string& name) override;
31   virtual void Shutdown() override;
32
33   void SetMachineStatistic(const std::string& key, const std::string& value);
34   void ClearMachineStatistic(const std::string& key);
35   void SetMachineFlag(const std::string& key, bool value);
36   void ClearMachineFlag(const std::string& key);
37
38  private:
39   std::map<std::string, std::string> machine_statistics_;
40   std::map<std::string, bool> machine_flags_;
41
42   DISALLOW_COPY_AND_ASSIGN(FakeStatisticsProvider);
43 };
44
45 // A convenience subclass that automatically registers itself as the test
46 // StatisticsProvider during construction and cleans up at destruction.
47 class ScopedFakeStatisticsProvider : public FakeStatisticsProvider {
48  public:
49   ScopedFakeStatisticsProvider();
50   virtual ~ScopedFakeStatisticsProvider();
51
52  private:
53   DISALLOW_COPY_AND_ASSIGN(ScopedFakeStatisticsProvider);
54 };
55
56 }  // namespace system
57 }  // namespace chromeos
58
59 #endif  // CHROMEOS_SYSTEM_FAKE_STATISTICS_PROVIDER_H_