Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3207)

Unified Diff: chrome/browser/chromeos/events/event_rewriter_controller.cc

Issue 240173007: Convert KeyboardDrivenEventRewriter to a ui::EventRewriter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments on Patch Set 4 Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/events/event_rewriter_controller.cc
diff --git a/chrome/browser/chromeos/events/event_rewriter_controller.cc b/chrome/browser/chromeos/events/event_rewriter_controller.cc
new file mode 100644
index 0000000000000000000000000000000000000000..8b3cc5b40c8342b16b5f3756788f52cafe8c83ae
--- /dev/null
+++ b/chrome/browser/chromeos/events/event_rewriter_controller.cc
@@ -0,0 +1,63 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/events/event_rewriter_controller.h"
+
+#include "ash/shell.h"
+#include "ui/aura/window_tree_host.h"
+#include "ui/events/event_source.h"
+
+namespace chromeos {
+
+EventRewriterController::EventRewriterController() : initialized_(false) {
+}
+
+EventRewriterController::~EventRewriterController() {
+ // Remove the rewriters from every root window EventSource and destroy them.
+ for (EventRewriters::iterator rewriter_iter = rewriters_.begin();
+ rewriter_iter != rewriters_.end();
+ ++rewriter_iter) {
+ aura::Window::Windows windows = ash::Shell::GetAllRootWindows();
+ for (aura::Window::Windows::iterator window_iter = windows.begin();
+ window_iter != windows.end();
+ ++window_iter) {
+ (*window_iter)->GetHost()->GetEventSource()->RemoveEventRewriter(
+ *rewriter_iter);
+ }
+ }
+ rewriters_.clear();
+}
+
+void EventRewriterController::AddEventRewriter(
+ scoped_ptr<ui::EventRewriter> rewriter) {
+ DCHECK(!initialized_);
+ rewriters_.push_back(rewriter.release());
+}
+
+void EventRewriterController::Init() {
+ DCHECK(!initialized_);
+ initialized_ = true;
+ // Add the rewriters to each existing root window EventSource.
+ aura::Window::Windows windows = ash::Shell::GetAllRootWindows();
+ for (aura::Window::Windows::iterator it = windows.begin();
+ it != windows.end();
+ ++it) {
+ AddToEventSource((*it)->GetHost()->GetEventSource());
+ }
+}
+
+void EventRewriterController::OnHostInitialized(aura::WindowTreeHost* host) {
+ if (initialized_)
+ AddToEventSource(host->GetEventSource());
+}
+
+void EventRewriterController::AddToEventSource(ui::EventSource* source) {
+ DCHECK(source);
+ for (EventRewriters::iterator it = rewriters_.begin(); it != rewriters_.end();
+ ++it) {
+ source->AddEventRewriter(*it);
+ }
+}
+
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698