diff options
author | pkotwicz <pkotwicz@chromium.org> | 2015-01-21 18:15:00 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-22 02:15:50 +0000 |
commit | 9c19c84347ec4093b04e9ff205bba01d5265f803 (patch) | |
tree | 2cdee769bc86259f721827342faf6d0d96e785d0 /athena/input | |
parent | 7df6ea9c6c0cd8fee6eb5c5d29a4791f1c7c617e (diff) | |
download | chromium_src-9c19c84347ec4093b04e9ff205bba01d5265f803.zip chromium_src-9c19c84347ec4093b04e9ff205bba01d5265f803.tar.gz chromium_src-9c19c84347ec4093b04e9ff205bba01d5265f803.tar.bz2 |
Delete athena/
Athena is deprecated and is not maintained. Delete athena/
BUG=440818
TEST=None
TBR=oshima, sky
Review URL: https://codereview.chromium.org/863033002
Cr-Commit-Position: refs/heads/master@{#312526}
Diffstat (limited to 'athena/input')
-rw-r--r-- | athena/input/DEPS | 21 | ||||
-rw-r--r-- | athena/input/accelerator_manager_impl.cc | 368 | ||||
-rw-r--r-- | athena/input/accelerator_manager_impl.h | 90 | ||||
-rw-r--r-- | athena/input/accelerator_manager_unittest.cc | 143 | ||||
-rw-r--r-- | athena/input/input_manager_impl.cc | 116 | ||||
-rw-r--r-- | athena/input/input_manager_impl.h | 65 | ||||
-rw-r--r-- | athena/input/input_manager_unittest.cc | 120 | ||||
-rw-r--r-- | athena/input/power_button_controller.cc | 131 | ||||
-rw-r--r-- | athena/input/power_button_controller.h | 56 | ||||
-rw-r--r-- | athena/input/public/DEPS | 4 | ||||
-rw-r--r-- | athena/input/public/accelerator_manager.h | 96 | ||||
-rw-r--r-- | athena/input/public/input_manager.h | 56 |
12 files changed, 0 insertions, 1266 deletions
diff --git a/athena/input/DEPS b/athena/input/DEPS deleted file mode 100644 index 36df410..0000000 --- a/athena/input/DEPS +++ /dev/null @@ -1,21 +0,0 @@ -include_rules = [ - "+chromeos", - "+ui/aura", - "+ui/base", - "+ui/events", - "+ui/wm/core", - "+ui/wm/public", - "+ui/views", -] - -specific_include_rules = { - # exported for test. - "input_manager_impl\.h": [ - "+athena/athena_export.h", - ], - # allows for test. - ".*test\.cc": [ - "+athena/activity/public", - "+athena/wm/public", - ], -} diff --git a/athena/input/accelerator_manager_impl.cc b/athena/input/accelerator_manager_impl.cc deleted file mode 100644 index c1e037a..0000000 --- a/athena/input/accelerator_manager_impl.cc +++ /dev/null @@ -1,368 +0,0 @@ -// 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. - -#include "athena/input/accelerator_manager_impl.h" - -#include "athena/input/public/input_manager.h" -#include "athena/util/switches.h" -#include "base/logging.h" -#include "ui/aura/window.h" -#include "ui/base/accelerators/accelerator_manager.h" -#include "ui/events/event.h" -#include "ui/events/event_target.h" -#include "ui/views/focus/focus_manager.h" -#include "ui/views/focus/focus_manager_delegate.h" -#include "ui/views/focus/focus_manager_factory.h" -#include "ui/wm/core/accelerator_delegate.h" -#include "ui/wm/core/accelerator_filter.h" -#include "ui/wm/core/nested_accelerator_controller.h" -#include "ui/wm/core/nested_accelerator_delegate.h" -#include "ui/wm/public/dispatcher_client.h" - -namespace athena { - -// This wrapper interface provides a common interface that handles global -// accelerators as well as local accelerators. -class AcceleratorManagerImpl::AcceleratorWrapper { - public: - virtual ~AcceleratorWrapper() {} - virtual void Register(const ui::Accelerator& accelerator, - ui::AcceleratorTarget* target) = 0; - virtual void Unregister(const ui::Accelerator& accelerator, - ui::AcceleratorTarget* target) = 0; - virtual bool Process(const ui::Accelerator& accelerator) = 0; - virtual ui::AcceleratorTarget* GetCurrentTarget( - const ui::Accelerator& accelerator) const = 0; -}; - -namespace { - -// Accelerators inside nested message loop are handled by -// wm::NestedAcceleratorController while accelerators in normal case are -// handled by wm::AcceleratorFilter. These delegates act bridges in these -// two different environment so that AcceleratorManagerImpl can handle -// accelerators in an uniform way. - -class NestedAcceleratorDelegate : public wm::NestedAcceleratorDelegate { - public: - explicit NestedAcceleratorDelegate( - AcceleratorManagerImpl* accelerator_manager) - : accelerator_manager_(accelerator_manager) {} - ~NestedAcceleratorDelegate() override {} - - private: - // wm::NestedAcceleratorDelegate: - Result ProcessAccelerator(const ui::Accelerator& accelerator) override { - return accelerator_manager_->Process(accelerator) ? RESULT_PROCESSED - : RESULT_NOT_PROCESSED; - } - - AcceleratorManagerImpl* accelerator_manager_; - - DISALLOW_COPY_AND_ASSIGN(NestedAcceleratorDelegate); -}; - -class AcceleratorDelegate : public wm::AcceleratorDelegate { - public: - explicit AcceleratorDelegate(AcceleratorManagerImpl* accelerator_manager) - : accelerator_manager_(accelerator_manager) {} - ~AcceleratorDelegate() override {} - - private: - // wm::AcceleratorDelegate: - bool ProcessAccelerator(const ui::KeyEvent& event, - const ui::Accelerator& accelerator, - KeyType key_type) override { - aura::Window* target = static_cast<aura::Window*>(event.target()); - if (!target->IsRootWindow() && - !accelerator_manager_->IsRegistered(accelerator, AF_RESERVED)) { - // TODO(oshima): do the same when the active window is in fullscreen. - return false; - } - return accelerator_manager_->Process(accelerator); - } - - AcceleratorManagerImpl* accelerator_manager_; - - DISALLOW_COPY_AND_ASSIGN(AcceleratorDelegate); -}; - -class FocusManagerDelegate : public views::FocusManagerDelegate { - public: - explicit FocusManagerDelegate(AcceleratorManagerImpl* accelerator_manager) - : accelerator_manager_(accelerator_manager) {} - ~FocusManagerDelegate() override {} - - bool ProcessAccelerator(const ui::Accelerator& accelerator) override { - return accelerator_manager_->Process(accelerator); - } - - ui::AcceleratorTarget* GetCurrentTargetForAccelerator( - const ui::Accelerator& accelerator) const override { - return accelerator_manager_->IsRegistered(accelerator, AF_NONE) - ? accelerator_manager_ - : nullptr; - } - - private: - AcceleratorManagerImpl* accelerator_manager_; - - DISALLOW_COPY_AND_ASSIGN(FocusManagerDelegate); -}; - -// Key strokes must be sent to web contents to give them a chance to -// consume them unless they are reserved, and unhandled key events are -// sent back to focus manager asynchronously. This installs the athena's -// focus manager that handles athena shell's accelerators. -class FocusManagerFactory : public views::FocusManagerFactory { - public: - explicit FocusManagerFactory(AcceleratorManagerImpl* accelerator_manager) - : accelerator_manager_(accelerator_manager) {} - ~FocusManagerFactory() override {} - - views::FocusManager* CreateFocusManager(views::Widget* widget, - bool desktop_widget) override { - return new views::FocusManager( - widget, - desktop_widget ? nullptr - : new FocusManagerDelegate(accelerator_manager_)); - } - - private: - AcceleratorManagerImpl* accelerator_manager_; - - DISALLOW_COPY_AND_ASSIGN(FocusManagerFactory); -}; - -class UIAcceleratorManagerWrapper - : public AcceleratorManagerImpl::AcceleratorWrapper { - public: - UIAcceleratorManagerWrapper() - : ui_accelerator_manager_(new ui::AcceleratorManager) {} - ~UIAcceleratorManagerWrapper() override {} - - virtual void Register(const ui::Accelerator& accelerator, - ui::AcceleratorTarget* target) override { - ui_accelerator_manager_->Register( - accelerator, ui::AcceleratorManager::kNormalPriority, target); - } - - virtual void Unregister(const ui::Accelerator& accelerator, - ui::AcceleratorTarget* target) override { - ui_accelerator_manager_->Unregister(accelerator, target); - } - - virtual bool Process(const ui::Accelerator& accelerator) override { - return ui_accelerator_manager_->Process(accelerator); - } - - virtual ui::AcceleratorTarget* GetCurrentTarget( - const ui::Accelerator& accelerator) const override { - return ui_accelerator_manager_->GetCurrentTarget(accelerator); - } - - private: - scoped_ptr<ui::AcceleratorManager> ui_accelerator_manager_; - - DISALLOW_COPY_AND_ASSIGN(UIAcceleratorManagerWrapper); -}; - -class FocusManagerWrapper : public AcceleratorManagerImpl::AcceleratorWrapper { - public: - explicit FocusManagerWrapper(views::FocusManager* focus_manager) - : focus_manager_(focus_manager) {} - ~FocusManagerWrapper() override {} - - virtual void Register(const ui::Accelerator& accelerator, - ui::AcceleratorTarget* target) override { - return focus_manager_->RegisterAccelerator( - accelerator, ui::AcceleratorManager::kNormalPriority, target); - } - - virtual void Unregister(const ui::Accelerator& accelerator, - ui::AcceleratorTarget* target) override { - focus_manager_->UnregisterAccelerator(accelerator, target); - } - - virtual bool Process(const ui::Accelerator& accelerator) override { - NOTREACHED(); - return true; - } - - virtual ui::AcceleratorTarget* GetCurrentTarget( - const ui::Accelerator& accelerator) const override { - return focus_manager_->GetCurrentTargetForAccelerator(accelerator); - } - - private: - views::FocusManager* focus_manager_; - - DISALLOW_COPY_AND_ASSIGN(FocusManagerWrapper); -}; - -} // namespace - -class AcceleratorManagerImpl::InternalData { - public: - InternalData(int command_id, AcceleratorHandler* handler, int flags) - : command_id_(command_id), handler_(handler), flags_(flags) {} - - bool IsNonAutoRepeatable() const { return flags_ & AF_NON_AUTO_REPEATABLE; } - bool IsDebug() const { return flags_ & AF_DEBUG; } - int flags() const { return flags_; } - - bool IsCommandEnabled() const { - return handler_->IsCommandEnabled(command_id_); - } - - bool OnAcceleratorFired(const ui::Accelerator& accelerator) { - return handler_->OnAcceleratorFired(command_id_, accelerator); - } - - private: - int command_id_; - AcceleratorHandler* handler_; - int flags_; - - // This class is copyable by design. -}; - -// static -AcceleratorManagerImpl* -AcceleratorManagerImpl::CreateGlobalAcceleratorManager() { - return new AcceleratorManagerImpl(new UIAcceleratorManagerWrapper(), true); -} - -scoped_ptr<AcceleratorManager> AcceleratorManagerImpl::CreateForFocusManager( - views::FocusManager* focus_manager) { - return scoped_ptr<AcceleratorManager>( - new AcceleratorManagerImpl(new FocusManagerWrapper(focus_manager), - false)).Pass(); -} - -AcceleratorManagerImpl::~AcceleratorManagerImpl() { - nested_accelerator_controller_.reset(); - accelerator_filter_.reset(); - // Reset to use the default focus manager because the athena's - // FocusManager has the reference to this object. - if (global_) - views::FocusManagerFactory::Install(nullptr); -} - -void AcceleratorManagerImpl::Init() { - if (global_) - views::FocusManagerFactory::Install(new FocusManagerFactory(this)); - - ui::EventTarget* toplevel = InputManager::Get()->GetTopmostEventTarget(); - nested_accelerator_controller_.reset( - new wm::NestedAcceleratorController(new NestedAcceleratorDelegate(this))); - - scoped_ptr<wm::AcceleratorDelegate> accelerator_delegate( - new AcceleratorDelegate(this)); - - accelerator_filter_.reset( - new wm::AcceleratorFilter(accelerator_delegate.Pass(), - accelerator_history_.get())); - toplevel->AddPreTargetHandler(accelerator_filter_.get()); -} - -void AcceleratorManagerImpl::OnRootWindowCreated(aura::Window* root_window) { - aura::client::SetDispatcherClient(root_window, - nested_accelerator_controller_.get()); -} - -bool AcceleratorManagerImpl::Process(const ui::Accelerator& accelerator) { - return accelerator_wrapper_->Process(accelerator); -} - -bool AcceleratorManagerImpl::IsRegistered(const ui::Accelerator& accelerator, - int flags) const { - std::map<ui::Accelerator, InternalData>::const_iterator iter = - accelerators_.find(accelerator); - if (iter == accelerators_.end()) - return false; - DCHECK(accelerator_wrapper_->GetCurrentTarget(accelerator)); - return flags == AF_NONE || iter->second.flags() & flags; -} - -AcceleratorManagerImpl::AcceleratorManagerImpl( - AcceleratorWrapper* accelerator_wrapper, - bool global) - : accelerator_wrapper_(accelerator_wrapper), - accelerator_history_(new ui::AcceleratorHistory), - debug_accelerators_enabled_(switches::IsDebugAcceleratorsEnabled()), - global_(global) { -} - -void AcceleratorManagerImpl::RegisterAccelerators( - const AcceleratorData accelerators[], - size_t num_accelerators, - AcceleratorHandler* handler) { - for (size_t i = 0; i < num_accelerators; ++i) - RegisterAccelerator(accelerators[i], handler); -} - -void AcceleratorManagerImpl::SetDebugAcceleratorsEnabled(bool enabled) { - debug_accelerators_enabled_ = enabled; -} - -bool AcceleratorManagerImpl::AcceleratorPressed( - const ui::Accelerator& accelerator) { - std::map<ui::Accelerator, InternalData>::iterator iter = - accelerators_.find(accelerator); - DCHECK(iter != accelerators_.end()); - if (iter == accelerators_.end()) - return false; - InternalData& data = iter->second; - if (data.IsDebug() && !debug_accelerators_enabled_) - return false; - if (accelerator.IsRepeat() && data.IsNonAutoRepeatable()) - return false; - return data.IsCommandEnabled() ? data.OnAcceleratorFired(accelerator) : false; -} - -bool AcceleratorManagerImpl::CanHandleAccelerators() const { - return true; -} - -void AcceleratorManagerImpl::RegisterAccelerator( - const AcceleratorData& accelerator_data, - AcceleratorHandler* handler) { - ui::Accelerator accelerator(accelerator_data.keycode, - accelerator_data.keyevent_flags); - accelerator.set_type(accelerator_data.trigger_event == TRIGGER_ON_PRESS - ? ui::ET_KEY_PRESSED - : ui::ET_KEY_RELEASED); - accelerator_wrapper_->Register(accelerator, this); - accelerators_.insert( - std::make_pair(accelerator, - InternalData(accelerator_data.command_id, - handler, - accelerator_data.accelerator_flags))); -} - -void AcceleratorManagerImpl::UnregisterAccelerator( - const AcceleratorData& accelerator_data, - AcceleratorHandler* handler) { - ui::Accelerator accelerator(accelerator_data.keycode, - accelerator_data.keyevent_flags); - accelerator.set_type(accelerator_data.trigger_event == TRIGGER_ON_PRESS - ? ui::ET_KEY_PRESSED - : ui::ET_KEY_RELEASED); - accelerator_wrapper_->Unregister(accelerator, this); - accelerators_.erase(accelerator); -} - -// static -AcceleratorManager* AcceleratorManager::Get() { - return InputManager::Get()->GetAcceleratorManager(); -} - -// static -scoped_ptr<AcceleratorManager> AcceleratorManager::CreateForFocusManager( - views::FocusManager* focus_manager) { - return AcceleratorManagerImpl::CreateForFocusManager(focus_manager).Pass(); -} - -} // namespace athena diff --git a/athena/input/accelerator_manager_impl.h b/athena/input/accelerator_manager_impl.h deleted file mode 100644 index bd0c9a7..0000000 --- a/athena/input/accelerator_manager_impl.h +++ /dev/null @@ -1,90 +0,0 @@ -// 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_ACCELERATOR_MANAGER_H_ -#define ATHENA_INPUT_ACCELERATOR_MANAGER_H_ - -#include "athena/input/public/accelerator_manager.h" - -#include <map> - -#include "base/macros.h" -#include "ui/base/accelerators/accelerator.h" -#include "ui/base/accelerators/accelerator_history.h" -#include "ui/events/event_target_iterator.h" - -namespace aura { -class Window; -} - -namespace wm { -class AcceleratorFilter; -class NestedAcceleratorController; -} - -namespace athena { - -// AcceleratorManagerImpl provides a API to register accelerators -// for athena modules. It hides various details on accelerator handling -// such as how to handle accelerator in a nested loop, reserved accelerators -// and repeated accelerators. -class AcceleratorManagerImpl : public AcceleratorManager, - public ui::AcceleratorTarget { - public: - class AcceleratorWrapper; - - // Creates an AcceleratorManager for global accelerators. - // This is the one returned by AcceleratorManager::Get() - static AcceleratorManagerImpl* CreateGlobalAcceleratorManager(); - - // Creates an AcceleratorManager for focus manager. - static scoped_ptr<AcceleratorManager> CreateForFocusManager( - views::FocusManager* focus_manager); - - ~AcceleratorManagerImpl() override; - - void Init(); - - void OnRootWindowCreated(aura::Window* root_window); - - bool Process(const ui::Accelerator& accelerator); - - // AcceleratorManager: - // This is made public so that implementation classes can use this. - virtual bool IsRegistered(const ui::Accelerator& accelerator, - int flags) const override; - - private: - class InternalData; - - AcceleratorManagerImpl(AcceleratorWrapper* wrapper, bool global); - - // AcceleratorManager: - virtual void RegisterAccelerators(const AcceleratorData accelerators[], - size_t num_accelerators, - AcceleratorHandler* handler) override; - virtual void RegisterAccelerator(const AcceleratorData& accelerator_data, - AcceleratorHandler* handler) override; - virtual void UnregisterAccelerator(const AcceleratorData& accelerator_data, - AcceleratorHandler* handler) override; - virtual void SetDebugAcceleratorsEnabled(bool enabled) override; - - // ui::AcceleratorTarget: - virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) override; - virtual bool CanHandleAccelerators() const override; - - std::map<ui::Accelerator, InternalData> accelerators_; - scoped_ptr<AcceleratorWrapper> accelerator_wrapper_; - scoped_ptr<ui::AcceleratorHistory> accelerator_history_; - scoped_ptr<wm::AcceleratorFilter> accelerator_filter_; - scoped_ptr<wm::NestedAcceleratorController> nested_accelerator_controller_; - bool debug_accelerators_enabled_; - bool global_; - - DISALLOW_COPY_AND_ASSIGN(AcceleratorManagerImpl); -}; - -} // namespace athena - -#endif // ATHENA_INPUT_ACCELERATOR_MANAGER_H_ diff --git a/athena/input/accelerator_manager_unittest.cc b/athena/input/accelerator_manager_unittest.cc deleted file mode 100644 index 3298b11..0000000 --- a/athena/input/accelerator_manager_unittest.cc +++ /dev/null @@ -1,143 +0,0 @@ -// 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. - -#include "athena/input/public/accelerator_manager.h" - -#include "athena/activity/public/activity.h" -#include "athena/activity/public/activity_factory.h" -#include "athena/input/public/input_manager.h" -#include "athena/test/base/athena_test_base.h" -#include "athena/wm/public/window_manager.h" -#include "ui/events/test/event_generator.h" - -namespace athena { -namespace { - -const int kInvalidCommandId = -1; - -class TestHandler : public AcceleratorHandler { - public: - TestHandler() : fired_command_id_(kInvalidCommandId), enabled_(true) {} - ~TestHandler() override {} - - void set_enabled(bool enabled) { enabled_ = enabled; } - - int GetFiredCommandIdAndReset() { - int fired = fired_command_id_; - fired_command_id_ = kInvalidCommandId; - return fired; - } - - private: - // AcceleratorHandler: - virtual bool IsCommandEnabled(int command_id) const override { - return enabled_; - } - virtual bool OnAcceleratorFired(int command_id, - const ui::Accelerator& accelerator) override { - fired_command_id_ = command_id; - return true; - } - - int fired_command_id_; - bool enabled_; - - DISALLOW_COPY_AND_ASSIGN(TestHandler); -}; - -} // namespace - -typedef test::AthenaTestBase AcceleratorManagerTest; - -TEST_F(AcceleratorManagerTest, Basic) { - enum TestCommandId { - COMMAND_A, - COMMAND_B, - COMMAND_C, - COMMAND_D, - COMMAND_E, - }; - const AcceleratorData data[] = { - {TRIGGER_ON_PRESS, ui::VKEY_A, ui::EF_SHIFT_DOWN, COMMAND_A, AF_RESERVED}, - {TRIGGER_ON_RELEASE, ui::VKEY_B, ui::EF_SHIFT_DOWN, COMMAND_B, - AF_RESERVED}, - {TRIGGER_ON_PRESS, ui::VKEY_C, ui::EF_SHIFT_DOWN, COMMAND_C, - AF_RESERVED | AF_DEBUG}, - {TRIGGER_ON_PRESS, ui::VKEY_D, ui::EF_SHIFT_DOWN, COMMAND_D, - AF_RESERVED | AF_NON_AUTO_REPEATABLE}, - {TRIGGER_ON_PRESS, ui::VKEY_E, ui::EF_SHIFT_DOWN, COMMAND_E, AF_NONE}, - }; - AcceleratorManager* accelerator_manager = - InputManager::Get()->GetAcceleratorManager(); - TestHandler test_handler; - accelerator_manager->RegisterAccelerators( - data, arraysize(data), &test_handler); - - ui::test::EventGenerator generator(root_window()); - generator.PressKey(ui::VKEY_A, ui::EF_NONE); - EXPECT_EQ(kInvalidCommandId, test_handler.GetFiredCommandIdAndReset()); - - // Trigger on press. - generator.PressKey(ui::VKEY_A, ui::EF_SHIFT_DOWN); - EXPECT_EQ(COMMAND_A, test_handler.GetFiredCommandIdAndReset()); - generator.ReleaseKey(ui::VKEY_A, ui::EF_SHIFT_DOWN); - EXPECT_EQ(kInvalidCommandId, test_handler.GetFiredCommandIdAndReset()); - - // Trigger on release. - generator.PressKey(ui::VKEY_B, ui::EF_SHIFT_DOWN); - EXPECT_EQ(kInvalidCommandId, test_handler.GetFiredCommandIdAndReset()); - generator.ReleaseKey(ui::VKEY_B, ui::EF_SHIFT_DOWN); - EXPECT_EQ(COMMAND_B, test_handler.GetFiredCommandIdAndReset()); - - // Disable command. - test_handler.set_enabled(false); - generator.PressKey(ui::VKEY_A, ui::EF_SHIFT_DOWN); - EXPECT_EQ(kInvalidCommandId, test_handler.GetFiredCommandIdAndReset()); - test_handler.set_enabled(true); - generator.PressKey(ui::VKEY_A, ui::EF_SHIFT_DOWN); - EXPECT_EQ(COMMAND_A, test_handler.GetFiredCommandIdAndReset()); - - // Debug accelerators. - accelerator_manager->SetDebugAcceleratorsEnabled(false); - generator.PressKey(ui::VKEY_C, ui::EF_SHIFT_DOWN); - EXPECT_EQ(kInvalidCommandId, test_handler.GetFiredCommandIdAndReset()); - accelerator_manager->SetDebugAcceleratorsEnabled(true); - generator.PressKey(ui::VKEY_C, ui::EF_SHIFT_DOWN); - EXPECT_EQ(COMMAND_C, test_handler.GetFiredCommandIdAndReset()); - accelerator_manager->SetDebugAcceleratorsEnabled(false); - - // Non auto repeatable - generator.PressKey(ui::VKEY_D, ui::EF_SHIFT_DOWN); - EXPECT_EQ(COMMAND_D, test_handler.GetFiredCommandIdAndReset()); - generator.PressKey(ui::VKEY_D, ui::EF_SHIFT_DOWN | ui::EF_IS_REPEAT); - EXPECT_EQ(kInvalidCommandId, test_handler.GetFiredCommandIdAndReset()); - - // TODO(oshima): Add scenario where the key event is consumed by - // an app. - generator.PressKey(ui::VKEY_E, ui::EF_SHIFT_DOWN); - EXPECT_EQ(COMMAND_E, test_handler.GetFiredCommandIdAndReset()); -} - -TEST_F(AcceleratorManagerTest, CloseActivity) { - ActivityFactory* factory = ActivityFactory::Get(); - Activity* activity1 = - factory->CreateWebActivity(NULL, base::string16(), GURL()); - Activity::Show(activity1); - Activity::Delete(activity1); - - Activity* activity2 = - factory->CreateWebActivity(NULL, base::string16(), GURL()); - Activity::Show(activity2); - - // TODO(oshima): This shouldn't be necessary. Remove this once - // crbug.com/427113 is fixed. - RunAllPendingInMessageLoop(); - - ui::test::EventGenerator generator(root_window()); - generator.PressKey(ui::VKEY_F6, ui::EF_NONE); - EXPECT_TRUE(WindowManager::Get()->IsOverviewModeActive()); - Activity::Delete(activity2); -} - -} // namespace athena diff --git a/athena/input/input_manager_impl.cc b/athena/input/input_manager_impl.cc deleted file mode 100644 index bd901b8..0000000 --- a/athena/input/input_manager_impl.cc +++ /dev/null @@ -1,116 +0,0 @@ -// 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. - -#include "athena/input/input_manager_impl.h" - -#include "athena/input/power_button_controller.h" -#include "base/logging.h" -#include "ui/aura/env.h" -#include "ui/aura/window.h" - -namespace athena { -namespace { - -InputManager* instance = nullptr; - -} // namespace - -InputManagerImpl::InputManagerImpl() - : accelerator_manager_( - AcceleratorManagerImpl::CreateGlobalAcceleratorManager()), - power_button_controller_(new PowerButtonController) { - DCHECK(!instance); - instance = this; -} - -InputManagerImpl::~InputManagerImpl() { - DCHECK_EQ(instance, this); - Shutdown(); - instance = nullptr; -} - -void InputManagerImpl::Init() { - accelerator_manager_->Init(); - power_button_controller_->InstallAccelerators(); -} - -void InputManagerImpl::Shutdown() { - accelerator_manager_.reset(); -} - -void InputManagerImpl::OnRootWindowCreated(aura::Window* root_window) { - aura::client::SetEventClient(root_window, this); - accelerator_manager_->OnRootWindowCreated(root_window); -} - -ui::EventTarget* InputManagerImpl::GetTopmostEventTarget() { - return this; -} - -AcceleratorManager* InputManagerImpl::GetAcceleratorManager() { - return accelerator_manager_.get(); -} - -void InputManagerImpl::AddPowerButtonObserver(PowerButtonObserver* observer) { - power_button_controller_->AddPowerButtonObserver(observer); -} -void InputManagerImpl::RemovePowerButtonObserver( - PowerButtonObserver* observer) { - power_button_controller_->RemovePowerButtonObserver(observer); -} - -bool InputManagerImpl::CanProcessEventsWithinSubtree( - const aura::Window* window) const { - return window && !window->ignore_events(); -} - -ui::EventTarget* InputManagerImpl::GetToplevelEventTarget() { - return this; -} - -bool InputManagerImpl::CanAcceptEvent(const ui::Event& event) { - return true; -} - -ui::EventTarget* InputManagerImpl::GetParentTarget() { - return aura::Env::GetInstance(); -} - -scoped_ptr<ui::EventTargetIterator> InputManagerImpl::GetChildIterator() const { - return scoped_ptr<ui::EventTargetIterator>(); -} - -ui::EventTargeter* InputManagerImpl::GetEventTargeter() { - NOTREACHED(); - return nullptr; -} - -void InputManagerImpl::OnEvent(ui::Event* event) { -} - -int InputManagerImpl::SetPowerButtonTimeoutMsForTest(int timeout) { - return power_button_controller_->SetPowerButtonTimeoutMsForTest(timeout); -} - -// static -InputManager* InputManager::Create() { - (new InputManagerImpl)->Init(); - DCHECK(instance); - return instance; -} - -// static -InputManager* InputManager::Get() { - DCHECK(instance); - return instance; -} - -// static -void InputManager::Shutdown() { - DCHECK(instance); - delete instance; - DCHECK(!instance); -} - -} // namespace athena diff --git a/athena/input/input_manager_impl.h b/athena/input/input_manager_impl.h deleted file mode 100644 index bfebc34..0000000 --- a/athena/input/input_manager_impl.h +++ /dev/null @@ -1,65 +0,0 @@ -// 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_INPUT_MANAGER_IMPL_H_ -#define ATHENA_INPUT_INPUT_MANAGER_IMPL_H_ - -#include "athena/input/public/input_manager.h" - -#include "athena/athena_export.h" -#include "athena/input/accelerator_manager_impl.h" -#include "ui/aura/client/event_client.h" -#include "ui/events/event_target.h" - -namespace athena { -class PowerButtonController; - -namespace test { -class ScopedPowerButtonTimeoutShortener; -} - -class ATHENA_EXPORT InputManagerImpl : public InputManager, - public ui::EventTarget, - public aura::client::EventClient { - public: - InputManagerImpl(); - ~InputManagerImpl() override; - - void Init(); - void Shutdown(); - - private: - friend class test::ScopedPowerButtonTimeoutShortener; - - // InputManager: - virtual void OnRootWindowCreated(aura::Window* root_window) override; - virtual ui::EventTarget* GetTopmostEventTarget() override; - virtual AcceleratorManager* GetAcceleratorManager() override; - virtual void AddPowerButtonObserver(PowerButtonObserver* observer) override; - virtual void RemovePowerButtonObserver( - PowerButtonObserver* observer) override; - - // Overridden from aura::client::EventClient: - virtual bool CanProcessEventsWithinSubtree( - const aura::Window* window) const override; - virtual ui::EventTarget* GetToplevelEventTarget() override; - - // ui::EventTarget: - virtual bool CanAcceptEvent(const ui::Event& event) override; - virtual ui::EventTarget* GetParentTarget() override; - virtual scoped_ptr<ui::EventTargetIterator> GetChildIterator() const override; - virtual ui::EventTargeter* GetEventTargeter() override; - virtual void OnEvent(ui::Event* event) override; - - int SetPowerButtonTimeoutMsForTest(int timeout); - - scoped_ptr<AcceleratorManagerImpl> accelerator_manager_; - scoped_ptr<PowerButtonController> power_button_controller_; - - DISALLOW_COPY_AND_ASSIGN(InputManagerImpl); -}; - -} // namespace athena - -#endif // ATHENA_INPUT_INPUT_MANAGER_IMPL_H_ diff --git a/athena/input/input_manager_unittest.cc b/athena/input/input_manager_unittest.cc deleted file mode 100644 index 5b0305b..0000000 --- a/athena/input/input_manager_unittest.cc +++ /dev/null @@ -1,120 +0,0 @@ -// 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. - -#include "athena/input/input_manager_impl.h" - -#include "athena/input/public/accelerator_manager.h" -#include "athena/test/base/athena_test_base.h" -#include "athena/util/switches.h" -#include "base/command_line.h" -#include "base/run_loop.h" -#include "ui/events/test/event_generator.h" - -namespace athena { -namespace { - -class TestPowerButtonObserver : public PowerButtonObserver { - public: - TestPowerButtonObserver() : count_(0), state_(RELEASED) { - InputManager::Get()->AddPowerButtonObserver(this); - } - ~TestPowerButtonObserver() override { - InputManager::Get()->RemovePowerButtonObserver(this); - } - - int count() const { return count_; } - State state() const { return state_; } - - bool WaitForLongPress() { - run_loop_.Run(); - return state_ == LONG_PRESSED; - } - - private: - virtual void OnPowerButtonStateChanged( - PowerButtonObserver::State state) override { - state_ = state; - count_++; - if (state == LONG_PRESSED) { - DCHECK(run_loop_.running()); - run_loop_.Quit(); - } - } - base::RunLoop run_loop_; - int count_; - State state_; - - DISALLOW_COPY_AND_ASSIGN(TestPowerButtonObserver); -}; - -class InputManagerTest : public test::AthenaTestBase { - public: - InputManagerTest() {} - ~InputManagerTest() override {} - - void SetUp() override { - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); - command_line->AppendSwitch(switches::kEnableDebugAccelerators); - test::AthenaTestBase::SetUp(); - } - - private: - DISALLOW_COPY_AND_ASSIGN(InputManagerTest); -}; - -} // namespace - -namespace test { - -class ScopedPowerButtonTimeoutShortener { - public: - ScopedPowerButtonTimeoutShortener() - : original_timeout_( - GetInputManagerImpl()->SetPowerButtonTimeoutMsForTest(1)) {} - ~ScopedPowerButtonTimeoutShortener() { - GetInputManagerImpl()->SetPowerButtonTimeoutMsForTest(original_timeout_); - } - - private: - InputManagerImpl* GetInputManagerImpl() { - return static_cast<InputManagerImpl*>(InputManager::Get()); - } - - int original_timeout_; - DISALLOW_COPY_AND_ASSIGN(ScopedPowerButtonTimeoutShortener); -}; - -} // namespace test - -TEST_F(InputManagerTest, PowerButton) { - test::ScopedPowerButtonTimeoutShortener shortener; - TestPowerButtonObserver observer; - - ui::test::EventGenerator generator(root_window()); - generator.PressKey(ui::VKEY_P, ui::EF_NONE); - EXPECT_EQ(0, observer.count()); - - // Test short press. - generator.PressKey(ui::VKEY_P, ui::EF_ALT_DOWN); - EXPECT_EQ(1, observer.count()); - EXPECT_EQ(PowerButtonObserver::PRESSED, observer.state()); - generator.ReleaseKey(ui::VKEY_P, ui::EF_ALT_DOWN); - EXPECT_EQ(2, observer.count()); - EXPECT_EQ(PowerButtonObserver::RELEASED, observer.state()); - - // Test long press. - generator.PressKey(ui::VKEY_P, ui::EF_ALT_DOWN); - EXPECT_EQ(3, observer.count()); - EXPECT_EQ(PowerButtonObserver::PRESSED, observer.state()); - - EXPECT_TRUE(observer.WaitForLongPress()); - EXPECT_EQ(4, observer.count()); - EXPECT_EQ(PowerButtonObserver::LONG_PRESSED, observer.state()); - - generator.ReleaseKey(ui::VKEY_P, ui::EF_ALT_DOWN); - EXPECT_EQ(5, observer.count()); - EXPECT_EQ(PowerButtonObserver::RELEASED, observer.state()); -} - -} // namespace athena diff --git a/athena/input/power_button_controller.cc b/athena/input/power_button_controller.cc deleted file mode 100644 index 8dfca82..0000000 --- a/athena/input/power_button_controller.cc +++ /dev/null @@ -1,131 +0,0 @@ -// 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. - -#include "athena/input/power_button_controller.h" - -#include "athena/input/public/accelerator_manager.h" -#include "chromeos/dbus/dbus_thread_manager.h" -#include "ui/events/event_constants.h" - -namespace athena { -namespace { - -// The amount of time that the power button must be held to be -// treated as long press. -const int kLongPressTimeoutMs = 1000; - -enum { - CMD_DEBUG_POWER_BUTTON_PRESSED, - CMD_DEBUG_POWER_BUTTON_RELEASED, -}; - -} // namespace - -PowerButtonController::PowerButtonController() - : power_button_timeout_ms_(kLongPressTimeoutMs), - brightness_is_zero_(false) { - chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver( - this); -} - -PowerButtonController::~PowerButtonController() { - chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver( - this); -} - -void PowerButtonController::AddPowerButtonObserver( - PowerButtonObserver* observer) { - observers_.AddObserver(observer); -} - -void PowerButtonController::RemovePowerButtonObserver( - PowerButtonObserver* observer) { - observers_.RemoveObserver(observer); -} - -void PowerButtonController::InstallAccelerators() { - const AcceleratorData accelerator_data[] = { - {TRIGGER_ON_PRESS, - ui::VKEY_P, - ui::EF_ALT_DOWN, - CMD_DEBUG_POWER_BUTTON_PRESSED, - AF_DEBUG | AF_NON_AUTO_REPEATABLE}, - {TRIGGER_ON_RELEASE, - ui::VKEY_P, - ui::EF_ALT_DOWN, - CMD_DEBUG_POWER_BUTTON_RELEASED, - AF_DEBUG}, - }; - AcceleratorManager::Get()->RegisterAccelerators( - accelerator_data, arraysize(accelerator_data), this); -} - -int PowerButtonController::SetPowerButtonTimeoutMsForTest(int timeout) { - int old_timeout = power_button_timeout_ms_; - power_button_timeout_ms_ = timeout; - return old_timeout; -} - -void PowerButtonController::BrightnessChanged(int level, bool user_initiated) { - if (brightness_is_zero_) - zero_brightness_end_time_ = base::TimeTicks::Now(); - brightness_is_zero_ = (level == 0); -} - -void PowerButtonController::PowerButtonEventReceived( - bool down, - const base::TimeTicks& timestamp) { - // Ignore power button pressed while the screen is off - // (http://crbug.com/128451). - // TODO(oshima): This needs to be revisited for athena. - base::TimeDelta time_since_zero_brightness = - brightness_is_zero_ - ? base::TimeDelta() - : (base::TimeTicks::Now() - zero_brightness_end_time_); - const int kShortTimeMs = 10; - if (time_since_zero_brightness.InMilliseconds() <= kShortTimeMs) - return; - - if (down) { - FOR_EACH_OBSERVER(PowerButtonObserver, - observers_, - OnPowerButtonStateChanged(PowerButtonObserver::PRESSED)); - timer_.Start(FROM_HERE, - base::TimeDelta::FromMilliseconds(kLongPressTimeoutMs), - this, - &PowerButtonController::NotifyLongPress); - } else { - FOR_EACH_OBSERVER(PowerButtonObserver, - observers_, - OnPowerButtonStateChanged(PowerButtonObserver::RELEASED)); - timer_.Stop(); - } -} - -bool PowerButtonController::IsCommandEnabled(int command_id) const { - return true; -} - -bool PowerButtonController::OnAcceleratorFired( - int command_id, - const ui::Accelerator& accelerator) { - switch (command_id) { - case CMD_DEBUG_POWER_BUTTON_PRESSED: - PowerButtonEventReceived(true, base::TimeTicks()); - break; - case CMD_DEBUG_POWER_BUTTON_RELEASED: - PowerButtonEventReceived(false, base::TimeTicks()); - break; - } - return true; -} - -void PowerButtonController::NotifyLongPress() { - FOR_EACH_OBSERVER( - PowerButtonObserver, - observers_, - OnPowerButtonStateChanged(PowerButtonObserver::LONG_PRESSED)); -} - -} // namespace diff --git a/athena/input/power_button_controller.h b/athena/input/power_button_controller.h deleted file mode 100644 index 8a69358..0000000 --- a/athena/input/power_button_controller.h +++ /dev/null @@ -1,56 +0,0 @@ -// 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_POWER_BUTTON_CONTROLLER_H_ -#define ATHENA_INPUT_POWER_BUTTON_CONTROLLER_H_ - -#include "athena/input/public/accelerator_manager.h" -#include "athena/input/public/input_manager.h" -#include "base/observer_list.h" -#include "base/timer/timer.h" -#include "chromeos/dbus/power_manager_client.h" - -namespace athena { - -class PowerButtonController : public chromeos::PowerManagerClient::Observer, - public AcceleratorHandler { - public: - PowerButtonController(); - ~PowerButtonController() override; - - void AddPowerButtonObserver(PowerButtonObserver* observer); - void RemovePowerButtonObserver(PowerButtonObserver* observer); - - void InstallAccelerators(); - - // A timer callabck to notify the long press event. - int SetPowerButtonTimeoutMsForTest(int timeout); - - private: - // chromeos::PowerManagerClient::Observer: - virtual void BrightnessChanged(int level, bool user_initiated) override; - virtual void PowerButtonEventReceived( - bool down, - const base::TimeTicks& timestamp) override; - - // AcceleratorHandler: - virtual bool IsCommandEnabled(int command_id) const override; - virtual bool OnAcceleratorFired(int command_id, - const ui::Accelerator& accelerator) override; - - void NotifyLongPress(); - - int power_button_timeout_ms_; - ObserverList<PowerButtonObserver> observers_; - // The last time at which the screen brightness was 0%. - base::TimeTicks zero_brightness_end_time_; - bool brightness_is_zero_; - base::OneShotTimer<PowerButtonController> timer_; - - DISALLOW_COPY_AND_ASSIGN(PowerButtonController); -}; - -} // namespace athena - -#endif // ATHENA_INPUT_POWER_BUTTON_CONTROLLER_H_ diff --git a/athena/input/public/DEPS b/athena/input/public/DEPS deleted file mode 100644 index 941cfac..0000000 --- a/athena/input/public/DEPS +++ /dev/null @@ -1,4 +0,0 @@ -include_rules = [ - "-athena/input", - "+athena/athena_export.h", -] diff --git a/athena/input/public/accelerator_manager.h b/athena/input/public/accelerator_manager.h deleted file mode 100644 index adc44bf..0000000 --- a/athena/input/public/accelerator_manager.h +++ /dev/null @@ -1,96 +0,0 @@ -// 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_ACCELERATOR_MANAGER_H_ -#define ATHENA_INPUT_PUBLIC_ACCELERATOR_MANAGER_H_ - -#include "athena/athena_export.h" -#include "base/memory/scoped_ptr.h" -#include "ui/events/keycodes/keyboard_codes.h" - -namespace ui { -class Accelerator; -} - -namespace views { -class FocusManager; -} - -namespace athena { - -enum TriggerEvent { - TRIGGER_ON_PRESS, - TRIGGER_ON_RELEASE, -}; - -// Accelerator flags. -enum AcceleratorFlags { - AF_NONE = 0, - // Used for accelerators that should not be fired on auto repeated - // key event, such as toggling fullscrren. - AF_NON_AUTO_REPEATABLE = 1 << 0, - // Most key events are sent to applications first as they may - // want to consume them. Reserverd accelerators are reserved for OS - // and cannot be consumed by apps. (such as window cycling) - AF_RESERVED = 1 << 1, - // Used for accelerators that are useful only in debug mode. - AF_DEBUG = 1 << 2, -}; - -struct AcceleratorData { - // true if the accelerator should be triggered upon ui::ET_KEY_PRESSED - TriggerEvent trigger_event; - ui::KeyboardCode keycode; // KeyEvent event flags. - int keyevent_flags; // Combination of ui::KeyEventFlags - int command_id; // ID to distinguish - int accelerator_flags; // Combination of AcceleratorFlags; -}; - -// An interface that implements behavior for the set of -// accelerators. -class ATHENA_EXPORT AcceleratorHandler { - public: - virtual ~AcceleratorHandler() {} - - virtual bool IsCommandEnabled(int command_id) const = 0; - virtual bool OnAcceleratorFired(int command_id, - const ui::Accelerator& accelerator) = 0; -}; - -class ATHENA_EXPORT AcceleratorManager { - public: - // Returns an AcceleratorManager for global accelerators. - static AcceleratorManager* Get(); - - // Creates an AcceleratorManager for application windows that - // define their own accelerators. - static scoped_ptr<AcceleratorManager> CreateForFocusManager( - views::FocusManager* focus_manager); - - virtual ~AcceleratorManager() {} - - // Tells if the accelerator is registered with the given flag. If - // flags is AF_NONE, it simply tells if the accelerator is - // registered with any flags. - virtual bool IsRegistered(const ui::Accelerator& accelerator, - int flags) const = 0; - - // Register accelerators and its handler that will be invoked when - // one of accelerator is fired. - virtual void RegisterAccelerators(const AcceleratorData accelerators[], - size_t num_accelerators, - AcceleratorHandler* handler) = 0; - - virtual void RegisterAccelerator(const AcceleratorData& accelerator_data, - AcceleratorHandler* handler) = 0; - virtual void UnregisterAccelerator(const AcceleratorData& accelerator_data, - AcceleratorHandler* handler) = 0; - - // Enables/Disables accelerators that has a AF_DEBUG flag. - virtual void SetDebugAcceleratorsEnabled(bool enabled) = 0; -}; - -} // namespace athena - -#endif // ATHENA_INPUT_PUBLIC_ACCELERATOR_MANAGER_H_ diff --git a/athena/input/public/input_manager.h b/athena/input/public/input_manager.h deleted file mode 100644 index cd71681..0000000 --- a/athena/input/public/input_manager.h +++ /dev/null @@ -1,56 +0,0 @@ -// 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_ |