| Index: ash/wm/key_rewriter_event_filter.cc
|
| diff --git a/ash/wm/key_rewriter_event_filter.cc b/ash/wm/key_rewriter_event_filter.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..30ba84da34db0b3bda5e4d74da55a37547909a5d
|
| --- /dev/null
|
| +++ b/ash/wm/key_rewriter_event_filter.cc
|
| @@ -0,0 +1,61 @@
|
| +// 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 "ash/wm/key_rewriter_event_filter.h"
|
| +
|
| +#include "base/logging.h"
|
| +#include "ash/key_rewriter_delegate.h"
|
| +#include "ui/aura/event.h"
|
| +
|
| +namespace ash {
|
| +namespace internal {
|
| +
|
| +KeyRewriterEventFilter::KeyRewriterEventFilter() {}
|
| +
|
| +KeyRewriterEventFilter::~KeyRewriterEventFilter() {}
|
| +
|
| +void KeyRewriterEventFilter::SetKeyRewriterDelegate(
|
| + scoped_ptr<KeyRewriterDelegate> delegate) {
|
| + delegate_.swap(delegate);
|
| +}
|
| +
|
| +bool KeyRewriterEventFilter::PreHandleKeyEvent(
|
| + aura::Window* target, aura::KeyEvent* event) {
|
| + if (!delegate_.get())
|
| + return false;
|
| +
|
| + // Do not consume a translated key event which is generated by an IME.
|
| + if (event->type() == ui::ET_TRANSLATED_KEY_PRESS ||
|
| + event->type() == ui::ET_TRANSLATED_KEY_RELEASE) {
|
| + return false;
|
| + }
|
| +
|
| + switch (delegate_->RewriteOrFilterKeyEvent(event)) {
|
| + case KeyRewriterDelegate::ACTION_REWRITE_EVENT:
|
| + return false;
|
| + case KeyRewriterDelegate::ACTION_DROP_EVENT:
|
| + return true;
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return false;
|
| +}
|
| +
|
| +bool KeyRewriterEventFilter::PreHandleMouseEvent(
|
| + aura::Window* target, aura::MouseEvent* event) {
|
| + return false; // Not handled.
|
| +}
|
| +
|
| +ui::TouchStatus KeyRewriterEventFilter::PreHandleTouchEvent(
|
| + aura::Window* target, aura::TouchEvent* event) {
|
| + return ui::TOUCH_STATUS_UNKNOWN; // Not handled.
|
| +}
|
| +
|
| +ui::GestureStatus KeyRewriterEventFilter::PreHandleGestureEvent(
|
| + aura::Window* target, aura::GestureEvent* event) {
|
| + return ui::GESTURE_STATUS_UNKNOWN; // Not handled.
|
| +}
|
| +
|
| +} // namespace internal
|
| +} // namespace ash
|
|
|