Elim cr-checkbox
[chromium-blink-merge.git] / chrome / browser / chromeos / events / event_rewriter_controller.cc
blob62fe12a4197b050e4138f68ab931130a66b2559d
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"
7 #include "ash/shell.h"
8 #include "ui/aura/env.h"
9 #include "ui/aura/window_tree_host.h"
10 #include "ui/events/event_source.h"
12 namespace chromeos {
14 EventRewriterController::EventRewriterController() : initialized_(false) {
15 // Add the controller as an observer for new root windows.
16 aura::Env::GetInstance()->AddObserver(this);
19 EventRewriterController::~EventRewriterController() {
20 aura::Env::GetInstance()->RemoveObserver(this);
21 // Remove the rewriters from every root window EventSource and destroy them.
22 for (EventRewriters::iterator rewriter_iter = rewriters_.begin();
23 rewriter_iter != rewriters_.end();
24 ++rewriter_iter) {
25 aura::Window::Windows windows = ash::Shell::GetAllRootWindows();
26 for (aura::Window::Windows::iterator window_iter = windows.begin();
27 window_iter != windows.end();
28 ++window_iter) {
29 (*window_iter)->GetHost()->GetEventSource()->RemoveEventRewriter(
30 *rewriter_iter);
33 rewriters_.clear();
36 void EventRewriterController::AddEventRewriter(
37 scoped_ptr<ui::EventRewriter> rewriter) {
38 DCHECK(!initialized_);
39 rewriters_.push_back(rewriter.release());
42 void EventRewriterController::Init() {
43 DCHECK(!initialized_);
44 initialized_ = true;
45 // Add the rewriters to each existing root window EventSource.
46 aura::Window::Windows windows = ash::Shell::GetAllRootWindows();
47 for (aura::Window::Windows::iterator it = windows.begin();
48 it != windows.end();
49 ++it) {
50 AddToEventSource((*it)->GetHost()->GetEventSource());
54 void EventRewriterController::OnHostInitialized(aura::WindowTreeHost* host) {
55 if (initialized_)
56 AddToEventSource(host->GetEventSource());
59 void EventRewriterController::AddToEventSource(ui::EventSource* source) {
60 DCHECK(source);
61 for (EventRewriters::iterator it = rewriters_.begin(); it != rewriters_.end();
62 ++it) {
63 source->AddEventRewriter(*it);
67 } // namespace chromeos