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

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: Changed EventRewriterController, & addressed review comments. 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..f45fd8781c2c5263d28c07888ae975e27404ad63
--- /dev/null
+++ b/chrome/browser/chromeos/events/event_rewriter_controller.cc
@@ -0,0 +1,69 @@
+// 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) {
sadrul 2014/04/23 19:32:53 Initialize operational_
+}
+
+EventRewriterController::~EventRewriterController() {
+ Shutdown();
+}
+
+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());
+ }
+ operational_ = true;
+}
+
+void EventRewriterController::Shutdown() {
+ operational_ = false;
sadrul 2014/04/23 19:32:53 It's unclear to me why we need both operational_ a
kpschoedel 2014/04/23 21:33:15 I'll change to one. I had separate states to enfor
+ // 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::OnHostInitialized(aura::WindowTreeHost* host) {
+ if (operational_)
+ 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