1 // Copyright (c) 2012 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 CHROME_BROWSER_CHROMEOS_POWER_POWER_BUTTON_OBSERVER_H_ 6 #define CHROME_BROWSER_CHROMEOS_POWER_POWER_BUTTON_OBSERVER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "chromeos/dbus/power_manager_client.h" 11 #include "chromeos/dbus/session_manager_client.h" 12 #include "content/public/browser/notification_observer.h" 13 #include "content/public/browser/notification_registrar.h" 14 15 namespace chromeos { 16 17 // Listens for power button, login, and screen lock events and passes them to 18 // the Aura shell's PowerButtonController class. 19 class PowerButtonObserver : public content::NotificationObserver, 20 public PowerManagerClient::Observer, 21 public SessionManagerClient::Observer { 22 public: 23 // This class registers/unregisters itself as an observer in ctor/dtor. 24 PowerButtonObserver(); 25 virtual ~PowerButtonObserver(); 26 27 private: 28 // content::NotificationObserver implementation: 29 virtual void Observe(int type, 30 const content::NotificationSource& source, 31 const content::NotificationDetails& details) OVERRIDE; 32 33 // PowerManagerObserver implementation: 34 virtual void PowerButtonEventReceived( 35 bool down, const base::TimeTicks& timestamp) OVERRIDE; 36 37 content::NotificationRegistrar registrar_; 38 39 DISALLOW_COPY_AND_ASSIGN(PowerButtonObserver); 40 }; 41 42 } // namespace chromeos 43 44 #endif // CHROME_BROWSER_CHROMEOS_POWER_POWER_BUTTON_OBSERVER_H_ 45