fake_statistics_provider.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. #ifndef CHROMEOS_SYSTEM_FAKE_STATISTICS_PROVIDER_H_
  5. #define CHROMEOS_SYSTEM_FAKE_STATISTICS_PROVIDER_H_
  6. #include <map>
  7. #include <string>
  8. #include "base/callback.h"
  9. #include "base/component_export.h"
  10. #include "chromeos/system/statistics_provider.h"
  11. namespace chromeos {
  12. namespace system {
  13. // A fake StatisticsProvider implementation that is useful in tests.
  14. class COMPONENT_EXPORT(CHROMEOS_SYSTEM) FakeStatisticsProvider
  15. : public StatisticsProvider {
  16. public:
  17. FakeStatisticsProvider();
  18. FakeStatisticsProvider(const FakeStatisticsProvider&) = delete;
  19. FakeStatisticsProvider& operator=(const FakeStatisticsProvider&) = delete;
  20. ~FakeStatisticsProvider() override;
  21. // StatisticsProvider implementation:
  22. void ScheduleOnMachineStatisticsLoaded(base::OnceClosure callback) override;
  23. void StartLoadingMachineStatistics(bool load_oem_manifest) override;
  24. bool GetMachineStatistic(const std::string& name,
  25. std::string* result) override;
  26. bool GetMachineFlag(const std::string& name, bool* result) override;
  27. void Shutdown() override;
  28. bool IsRunningOnVm() override;
  29. void SetMachineStatistic(const std::string& key, const std::string& value);
  30. void ClearMachineStatistic(const std::string& key);
  31. void SetMachineFlag(const std::string& key, bool value);
  32. void ClearMachineFlag(const std::string& key);
  33. private:
  34. std::map<std::string, std::string> machine_statistics_;
  35. std::map<std::string, bool> machine_flags_;
  36. };
  37. // A convenience subclass that automatically registers itself as the test
  38. // StatisticsProvider during construction and cleans up at destruction.
  39. class COMPONENT_EXPORT(CHROMEOS_SYSTEM) ScopedFakeStatisticsProvider
  40. : public FakeStatisticsProvider {
  41. public:
  42. ScopedFakeStatisticsProvider();
  43. ScopedFakeStatisticsProvider(const ScopedFakeStatisticsProvider&) = delete;
  44. ScopedFakeStatisticsProvider& operator=(const ScopedFakeStatisticsProvider&) =
  45. delete;
  46. ~ScopedFakeStatisticsProvider() override;
  47. };
  48. } // namespace system
  49. } // namespace chromeos
  50. // TODO(https://crbug.com/1164001): remove after the //chrome/browser/chromeos
  51. // source migration is finished.
  52. namespace ash {
  53. namespace system {
  54. using ::chromeos::system::ScopedFakeStatisticsProvider;
  55. }
  56. } // namespace ash
  57. #endif // CHROMEOS_SYSTEM_FAKE_STATISTICS_PROVIDER_H_