diff options
author | vivek.vg@samsung.com <vivek.vg@samsung.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-26 08:10:46 +0000 |
---|---|---|
committer | vivek.vg@samsung.com <vivek.vg@samsung.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-26 08:10:46 +0000 |
commit | 31c017222fa340a24202b3c94c5f290a8ccb3b16 (patch) | |
tree | da22afc478e9ad6d1fd370f48290c3b8e6a4f3d4 | |
parent | cf4e1ef34b15da65086f6101cdea2528118ec5e4 (diff) | |
download | chromium_src-31c017222fa340a24202b3c94c5f290a8ccb3b16.zip chromium_src-31c017222fa340a24202b3c94c5f290a8ccb3b16.tar.gz chromium_src-31c017222fa340a24202b3c94c5f290a8ccb3b16.tar.bz2 |
[Chromium] [PowerProfiler] Support accuracy level attribute for power data provider.
Adding support for providing accuracy level of the power data provider.
BUG=384299
Review URL: https://codereview.chromium.org/332943005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@279956 0039d316-1c4b-4281-b951-d872f2087c98
7 files changed, 48 insertions, 2 deletions
diff --git a/content/browser/devtools/devtools_power_handler.cc b/content/browser/devtools/devtools_power_handler.cc index 8915c03..d71482f 100644 --- a/content/browser/devtools/devtools_power_handler.cc +++ b/content/browser/devtools/devtools_power_handler.cc @@ -21,6 +21,11 @@ DevToolsPowerHandler::DevToolsPowerHandler() { RegisterCommandHandler(devtools::Power::canProfilePower::kName, base::Bind(&DevToolsPowerHandler::OnCanProfilePower, base::Unretained(this))); + // TODO(vivekg): Replace hardcoded "Power.getAccuracyLevel" with + // devtools::Power::getAccuracyLevel::kName once crrev.com/336713005 lands + RegisterCommandHandler("Power.getAccuracyLevel" , + base::Bind(&DevToolsPowerHandler::OnGetAccuracyLevel, + base::Unretained(this))); } DevToolsPowerHandler::~DevToolsPowerHandler() { @@ -80,6 +85,19 @@ DevToolsPowerHandler::OnCanProfilePower( return command->SuccessResponse(result); } +scoped_refptr<DevToolsProtocol::Response> +DevToolsPowerHandler::OnGetAccuracyLevel( + scoped_refptr<DevToolsProtocol::Command> command) { + if (PowerProfilerService::GetInstance()->IsAvailable()) { + base::DictionaryValue* result = new base::DictionaryValue(); + result->SetString( + devtools::kResult, + PowerProfilerService::GetInstance()->GetAccuracyLevel()); + return command->SuccessResponse(result); + } + return command->InternalErrorResponse("Power profiler service unavailable"); +} + void DevToolsPowerHandler::OnClientDetached() { PowerProfilerService::GetInstance()->RemoveObserver(this); } diff --git a/content/browser/devtools/devtools_power_handler.h b/content/browser/devtools/devtools_power_handler.h index 6042eab..25498bf 100644 --- a/content/browser/devtools/devtools_power_handler.h +++ b/content/browser/devtools/devtools_power_handler.h @@ -31,6 +31,8 @@ class DevToolsPowerHandler scoped_refptr<DevToolsProtocol::Command> command); scoped_refptr<DevToolsProtocol::Response> OnCanProfilePower( scoped_refptr<DevToolsProtocol::Command> command); + scoped_refptr<DevToolsProtocol::Response> OnGetAccuracyLevel( + scoped_refptr<DevToolsProtocol::Command> command); DISALLOW_COPY_AND_ASSIGN(DevToolsPowerHandler); }; diff --git a/content/browser/power_profiler/power_data_provider.h b/content/browser/power_profiler/power_data_provider.h index 85f67e7..897bc9b 100644 --- a/content/browser/power_profiler/power_data_provider.h +++ b/content/browser/power_profiler/power_data_provider.h @@ -21,6 +21,12 @@ typedef std::vector<PowerEvent> PowerEventVector; // A class used to get power usage. class PowerDataProvider { public: + enum AccuracyLevel { + High, + Moderate, + Low + }; + static scoped_ptr<PowerDataProvider> Create(); PowerDataProvider() {} @@ -31,6 +37,9 @@ class PowerDataProvider { // Returns sampling rate at which the provider can operate. virtual base::TimeDelta GetSamplingRate() = 0; + + // Returns accuracy level of the provider. + virtual AccuracyLevel GetAccuracyLevel() = 0; }; } // namespace content diff --git a/content/browser/power_profiler/power_data_provider_ia_win.h b/content/browser/power_profiler/power_data_provider_ia_win.h index 2c7e489..925ca16 100644 --- a/content/browser/power_profiler/power_data_provider_ia_win.h +++ b/content/browser/power_profiler/power_data_provider_ia_win.h @@ -20,6 +20,7 @@ class PowerDataProviderIA : public PowerDataProvider { bool Initialize(); virtual PowerEventVector GetData() OVERRIDE; virtual base::TimeDelta GetSamplingRate() OVERRIDE; + virtual AccuracyLevel GetAccuracyLevel() OVERRIDE { return High; } private: CIntelPowerGadgetLib energy_lib_; diff --git a/content/browser/power_profiler/power_profiler_service.cc b/content/browser/power_profiler/power_profiler_service.cc index 026b42ab..84ddb1b 100644 --- a/content/browser/power_profiler/power_profiler_service.cc +++ b/content/browser/power_profiler/power_profiler_service.cc @@ -42,10 +42,23 @@ PowerProfilerService::PowerProfilerService( PowerProfilerService::~PowerProfilerService() { } -bool PowerProfilerService::IsAvailable() { +bool PowerProfilerService::IsAvailable() const { return status_ != UNINITIALIZED; } +std::string PowerProfilerService::GetAccuracyLevel() const { + DCHECK(IsAvailable()); + switch (data_provider_->GetAccuracyLevel()) { + case PowerDataProvider::High: + return "High"; + case PowerDataProvider::Moderate: + return "Moderate"; + case PowerDataProvider::Low: + return "Low"; + } + return ""; +} + PowerProfilerService* PowerProfilerService::GetInstance() { return Singleton<PowerProfilerService>::get(); } diff --git a/content/browser/power_profiler/power_profiler_service.h b/content/browser/power_profiler/power_profiler_service.h index 35f2f65..4daae28f 100644 --- a/content/browser/power_profiler/power_profiler_service.h +++ b/content/browser/power_profiler/power_profiler_service.h @@ -25,7 +25,8 @@ class CONTENT_EXPORT PowerProfilerService { void AddObserver(PowerProfilerObserver* observer); void RemoveObserver(PowerProfilerObserver* observer); - bool IsAvailable(); + bool IsAvailable() const; + std::string GetAccuracyLevel() const; virtual ~PowerProfilerService(); diff --git a/content/browser/power_profiler/power_profiler_service_unittest.cc b/content/browser/power_profiler/power_profiler_service_unittest.cc index f7f77dc..f0451f3 100644 --- a/content/browser/power_profiler/power_profiler_service_unittest.cc +++ b/content/browser/power_profiler/power_profiler_service_unittest.cc @@ -40,6 +40,8 @@ class TestPowerDataProvider : public PowerDataProvider { return base::TimeDelta::FromMilliseconds(kDefaultSamplePeriodMs); } + virtual AccuracyLevel GetAccuracyLevel() OVERRIDE { return High; } + private: int num_events_to_send_; DISALLOW_COPY_AND_ASSIGN(TestPowerDataProvider); |