diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index 1d486a847f222..fb5679cacf77f 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -59,7 +59,6 @@
 #include "chrome/browser/chromeos/net/network_portal_detector.h"
 #include "chrome/browser/chromeos/power/brightness_observer.h"
 #include "chrome/browser/chromeos/power/idle_action_warning_observer.h"
-#include "chrome/browser/chromeos/power/output_observer.h"
 #include "chrome/browser/chromeos/power/power_button_observer.h"
 #include "chrome/browser/chromeos/power/resume_observer.h"
 #include "chrome/browser/chromeos/power/screen_dimming_observer.h"
@@ -95,7 +94,6 @@
 #include "chromeos/dbus/power_manager_client.h"
 #include "chromeos/dbus/session_manager_client.h"
 #include "chromeos/disks/disk_mount_manager.h"
-#include "chromeos/display/output_configurator.h"
 #include "chromeos/network/geolocation_handler.h"
 #include "chromeos/network/network_change_notifier_chromeos.h"
 #include "chromeos/network/network_change_notifier_factory_chromeos.h"
@@ -613,7 +611,6 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() {
   // Initialize the brightness observer so that we'll display an onscreen
   // indication of brightness changes during login.
   brightness_observer_.reset(new BrightnessObserver());
-  output_observer_.reset(new OutputObserver());
   resume_observer_.reset(new ResumeObserver());
   screen_lock_observer_.reset(new ScreenLockObserver());
   if (CommandLine::ForCurrentProcess()->HasSwitch(
@@ -726,7 +723,6 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() {
   suspend_observer_.reset();
   resume_observer_.reset();
   brightness_observer_.reset();
-  output_observer_.reset();
   retail_mode_power_save_blocker_.reset();
 
   // The XInput2 event listener needs to be shut down earlier than when
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.h b/chrome/browser/chromeos/chrome_browser_main_chromeos.h
index fff412191d042..d2120b5b25727 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.h
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.h
@@ -25,7 +25,6 @@ class BrightnessObserver;
 class DisplayConfigurationObserver;
 class IdleActionWarningObserver;
 class MagnificationManager;
-class OutputObserver;
 class PowerButtonObserver;
 class ResumeObserver;
 class ScreenDimmingObserver;
@@ -80,7 +79,6 @@ class ChromeBrowserMainPartsChromeos : public ChromeBrowserMainPartsLinux {
   scoped_ptr<BrightnessObserver> brightness_observer_;
   scoped_ptr<DisplayConfigurationObserver> display_configuration_observer_;
   scoped_ptr<default_app_order::ExternalLoader> app_order_loader_;
-  scoped_ptr<OutputObserver> output_observer_;
   scoped_ptr<SuspendObserver> suspend_observer_;
   scoped_ptr<ResumeObserver> resume_observer_;
   scoped_ptr<ScreenLockObserver> screen_lock_observer_;
diff --git a/chrome/browser/chromeos/power/output_observer.cc b/chrome/browser/chromeos/power/output_observer.cc
deleted file mode 100644
index 0cbe05dd39787..0000000000000
--- a/chrome/browser/chromeos/power/output_observer.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/power/output_observer.h"
-
-#include "ash/shell.h"
-#include "ash/wm/user_activity_detector.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/display/output_configurator.h"
-
-namespace chromeos {
-
-OutputObserver::OutputObserver() {
-  DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this);
-}
-
-OutputObserver::~OutputObserver() {
-  DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
-}
-
-void OutputObserver::ScreenPowerSet(bool power_on, bool all_displays) {
-  // Turning displays off when the device becomes idle or on just before we
-  // suspend may trigger a mouse move, which would then be incorrectly
-  // reported as user activity.  Let the UserActivityDetector know so that
-  // it can ignore such events.
-  ash::Shell::GetInstance()->user_activity_detector()->OnDisplayPowerChanging();
-
-  DisplayPowerState state = DISPLAY_POWER_ALL_ON;
-  if (power_on && all_displays)
-    state = DISPLAY_POWER_ALL_ON;
-  else if (power_on && !all_displays)
-    state = DISPLAY_POWER_INTERNAL_ON_EXTERNAL_OFF;
-  else if (!power_on && all_displays)
-    state = DISPLAY_POWER_ALL_OFF;
-  else if (!power_on && !all_displays)
-    state = DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON;
-
-  ash::Shell::GetInstance()->output_configurator()->SetDisplayPower(
-      state, false);
-}
-
-}  // namespace chromeos
diff --git a/chrome/browser/chromeos/power/output_observer.h b/chrome/browser/chromeos/power/output_observer.h
deleted file mode 100644
index da0b90ea82d12..0000000000000
--- a/chrome/browser/chromeos/power/output_observer.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CHROMEOS_POWER_OUTPUT_OBSERVER_H_
-#define CHROME_BROWSER_CHROMEOS_POWER_OUTPUT_OBSERVER_H_
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "chromeos/dbus/power_manager_client.h"
-
-namespace chromeos {
-
-// This observer listens for when video outputs have been turned off so that the
-// corresponding CRTCs can be disabled to force the connected output off.
-// TODO(derat): Remove this class after powerd is calling the method
-// exported by DisplayPowerServiceProvider instead.
-class OutputObserver : public PowerManagerClient::Observer {
- public:
-  // This class registers/unregisters itself as an observer in ctor/dtor.
-  OutputObserver();
-  virtual ~OutputObserver();
-
- private:
-  // PowerManagerClient::Observer implementation.
-  virtual void ScreenPowerSet(bool power_on, bool all_displays) OVERRIDE;
-
-  DISALLOW_COPY_AND_ASSIGN(OutputObserver);
-};
-
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_CHROMEOS_POWER_OUTPUT_OBSERVER_H_
diff --git a/chrome/browser/chromeos/power/user_activity_notifier.cc b/chrome/browser/chromeos/power/user_activity_notifier.cc
index 7daa77a135569..2273963c47f42 100644
--- a/chrome/browser/chromeos/power/user_activity_notifier.cc
+++ b/chrome/browser/chromeos/power/user_activity_notifier.cc
@@ -32,7 +32,7 @@ void UserActivityNotifier::OnUserActivity() {
   // comparison.
   if (last_notify_time_.is_null() ||
       (now - last_notify_time_).InSeconds() >= kNotifyIntervalSec) {
-    DBusThreadManager::Get()->GetPowerManagerClient()->NotifyUserActivity(now);
+    DBusThreadManager::Get()->GetPowerManagerClient()->NotifyUserActivity();
     last_notify_time_ = now;
   }
 }
diff --git a/chrome/chrome_browser_chromeos.gypi b/chrome/chrome_browser_chromeos.gypi
index 78ee648ce13fc..acc7249af5b35 100644
--- a/chrome/chrome_browser_chromeos.gypi
+++ b/chrome/chrome_browser_chromeos.gypi
@@ -611,8 +611,6 @@
         'browser/chromeos/power/idle_action_warning_dialog_view.h',
         'browser/chromeos/power/idle_action_warning_observer.cc',
         'browser/chromeos/power/idle_action_warning_observer.h',
-        'browser/chromeos/power/output_observer.cc',
-        'browser/chromeos/power/output_observer.h',
         'browser/chromeos/power/power_button_observer.cc',
         'browser/chromeos/power/power_button_observer.h',
         'browser/chromeos/power/resume_observer.cc',
diff --git a/chromeos/dbus/mock_dbus_thread_manager.cc b/chromeos/dbus/mock_dbus_thread_manager.cc
index 59f90ed58a2d0..e6777eedc9a0b 100644
--- a/chromeos/dbus/mock_dbus_thread_manager.cc
+++ b/chromeos/dbus/mock_dbus_thread_manager.cc
@@ -125,7 +125,7 @@ MockDBusThreadManager::MockDBusThreadManager()
       .Times(AnyNumber());
   EXPECT_CALL(*mock_power_manager_client_.get(), RemoveObserver(_))
       .Times(AnyNumber());
-  EXPECT_CALL(*mock_power_manager_client_.get(), NotifyUserActivity(_))
+  EXPECT_CALL(*mock_power_manager_client_.get(), NotifyUserActivity())
       .Times(AnyNumber());
   EXPECT_CALL(*mock_power_manager_client_.get(), NotifyVideoActivity(_, _))
       .Times(AnyNumber());
diff --git a/chromeos/dbus/mock_power_manager_client.h b/chromeos/dbus/mock_power_manager_client.h
index 32a5cd94a10d4..741a1e748a30a 100644
--- a/chromeos/dbus/mock_power_manager_client.h
+++ b/chromeos/dbus/mock_power_manager_client.h
@@ -32,7 +32,7 @@ class MockPowerManagerClient : public PowerManagerClient {
   MOCK_METHOD0(RequestShutdown, void(void));
   MOCK_METHOD1(RequestIdleNotification, void(int64));
   MOCK_METHOD0(RequestActiveNotification, void(void));
-  MOCK_METHOD1(NotifyUserActivity, void(const base::TimeTicks&));
+  MOCK_METHOD0(NotifyUserActivity, void(void));
   MOCK_METHOD2(NotifyVideoActivity, void(const base::TimeTicks&, bool));
   MOCK_METHOD1(SetPolicy, void(const power_manager::PowerManagementPolicy&));
   MOCK_METHOD1(SetIsProjecting, void(bool));
diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc
index ef15fbee6a6b3..f392d9fdf82e4 100644
--- a/chromeos/dbus/power_manager_client.cc
+++ b/chromeos/dbus/power_manager_client.cc
@@ -68,15 +68,6 @@ class PowerManagerClientImpl : public PowerManagerClient {
         base::Bind(&PowerManagerClientImpl::SignalConnected,
                    weak_ptr_factory_.GetWeakPtr()));
 
-    // TODO(derat): Stop listening for this.
-    power_manager_proxy_->ConnectToSignal(
-        power_manager::kPowerManagerInterface,
-        power_manager::kSetScreenPowerSignal,
-        base::Bind(&PowerManagerClientImpl::ScreenPowerSignalReceived,
-                   weak_ptr_factory_.GetWeakPtr()),
-        base::Bind(&PowerManagerClientImpl::SignalConnected,
-                   weak_ptr_factory_.GetWeakPtr()));
-
     power_manager_proxy_->ConnectToSignal(
         power_manager::kPowerManagerInterface,
         power_manager::kPowerSupplyPollSignal,
@@ -255,17 +246,8 @@ class PowerManagerClientImpl : public PowerManagerClient {
         dbus::ObjectProxy::EmptyResponseCallback());
   }
 
-  virtual void NotifyUserActivity(
-      const base::TimeTicks& last_activity_time) OVERRIDE {
-    dbus::MethodCall method_call(
-        power_manager::kPowerManagerInterface,
-        power_manager::kHandleUserActivityMethod);
-    dbus::MessageWriter writer(&method_call);
-    writer.AppendInt64(last_activity_time.ToInternalValue());
-    power_manager_proxy_->CallMethod(
-        &method_call,
-        dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
-        dbus::ObjectProxy::EmptyResponseCallback());
+  virtual void NotifyUserActivity() OVERRIDE {
+    SimpleMethodCallToPowerManager(power_manager::kHandleUserActivityMethod);
   }
 
   virtual void NotifyVideoActivity(
@@ -373,22 +355,6 @@ class PowerManagerClientImpl : public PowerManagerClient {
                       BrightnessChanged(brightness_level, user_initiated));
   }
 
-  void ScreenPowerSignalReceived(dbus::Signal* signal) {
-    dbus::MessageReader reader(signal);
-    bool dbus_power_on = false;
-    bool dbus_all_displays = false;
-    if (reader.PopBool(&dbus_power_on) &&
-        reader.PopBool(&dbus_all_displays)) {
-      VLOG(1) << "Screen power set to " << dbus_power_on
-              << " for all displays " << dbus_all_displays;
-      FOR_EACH_OBSERVER(Observer, observers_,
-                        ScreenPowerSet(dbus_power_on, dbus_all_displays));
-    } else {
-      LOG(ERROR) << "screen power signal had incorrect parameters: "
-                 << signal->ToString();
-    }
-  }
-
   void PowerSupplyPollReceived(dbus::Signal* unused_signal) {
     VLOG(1) << "Received power supply poll signal.";
     RequestStatusUpdate(UPDATE_POLL);
@@ -786,8 +752,7 @@ class PowerManagerClientStubImpl : public PowerManagerClient {
         base::TimeDelta::FromMilliseconds(threshold));
   }
 
-  virtual void NotifyUserActivity(
-      const base::TimeTicks& last_activity_time) OVERRIDE {}
+  virtual void NotifyUserActivity() OVERRIDE {}
   virtual void NotifyVideoActivity(
       const base::TimeTicks& last_activity_time,
       bool is_fullscreen) OVERRIDE {}
diff --git a/chromeos/dbus/power_manager_client.h b/chromeos/dbus/power_manager_client.h
index 7721c5b2b2ddc..5e23e98e90d5d 100644
--- a/chromeos/dbus/power_manager_client.h
+++ b/chromeos/dbus/power_manager_client.h
@@ -52,14 +52,6 @@ class CHROMEOS_EXPORT PowerManagerClient {
     // |user_initiated| is true if the action is initiated by the user.
     virtual void BrightnessChanged(int level, bool user_initiated) {}
 
-    // Called when a screen is turned on or off to request that Chrome enable or
-    // disable the corresponding CRTC for the output.
-    // |power_on| The new state of the power setting.
-    // |all_displays| True if this applies to all displays or false if it is
-    // the internal display only.
-    // TODO(derat): Remove this.
-    virtual void ScreenPowerSet(bool power_on, bool all_displays) {}
-
     // Called when power supply polling takes place.  |status| is a data
     // structure that contains the current state of the power supply.
     virtual void PowerChanged(const PowerSupplyStatus& status) {}
@@ -152,8 +144,7 @@ class CHROMEOS_EXPORT PowerManagerClient {
 
   // Notifies the power manager that the user is active (i.e. generating input
   // events).
-  virtual void NotifyUserActivity(
-      const base::TimeTicks& last_activity_time) = 0;
+  virtual void NotifyUserActivity() = 0;
 
   // Notifies the power manager that a video is currently playing. It also
   // includes whether or not the containing window for the video is fullscreen.