event_rewriter_event_filter.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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#include "ash/wm/event_rewriter_event_filter.h" 6 7#include "ash/event_rewriter_delegate.h" 8#include "base/logging.h" 9#include "ui/base/events/event.h" 10 11namespace ash { 12namespace internal { 13 14EventRewriterEventFilter::EventRewriterEventFilter() {} 15 16EventRewriterEventFilter::~EventRewriterEventFilter() {} 17 18void EventRewriterEventFilter::SetEventRewriterDelegate( 19 scoped_ptr<EventRewriterDelegate> delegate) { 20 delegate_.swap(delegate); 21} 22 23bool EventRewriterEventFilter::PreHandleKeyEvent( 24 aura::Window* target, ui::KeyEvent* event) { 25 if (!delegate_.get()) 26 return false; 27 28 // Do not consume a translated key event which is generated by an IME. 29 if (event->type() == ui::ET_TRANSLATED_KEY_PRESS || 30 event->type() == ui::ET_TRANSLATED_KEY_RELEASE) { 31 return false; 32 } 33 34 switch (delegate_->RewriteOrFilterKeyEvent(event)) { 35 case EventRewriterDelegate::ACTION_REWRITE_EVENT: 36 return false; 37 case EventRewriterDelegate::ACTION_DROP_EVENT: 38 return true; 39 } 40 41 NOTREACHED(); 42 return false; 43} 44 45bool EventRewriterEventFilter::PreHandleMouseEvent( 46 aura::Window* target, ui::MouseEvent* event) { 47 if (!delegate_.get()) 48 return false; 49 50 switch (delegate_->RewriteOrFilterLocatedEvent(event)) { 51 case EventRewriterDelegate::ACTION_REWRITE_EVENT: 52 return false; 53 case EventRewriterDelegate::ACTION_DROP_EVENT: 54 return true; 55 } 56 57 NOTREACHED(); 58 return false; 59} 60 61ui::EventResult EventRewriterEventFilter::PreHandleTouchEvent( 62 aura::Window* target, ui::TouchEvent* event) { 63 return ui::ER_UNHANDLED; // Not handled. 64} 65 66ui::EventResult EventRewriterEventFilter::PreHandleGestureEvent( 67 aura::Window* target, ui::GestureEvent* event) { 68 return ui::ER_UNHANDLED; // Not handled. 69} 70 71} // namespace internal 72} // namespace ash 73