| // Copyright 2014 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 ATHENA_INPUT_PUBLIC_INPUT_MANAGER_H_ |
| #define ATHENA_INPUT_PUBLIC_INPUT_MANAGER_H_ |
| |
| #include "athena/athena_export.h" |
| |
| namespace aura { |
| class Window; |
| } |
| |
| namespace ui { |
| class EventTarget; |
| } |
| |
| namespace athena { |
| class AcceleratorManager; |
| |
| class PowerButtonObserver { |
| public: |
| enum State { |
| PRESSED, |
| LONG_PRESSED, |
| RELEASED, |
| }; |
| virtual ~PowerButtonObserver() {} |
| virtual void OnPowerButtonStateChanged(State state) = 0; |
| }; |
| |
| class ATHENA_EXPORT InputManager { |
| public: |
| // Creates and deletes the singleton object of the InputManager |
| // implementation. |
| static InputManager* Create(); |
| static InputManager* Get(); |
| static void Shutdown(); |
| |
| // TODO(oshima): Fix the initialization process and replace this |
| // with EnvObserver::WindowInitialized |
| virtual void OnRootWindowCreated(aura::Window* root_window) = 0; |
| |
| // Add/remove power button observer. |
| virtual void AddPowerButtonObserver(PowerButtonObserver* observer) = 0; |
| virtual void RemovePowerButtonObserver(PowerButtonObserver* observer) = 0; |
| |
| virtual ui::EventTarget* GetTopmostEventTarget() = 0; |
| virtual AcceleratorManager* GetAcceleratorManager() = 0; |
| |
| virtual ~InputManager() {} |
| }; |
| |
| } // namespace athena |
| |
| #endif // ATHENA_INPUT_PUBLIC_INPUT_MANAGER_H_ |