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.
5 #include "chrome/browser/chromeos/events/event_rewriter_controller.h"
8 #include "ui/aura/window_tree_host.h"
9 #include "ui/events/event_source.h"
13 EventRewriterController::EventRewriterController() : initialized_(false) {
16 EventRewriterController::~EventRewriterController() {
17 // Remove the rewriters from every root window EventSource and destroy them.
18 for (EventRewriters::iterator rewriter_iter = rewriters_.begin();
19 rewriter_iter != rewriters_.end();
21 aura::Window::Windows windows = ash::Shell::GetAllRootWindows();
22 for (aura::Window::Windows::iterator window_iter = windows.begin();
23 window_iter != windows.end();
25 (*window_iter)->GetHost()->GetEventSource()->RemoveEventRewriter(
32 void EventRewriterController::AddEventRewriter(
33 scoped_ptr<ui::EventRewriter> rewriter) {
34 DCHECK(!initialized_);
35 rewriters_.push_back(rewriter.release());
38 void EventRewriterController::Init() {
39 DCHECK(!initialized_);
41 // Add the rewriters to each existing root window EventSource.
42 aura::Window::Windows windows = ash::Shell::GetAllRootWindows();
43 for (aura::Window::Windows::iterator it = windows.begin();
46 AddToEventSource((*it)->GetHost()->GetEventSource());
50 void EventRewriterController::OnHostInitialized(aura::WindowTreeHost* host) {
52 AddToEventSource(host->GetEventSource());
55 void EventRewriterController::AddToEventSource(ui::EventSource* source) {
57 for (EventRewriters::iterator it = rewriters_.begin(); it != rewriters_.end();
59 source->AddEventRewriter(*it);
63 } // namespace chromeos