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.
5 #include "ash/wm/event_rewriter_event_filter.h"
7 #include "ash/event_rewriter_delegate.h"
8 #include "base/logging.h"
9 #include "ui/events/event.h"
11 #if defined(OS_CHROMEOS)
12 #include "ash/wm/sticky_keys.h"
17 EventRewriterEventFilter::EventRewriterEventFilter() {}
19 EventRewriterEventFilter::~EventRewriterEventFilter() {}
21 void EventRewriterEventFilter::SetEventRewriterDelegate(
22 scoped_ptr<EventRewriterDelegate> delegate) {
23 delegate_ = delegate.Pass();
26 void EventRewriterEventFilter::EnableStickyKeys(bool enabled) {
27 #if defined(OS_CHROMEOS)
29 sticky_keys_.reset(new StickyKeys());
35 void EventRewriterEventFilter::OnKeyEvent(ui::KeyEvent* event) {
39 // Do not consume a translated key event which is generated by an IME.
40 if (event->type() == ui::ET_TRANSLATED_KEY_PRESS ||
41 event->type() == ui::ET_TRANSLATED_KEY_RELEASE) {
45 switch (delegate_->RewriteOrFilterKeyEvent(event)) {
46 case EventRewriterDelegate::ACTION_REWRITE_EVENT:
48 case EventRewriterDelegate::ACTION_DROP_EVENT:
49 event->StopPropagation();
53 if (event->stopped_propagation())
56 #if defined(OS_CHROMEOS)
57 if (sticky_keys_.get() && sticky_keys_->HandleKeyEvent(event))
58 event->StopPropagation();
62 void EventRewriterEventFilter::OnMouseEvent(ui::MouseEvent* event) {
66 switch (delegate_->RewriteOrFilterLocatedEvent(event)) {
67 case EventRewriterDelegate::ACTION_REWRITE_EVENT:
69 case EventRewriterDelegate::ACTION_DROP_EVENT:
70 event->StopPropagation();
75 } // namespace internal