summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
Diffstat (limited to 'chromeos')
-rw-r--r--chromeos/dbus/power_manager_client.cc27
1 files changed, 26 insertions, 1 deletions
diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc
index f25fb2d..be2440a 100644
--- a/chromeos/dbus/power_manager_client.cc
+++ b/chromeos/dbus/power_manager_client.cc
@@ -10,6 +10,7 @@
#include "base/callback.h"
#include "base/format_macros.h"
#include "base/memory/scoped_ptr.h"
+#include "base/metrics/histogram.h"
#include "base/observer_list.h"
#include "base/stringprintf.h"
#include "base/time.h"
@@ -264,7 +265,15 @@ class PowerManagerClientImpl : public PowerManagerClient {
}
virtual void NotifyScreenLockRequested() OVERRIDE {
- SimpleMethodCallToPowerManager(power_manager::kRequestLockScreenMethod);
+ dbus::MethodCall method_call(power_manager::kPowerManagerInterface,
+ power_manager::kRequestLockScreenMethod);
+ power_manager_proxy_->CallMethodWithErrorCallback(
+ &method_call,
+ dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+ base::Bind(&PowerManagerClientImpl::OnScreenLockRequested,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&PowerManagerClientImpl::OnScreenLockRequestedError,
+ weak_ptr_factory_.GetWeakPtr()));
}
virtual void NotifyScreenLockCompleted() OVERRIDE {
@@ -445,6 +454,22 @@ class PowerManagerClientImpl : public PowerManagerClient {
callback.Run(request_id);
}
+ void OnScreenLockRequested(dbus::Response* response) {
+ UMA_HISTOGRAM_BOOLEAN("LockScreen.RequestLockScreen", true);
+ }
+
+ void OnScreenLockRequestedError(dbus::ErrorResponse* error_response) {
+ if (error_response) {
+ dbus::MessageReader reader(error_response);
+ std::string error_message;
+ reader.PopString(&error_message);
+ LOG(ERROR) << "Failed to call ScreenLockRequested: "
+ << error_response->GetErrorName()
+ << ": " << error_message;
+ }
+ UMA_HISTOGRAM_BOOLEAN("LockScreen.RequestLockScreen", false);
+ }
+
void OnGetScreenBrightnessPercent(
const GetScreenBrightnessPercentCallback& callback,
dbus::Response* response) {