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..7c069df4a6e49457a604db8c0de7b44675087b29 |
--- /dev/null |
+++ b/ash/wm/key_rewriter_event_filter.cc |
@@ -0,0 +1,52 @@ |
+// 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 "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; |
+ } |
+ |
+ return delegate_->RewriteOrFilterKeyEvent(event); |
+} |
+ |
+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 |