1 // Copyright 2014 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 #ifndef ASH_EVENTS_EVENT_REWRITER_CONTROLLER_IMPL_H_ 6 #define ASH_EVENTS_EVENT_REWRITER_CONTROLLER_IMPL_H_ 7 8 #include <memory> 9 #include <vector> 10 11 #include "ash/ash_export.h" 12 #include "ash/public/cpp/event_rewriter_controller.h" 13 #include "base/macros.h" 14 #include "ui/aura/env_observer.h" 15 16 namespace ui { 17 class EventRewriter; 18 } // namespace ui 19 20 namespace ash { 21 22 class AccessibilityEventRewriter; 23 class KeyboardDrivenEventRewriter; 24 25 // Owns ui::EventRewriters and ensures that they are added to each root window 26 // EventSource, current and future, in the order that they are added to this. 27 class ASH_EXPORT EventRewriterControllerImpl : public EventRewriterController, 28 public aura::EnvObserver { 29 public: 30 EventRewriterControllerImpl(); 31 ~EventRewriterControllerImpl() override; 32 33 // EventRewriterController: 34 void Initialize(ui::EventRewriterChromeOS::Delegate* event_rewriter_delegate, 35 AccessibilityEventRewriterDelegate* 36 accessibility_event_rewriter_delegate) override; 37 void AddEventRewriter(std::unique_ptr<ui::EventRewriter> rewriter) override; 38 void SetKeyboardDrivenEventRewriterEnabled(bool enabled) override; 39 void SetArrowToTabRewritingEnabled(bool enabled) override; 40 void OnUnhandledSpokenFeedbackEvent( 41 std::unique_ptr<ui::Event> event) override; 42 void CaptureAllKeysForSpokenFeedback(bool capture) override; 43 void SetSendMouseEventsToDelegate(bool value) override; 44 45 // aura::EnvObserver: 46 void OnHostInitialized(aura::WindowTreeHost* host) override; 47 48 private: 49 // The |EventRewriter|s managed by this controller. 50 std::vector<std::unique_ptr<ui::EventRewriter>> rewriters_; 51 52 // Owned by |rewriters_|. 53 AccessibilityEventRewriter* accessibility_event_rewriter_ = nullptr; 54 KeyboardDrivenEventRewriter* keyboard_driven_event_rewriter_ = nullptr; 55 56 DISALLOW_COPY_AND_ASSIGN(EventRewriterControllerImpl); 57 }; 58 59 } // namespace ash 60 61 #endif // ASH_EVENTS_EVENT_REWRITER_CONTROLLER_IMPL_H_ 62