Commit efbf3409 authored by Mike Wasserman's avatar Mike Wasserman Committed by Commit Bot

mash: Move EventRewriterController to ash

Move the files to ash and ownership to Shell.

Bug: 647781
Change-Id: I1efe7dec0d9cd429f3ed9ff2295c612c90ffa800
Reviewed-on: https://chromium-review.googlesource.com/1028980
Commit-Queue: Michael Wasserman <msw@chromium.org>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553853}
parent e71bd79a
......@@ -191,6 +191,8 @@ component("ash") {
"drag_drop/drag_image_view.h",
"event_matcher_util.cc",
"event_matcher_util.h",
"event_rewriter_controller.cc",
"event_rewriter_controller.h",
"first_run/desktop_cleaner.cc",
"first_run/desktop_cleaner.h",
"first_run/first_run_helper.cc",
......
......@@ -2,7 +2,7 @@
// 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/event_rewriter_controller.h"
#include <utility>
......@@ -11,9 +11,10 @@
#include "ash/shell.h"
#include "ui/aura/env.h"
#include "ui/aura/window_tree_host.h"
#include "ui/events/event_rewriter.h"
#include "ui/events/event_source.h"
namespace chromeos {
namespace ash {
EventRewriterController::EventRewriterController() : initialized_(false) {
// Add the controller as an observer for new root windows.
......@@ -24,10 +25,8 @@ EventRewriterController::~EventRewriterController() {
aura::Env::GetInstance()->RemoveObserver(this);
// Remove the rewriters from every root window EventSource and destroy them.
for (const auto& rewriter : rewriters_) {
aura::Window::Windows windows = ash::Shell::GetAllRootWindows();
for (auto* window : windows) {
for (auto* window : Shell::GetAllRootWindows())
window->GetHost()->GetEventSource()->RemoveEventRewriter(rewriter.get());
}
}
rewriters_.clear();
}
......@@ -42,14 +41,14 @@ void EventRewriterController::Init() {
DCHECK(!initialized_);
initialized_ = true;
// Add the rewriters to each existing root window EventSource.
aura::Window::Windows windows = ash::Shell::GetAllRootWindows();
aura::Window::Windows windows = Shell::GetAllRootWindows();
for (auto* window : windows)
AddToEventSource(window->GetHost()->GetEventSource());
// In case there are any mirroring displays, their hosts' EventSources won't
// be included above.
const auto* mirror_window_controller =
ash::Shell::Get()->window_tree_host_manager()->mirror_window_controller();
Shell::Get()->window_tree_host_manager()->mirror_window_controller();
for (auto* window : mirror_window_controller->GetAllRootWindows())
AddToEventSource(window->GetHost()->GetEventSource());
}
......@@ -61,9 +60,8 @@ void EventRewriterController::OnHostInitialized(aura::WindowTreeHost* host) {
void EventRewriterController::AddToEventSource(ui::EventSource* source) {
DCHECK(source);
for (const auto& rewriter : rewriters_) {
for (const auto& rewriter : rewriters_)
source->AddEventRewriter(rewriter.get());
}
}
} // namespace chromeos
} // namespace ash
......@@ -2,27 +2,28 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_CONTROLLER_H_
#define CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_CONTROLLER_H_
#ifndef ASH_EVENT_REWRITER_CONTROLLER_H_
#define ASH_EVENT_REWRITER_CONTROLLER_H_
#include <list>
#include <memory>
#include <vector>
#include "ash/ash_export.h"
#include "base/macros.h"
#include "ui/aura/env_observer.h"
#include "ui/events/event_rewriter.h"
namespace ui {
class EventRewriter;
class EventSource;
} // namespace ui
namespace chromeos {
namespace ash {
// Owns |ui::EventRewriter|s and ensures that they are added to all root
// windows |EventSource|s, current and future, in the order that they are
// added to this.
class EventRewriterController : public aura::EnvObserver {
// Owns ui::EventRewriters and ensures that they are added to each root window
// EventSource, current and future, in the order that they are added to this.
// TODO(crbug.com/647781): Avoid exposing this outside of ash.
class ASH_EXPORT EventRewriterController : public aura::EnvObserver {
public:
EventRewriterController();
~EventRewriterController() override;
......@@ -51,6 +52,6 @@ class EventRewriterController : public aura::EnvObserver {
DISALLOW_COPY_AND_ASSIGN(EventRewriterController);
};
} // namespace chromeos
} // namespace ash
#endif // CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_CONTROLLER_H_
#endif // ASH_EVENT_REWRITER_CONTROLLER_H_
......@@ -43,6 +43,7 @@
#include "ash/display/screen_position_controller.h"
#include "ash/display/window_tree_host_manager.h"
#include "ash/drag_drop/drag_drop_controller.h"
#include "ash/event_rewriter_controller.h"
#include "ash/first_run/first_run_helper.h"
#include "ash/focus_cycler.h"
#include "ash/frame/custom_frame_view_ash.h"
......@@ -738,10 +739,10 @@ Shell::~Shell() {
RemovePreTargetHandler(system_gesture_filter_.get());
RemovePreTargetHandler(mouse_cursor_filter_.get());
RemovePreTargetHandler(modality_filter_.get());
// TooltipController is deleted with the Shell so removing its references.
RemovePreTargetHandler(tooltip_controller_.get());
event_rewriter_controller_.reset();
screen_orientation_controller_.reset();
screen_layout_observer_.reset();
......@@ -1018,6 +1019,8 @@ void Shell::Init(ui::ContextFactory* context_factory,
// windows are active.
window_modality_controller_.reset(new ::wm::WindowModalityController(this));
event_rewriter_controller_ = std::make_unique<EventRewriterController>();
env_filter_.reset(new ::wm::CompoundEventFilter);
AddPreTargetHandler(env_filter_.get());
......
......@@ -107,6 +107,7 @@ class DisplayShutdownObserver;
class DockedMagnifierController;
class DragDropController;
class EventClientImpl;
class EventRewriterController;
class EventTransformationHandler;
class FirstRunHelper;
class FocusCycler;
......@@ -380,6 +381,9 @@ class ASH_EXPORT Shell : public SessionObserver,
DockedMagnifierController* docked_magnifier_controller();
::wm::CompoundEventFilter* env_filter() { return env_filter_.get(); }
EventRewriterController* event_rewriter_controller() {
return event_rewriter_controller_.get();
}
EventClientImpl* event_client() { return event_client_.get(); }
EventTransformationHandler* event_transformation_handler() {
return event_transformation_handler_.get();
......@@ -679,6 +683,8 @@ class ASH_EXPORT Shell : public SessionObserver,
// The CompoundEventFilter owned by aura::Env object.
std::unique_ptr<::wm::CompoundEventFilter> env_filter_;
std::unique_ptr<EventRewriterController> event_rewriter_controller_;
std::unique_ptr<UserMetricsRecorder> user_metrics_recorder_;
std::unique_ptr<WindowPositioner> window_positioner_;
......
......@@ -569,8 +569,6 @@ source_set("chromeos") {
"drive/write_on_cache_file.h",
"eol_notification.cc",
"eol_notification.h",
"events/event_rewriter_controller.cc",
"events/event_rewriter_controller.h",
"events/event_rewriter_delegate_impl.cc",
"events/event_rewriter_delegate_impl.h",
"events/keyboard_driven_event_rewriter.cc",
......
......@@ -39,7 +39,8 @@ include_rules = [
specific_include_rules = {
"chrome_browser_main_chromeos\.cc": [
"-ash",
# TODO(mash): Support EventRewriterController, http://crbug.com/647781.
# TODO(mash): Support EventRewriters, http://crbug.com/647781.
"+ash/event_rewriter_controller.h",
"+ash/root_window_controller.h",
"+ash/shell.h",
"+ash/sticky_keys/sticky_keys_controller.h",
......
......@@ -12,7 +12,6 @@
#include "ash/test/ash_test_views_delegate.h"
#include "base/macros.h"
#include "chrome/browser/chromeos/ash_config.h"
#include "chrome/browser/chromeos/events/event_rewriter_controller.h"
#include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h"
#include "chrome/test/base/testing_profile.h"
#include "ui/aura/test/aura_test_base.h"
......
......@@ -10,6 +10,7 @@
#include <utility>
#include <vector>
#include "ash/event_rewriter_controller.h"
#include "ash/shell.h"
#include "ash/sticky_keys/sticky_keys_controller.h"
#include "base/bind.h"
......@@ -53,7 +54,6 @@
#include "chrome/browser/chromeos/dbus/screen_lock_service_provider.h"
#include "chrome/browser/chromeos/dbus/vm_applications_service_provider_delegate.h"
#include "chrome/browser/chromeos/display/quirks_manager_delegate_impl.h"
#include "chrome/browser/chromeos/events/event_rewriter_controller.h"
#include "chrome/browser/chromeos/events/event_rewriter_delegate_impl.h"
#include "chrome/browser/chromeos/events/keyboard_driven_event_rewriter.h"
#include "chrome/browser/chromeos/extensions/default_app_order.h"
......@@ -1051,17 +1051,18 @@ void ChromeBrowserMainPartsChromeos::PreBrowserStart() {
void ChromeBrowserMainPartsChromeos::PostBrowserStart() {
if (chromeos::GetAshConfig() != ash::Config::MASH) {
// TODO(mash): Support EventRewriterController; see crbug.com/647781
keyboard_event_rewriters_.reset(new EventRewriterController());
keyboard_event_rewriters_->AddEventRewriter(
ash::EventRewriterController* event_rewriter_controller =
ash::Shell::Get()->event_rewriter_controller();
event_rewriter_controller->AddEventRewriter(
std::unique_ptr<ui::EventRewriter>(new KeyboardDrivenEventRewriter()));
keyboard_event_rewriters_->AddEventRewriter(
event_rewriter_controller->AddEventRewriter(
std::unique_ptr<ui::EventRewriter>(new SpokenFeedbackEventRewriter()));
event_rewriter_delegate_ = std::make_unique<EventRewriterDelegateImpl>();
keyboard_event_rewriters_->AddEventRewriter(
event_rewriter_controller->AddEventRewriter(
std::make_unique<ui::EventRewriterChromeOS>(
event_rewriter_delegate_.get(),
ash::Shell::Get()->sticky_keys_controller()));
keyboard_event_rewriters_->Init();
event_rewriter_controller->Init();
}
// In classic ash must occur after ash::ShellPort is initialized. Triggers a
......@@ -1132,7 +1133,6 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() {
wake_on_wifi_manager_.reset();
network_throttling_observer_.reset();
ScreenLocker::ShutDownClass();
keyboard_event_rewriters_.reset();
low_disk_notification_.reset();
user_activity_controller_.reset();
adaptive_screen_brightness_manager_.reset();
......
......@@ -29,7 +29,6 @@ class VoiceInteractionControllerClient;
namespace chromeos {
class ArcKioskAppManager;
class EventRewriterController;
class EventRewriterDelegateImpl;
class IdleActionWarningObserver;
class LowDiskNotification;
......@@ -108,7 +107,6 @@ class ChromeBrowserMainPartsChromeos : public ChromeBrowserMainPartsLinux {
std::unique_ptr<ShutdownPolicyForwarder> shutdown_policy_forwarder_;
std::unique_ptr<EventRewriterDelegateImpl> event_rewriter_delegate_;
std::unique_ptr<EventRewriterController> keyboard_event_rewriters_;
scoped_refptr<chromeos::ExternalMetrics> external_metrics_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment