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 CONTENT_BROWSER_POWER_PROFILER_POWER_DATA_PROVIDER_H_
6#define CONTENT_BROWSER_POWER_PROFILER_POWER_DATA_PROVIDER_H_
7
8#include <vector>
9
10#include "base/memory/scoped_ptr.h"
11#include "content/browser/power_profiler/power_event.h"
12
13namespace base {
14class TimeDelta;
15}  // namespace base
16
17namespace content {
18
19typedef std::vector<PowerEvent> PowerEventVector;
20
21// A class used to get power usage.
22class PowerDataProvider {
23 public:
24  enum AccuracyLevel {
25    High,
26    Moderate,
27    Low
28  };
29
30  static scoped_ptr<PowerDataProvider> Create();
31
32  PowerDataProvider() {}
33  virtual ~PowerDataProvider() {}
34
35  // Returns a vector of power events, one per type, for the types it supports.
36  virtual PowerEventVector GetData() = 0;
37
38  // Returns sampling rate at which the provider can operate.
39  virtual base::TimeDelta GetSamplingRate() = 0;
40
41  // Returns accuracy level of the provider.
42  virtual AccuracyLevel GetAccuracyLevel() = 0;
43};
44
45}  // namespace content
46
47#endif  // CONTENT_BROWSER_POWER_PROFILER_POWER_DATA_PROVIDER_H_
48