diff --git a/metrics/metrics_daemon.cc b/metrics/metrics_daemon.cc
index 04ad686..5ccc694 100644
--- a/metrics/metrics_daemon.cc
+++ b/metrics/metrics_daemon.cc
@@ -16,8 +16,7 @@
 
 #define SAFE_MESSAGE(e) (e.message ? e.message : "unknown error")
 #define DBUS_IFACE_FLIMFLAM_MANAGER "org.chromium.flimflam.Manager"
-#define DBUS_IFACE_POWER_MANAGER "org.chromium.Power.Manager"
-#define DBUS_IFACE_SCREENSAVER_MANAGER "org.chromium.ScreenSaver.Manager"
+#define DBUS_IFACE_POWER_MANAGER "org.chromium.PowerManager"
 #define DBUS_IFACE_SESSION_MANAGER "org.chromium.SessionManagerInterface"
 
 // File to aggregate daily usage before sending to UMA.
@@ -63,13 +62,7 @@
 
   "type='signal',"
   "interface='" DBUS_IFACE_POWER_MANAGER "',"
-  "path='/',"
-  "member='PowerStateChanged'",
-
-  "type='signal',"
-  "interface='" DBUS_IFACE_SCREENSAVER_MANAGER "',"
-  "path='/',"
-  "member='LockStateChanged'",
+  "path='/'"
 
   "type='signal',"
   "sender='org.chromium.SessionManager',"
@@ -91,12 +84,6 @@
 };
 
 // static
-const char* MetricsDaemon::kScreenSaverStates_[] = {
-#define STATE(name, capname) #name,
-#include "screensaver_states.h"
-};
-
-// static
 const char* MetricsDaemon::kSessionStates_[] = {
 #define STATE(name, capname) #name,
 #include "session_states.h"
@@ -181,19 +168,16 @@
     dbus_message_iter_get_basic(&iter, &state_name);
     daemon->NetStateChanged(state_name, ticks);
   } else if (strcmp(interface, DBUS_IFACE_POWER_MANAGER) == 0) {
-    CHECK(strcmp(dbus_message_get_member(message),
-                 "PowerStateChanged") == 0);
-
-    char* state_name;
-    dbus_message_iter_get_basic(&iter, &state_name);
-    daemon->PowerStateChanged(state_name, now);
-  } else if (strcmp(interface, DBUS_IFACE_SCREENSAVER_MANAGER) == 0) {
-    CHECK(strcmp(dbus_message_get_member(message),
-                 "LockStateChanged") == 0);
-
-    char* state_name;
-    dbus_message_iter_get_basic(&iter, &state_name);
-    daemon->ScreenSaverStateChanged(state_name, now);
+    const char* member = dbus_message_get_member(message);
+    if (strcmp(member, "ScreenIsLocked") == 0) {
+      daemon->SetUserActiveState(false, now);
+    } else if (strcmp(member, "ScreenIsUnlocked") == 0) {
+      daemon->SetUserActiveState(true, now);
+    } else if (strcmp(member, "PowerStateChanged") == 0) {
+      char* state_name;
+      dbus_message_iter_get_basic(&iter, &state_name);
+      daemon->PowerStateChanged(state_name, now);
+    }
   } else if (strcmp(interface, DBUS_IFACE_SESSION_MANAGER) == 0) {
     CHECK(strcmp(dbus_message_get_member(message),
                  "SessionStateChanged") == 0);
@@ -265,23 +249,6 @@
   return kUnknownPowerState;
 }
 
-void MetricsDaemon::ScreenSaverStateChanged(const char* state_name, Time now) {
-  DLOG(INFO) << "screen-saver state: " << state_name;
-  screensaver_state_ = LookupScreenSaverState(state_name);
-  SetUserActiveState(screensaver_state_ == kScreenSaverStateUnlocked, now);
-}
-
-MetricsDaemon::ScreenSaverState
-MetricsDaemon::LookupScreenSaverState(const char* state_name) {
-  for (int i = 0; i < kNumberScreenSaverStates; i++) {
-    if (strcmp(state_name, kScreenSaverStates_[i]) == 0) {
-      return static_cast<ScreenSaverState>(i);
-    }
-  }
-  DLOG(WARNING) << "unknown screen-saver state: " << state_name;
-  return kUnknownScreenSaverState;
-}
-
 void MetricsDaemon::SessionStateChanged(const char* state_name, Time now) {
   DLOG(INFO) << "user session state: " << state_name;
   session_state_ = LookupSessionState(state_name);
diff --git a/metrics/metrics_daemon.h b/metrics/metrics_daemon.h
index 835aca3..ea4771f 100644
--- a/metrics/metrics_daemon.h
+++ b/metrics/metrics_daemon.h
@@ -20,7 +20,6 @@
       : daily_use_record_file_(NULL),
         network_state_(kUnknownNetworkState),
         power_state_(kUnknownPowerState),
-        screensaver_state_(kUnknownScreenSaverState),
         session_state_(kUnknownSessionState),
         user_active_(false),
         daily_use_day_last_(0),
@@ -72,14 +71,6 @@
     kNumberPowerStates
   };
 
-  // The screen-saver states (see screensaver_states.h).
-  enum ScreenSaverState {
-    kUnknownScreenSaverState = -1, // Initial/unknown screen-saver state.
-#define STATE(name, capname) kScreenSaverState ## capname,
-#include "screensaver_states.h"
-    kNumberScreenSaverStates
-  };
-
   // The user session states (see session_states.h).
   enum SessionState {
     kUnknownSessionState = -1, // Initial/unknown user session state.
@@ -115,9 +106,6 @@
   // Array of power states.
   static const char* kPowerStates_[kNumberPowerStates];
 
-  // Array of screen-saver states.
-  static const char* kScreenSaverStates_[kNumberScreenSaverStates];
-
   // Array of user session states.
   static const char* kSessionStates_[kNumberSessionStates];
 
@@ -141,12 +129,6 @@
   // Given the state name, returns the state id.
   PowerState LookupPowerState(const char* state_name);
 
-  // Processes screen-saver state change.
-  void ScreenSaverStateChanged(const char* state_name, base::Time now);
-
-  // Given the state name, returns the state id.
-  ScreenSaverState LookupScreenSaverState(const char* state_name);
-
   // Processes user session state change.
   void SessionStateChanged(const char* state_name, base::Time now);
 
@@ -215,9 +197,6 @@
   // Current power state.
   PowerState power_state_;
 
-  // Current screen-saver state.
-  ScreenSaverState screensaver_state_;
-
   // Current user session state.
   SessionState session_state_;
 
diff --git a/metrics/metrics_daemon_test.cc b/metrics/metrics_daemon_test.cc
index 31f079d..49acd31 100644
--- a/metrics/metrics_daemon_test.cc
+++ b/metrics/metrics_daemon_test.cc
@@ -286,15 +286,6 @@
             daemon_.LookupPowerState("somestate"));
 }
 
-TEST_F(MetricsDaemonTest, LookupScreenSaverState) {
-  EXPECT_EQ(MetricsDaemon::kScreenSaverStateLocked,
-            daemon_.LookupScreenSaverState("locked"));
-  EXPECT_EQ(MetricsDaemon::kScreenSaverStateUnlocked,
-            daemon_.LookupScreenSaverState("unlocked"));
-  EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState,
-            daemon_.LookupScreenSaverState("somestate"));
-}
-
 TEST_F(MetricsDaemonTest, LookupSessionState) {
   EXPECT_EQ(MetricsDaemon::kSessionStateStarted,
             daemon_.LookupSessionState("started"));
@@ -322,7 +313,7 @@
   DeleteDBusMessage(msg);
 
   msg = NewDBusSignalString("/",
-                            "org.chromium.Power.Manager",
+                            "org.chromium.PowerManager",
                             "PowerStateChanged",
                             "on");
   EXPECT_EQ(MetricsDaemon::kUnknownPowerState, daemon_.power_state_);
@@ -332,14 +323,12 @@
   DeleteDBusMessage(msg);
 
   msg = NewDBusSignalString("/",
-                            "org.chromium.ScreenSaver.Manager",
-                            "LockStateChanged",
-                            "unlocked");
-  EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState,
-            daemon_.screensaver_state_);
+                            "org.chromium.PowerManager",
+                            "ScreenIsUnlocked",
+                            "");
+  EXPECT_FALSE(daemon_.user_active_);
   res = MetricsDaemon::MessageFilter(/* connection */ NULL, msg, &daemon_);
-  EXPECT_EQ(MetricsDaemon::kScreenSaverStateUnlocked,
-            daemon_.screensaver_state_);
+  EXPECT_TRUE(daemon_.user_active_);
   EXPECT_EQ(DBUS_HANDLER_RESULT_HANDLED, res);
   DeleteDBusMessage(msg);
 
@@ -433,36 +422,6 @@
   EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 7, /* seconds */ 30);
 }
 
-TEST_F(MetricsDaemonTest, ScreenSaverStateChanged) {
-  EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState,
-            daemon_.screensaver_state_);
-
-  daemon_.ScreenSaverStateChanged("locked",
-                                  TestTime(5 * kSecondsPerDay + 10));
-  EXPECT_EQ(MetricsDaemon::kScreenSaverStateLocked,
-            daemon_.screensaver_state_);
-  EXPECT_FALSE(daemon_.user_active_);
-  EXPECT_EQ(TestTime(5 * kSecondsPerDay + 10), daemon_.user_active_last_);
-  EXPECT_EQ(5, daemon_.daily_use_day_last_);
-  EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
-
-  daemon_.ScreenSaverStateChanged("unlocked",
-                                  TestTime(5 * kSecondsPerDay + 100));
-  EXPECT_EQ(MetricsDaemon::kScreenSaverStateUnlocked,
-            daemon_.screensaver_state_);
-  EXPECT_TRUE(daemon_.user_active_);
-  EXPECT_EQ(TestTime(5 * kSecondsPerDay + 100), daemon_.user_active_last_);
-  EXPECT_TRUE(AssertNoOrEmptyUseRecordFile());
-
-  daemon_.ScreenSaverStateChanged("otherstate",
-                                  TestTime(5 * kSecondsPerDay + 300));
-  EXPECT_EQ(MetricsDaemon::kUnknownScreenSaverState,
-            daemon_.screensaver_state_);
-  EXPECT_FALSE(daemon_.user_active_);
-  EXPECT_EQ(TestTime(5 * kSecondsPerDay + 300), daemon_.user_active_last_);
-  EXPECT_PRED_FORMAT2(AssertDailyUseRecord, /* day */ 5, /* seconds */ 200);
-}
-
 TEST_F(MetricsDaemonTest, SendMetric) {
   ExpectMetric("Dummy.Metric", 3, 1, 100, 50);
   daemon_.SendMetric("Dummy.Metric", /* sample */ 3,
diff --git a/metrics/screensaver_states.h b/metrics/screensaver_states.h
deleted file mode 100644
index 340142e..0000000
--- a/metrics/screensaver_states.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// A table of screen-saver states, to be included when building tabular things.
-//
-// See network_states.h for details.
-
-
-#ifndef STATE
-#define STATE(name, capname)
-#endif
-
-STATE(locked, Locked)
-STATE(unlocked, Unlocked)
-
-#undef STATE
