Commit 5623bac2 authored by Mike Wasserman's avatar Mike Wasserman Committed by Commit Bot

mash: Move KeyboardDrivenEventRewriter to ash, add mojo interface

Make EventRewriterController create the keyboard rewriter itself.
Simplify EventRewriterController, add rewriters immediately.

Add ash::mojom::EventRewriterController for use by Chrome/OOBE.
(one central interface seems better than one for each rewriter)

This should allow Mash to support this rewriter in the future.
(for now, Ash doesn't get Window Service events sent to Chrome)

Bug: 647781
Test: No Hangouts Meet keyboard driven OOBE regressions; see Issue 251272
Change-Id: I7b731298d612b1d93dab825b12a9d36431d1b711
Reviewed-on: https://chromium-review.googlesource.com/1033424Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Commit-Queue: Michael Wasserman <msw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#554801}
parent abd1d146
......@@ -197,8 +197,10 @@ component("ash") {
"drag_drop/drag_image_view.h",
"event_matcher_util.cc",
"event_matcher_util.h",
"event_rewriter_controller.cc",
"event_rewriter_controller.h",
"events/event_rewriter_controller.cc",
"events/event_rewriter_controller.h",
"events/keyboard_driven_event_rewriter.cc",
"events/keyboard_driven_event_rewriter.h",
"first_run/desktop_cleaner.cc",
"first_run/desktop_cleaner.h",
"first_run/first_run_helper.cc",
......@@ -1546,6 +1548,7 @@ test("ash_unittests") {
"drag_drop/drag_drop_controller_unittest.cc",
"drag_drop/drag_drop_tracker_unittest.cc",
"drag_drop/drag_image_view_unittest.cc",
"events/keyboard_driven_event_rewriter_unittest.cc",
"extended_desktop_unittest.cc",
"first_run/first_run_helper_unittest.cc",
"focus_cycler_unittest.cc",
......
......@@ -2,12 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/event_rewriter_controller.h"
#include "ash/events/event_rewriter_controller.h"
#include <utility>
#include "ash/display/mirror_window_controller.h"
#include "ash/display/window_tree_host_manager.h"
#include "ash/events/keyboard_driven_event_rewriter.h"
#include "ash/shell.h"
#include "ui/aura/env.h"
#include "ui/aura/window_tree_host.h"
......@@ -16,9 +17,14 @@
namespace ash {
EventRewriterController::EventRewriterController() : initialized_(false) {
EventRewriterController::EventRewriterController() {
// Add the controller as an observer for new root windows.
aura::Env::GetInstance()->AddObserver(this);
std::unique_ptr<KeyboardDrivenEventRewriter> keyboard_driven_event_rewriter =
std::make_unique<KeyboardDrivenEventRewriter>();
keyboard_driven_event_rewriter_ = keyboard_driven_event_rewriter.get();
AddEventRewriter(std::move(keyboard_driven_event_rewriter));
}
EventRewriterController::~EventRewriterController() {
......@@ -33,35 +39,37 @@ EventRewriterController::~EventRewriterController() {
void EventRewriterController::AddEventRewriter(
std::unique_ptr<ui::EventRewriter> rewriter) {
DCHECK(!initialized_);
rewriters_.push_back(std::move(rewriter));
}
void EventRewriterController::Init() {
DCHECK(!initialized_);
initialized_ = true;
// Add the rewriters to each existing root window EventSource.
aura::Window::Windows windows = Shell::GetAllRootWindows();
for (auto* window : windows)
AddToEventSource(window->GetHost()->GetEventSource());
for (auto* window : Shell::GetAllRootWindows())
window->GetHost()->GetEventSource()->AddEventRewriter(rewriter.get());
// In case there are any mirroring displays, their hosts' EventSources won't
// be included above.
const auto* mirror_window_controller =
Shell::Get()->window_tree_host_manager()->mirror_window_controller();
for (auto* window : mirror_window_controller->GetAllRootWindows())
AddToEventSource(window->GetHost()->GetEventSource());
window->GetHost()->GetEventSource()->AddEventRewriter(rewriter.get());
rewriters_.push_back(std::move(rewriter));
}
void EventRewriterController::OnHostInitialized(aura::WindowTreeHost* host) {
if (initialized_)
AddToEventSource(host->GetEventSource());
void EventRewriterController::BindRequest(
mojom::EventRewriterControllerRequest request) {
bindings_.AddBinding(this, std::move(request));
}
void EventRewriterController::SetKeyboardDrivenEventRewriterEnabled(
bool enabled) {
keyboard_driven_event_rewriter_->set_enabled(enabled);
}
void EventRewriterController::AddToEventSource(ui::EventSource* source) {
DCHECK(source);
void EventRewriterController::SetArrowToTabRewritingEnabled(bool enabled) {
keyboard_driven_event_rewriter_->set_arrow_to_tab_rewriting_enabled(enabled);
}
void EventRewriterController::OnHostInitialized(aura::WindowTreeHost* host) {
for (const auto& rewriter : rewriters_)
source->AddEventRewriter(rewriter.get());
host->GetEventSource()->AddEventRewriter(rewriter.get());
}
} // namespace ash
......@@ -2,15 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_EVENT_REWRITER_CONTROLLER_H_
#define ASH_EVENT_REWRITER_CONTROLLER_H_
#ifndef ASH_EVENTS_EVENT_REWRITER_CONTROLLER_H_
#define ASH_EVENTS_EVENT_REWRITER_CONTROLLER_H_
#include <list>
#include <memory>
#include <vector>
#include "ash/ash_export.h"
#include "ash/public/interfaces/event_rewriter_controller.mojom.h"
#include "base/macros.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "ui/aura/env_observer.h"
namespace ui {
......@@ -20,38 +21,45 @@ class EventSource;
namespace ash {
class KeyboardDrivenEventRewriter;
// 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 {
// TODO(crbug.com/647781): Avoid Chrome's direct access in Classic Ash mode.
class ASH_EXPORT EventRewriterController
: public mojom::EventRewriterController,
public aura::EnvObserver {
public:
EventRewriterController();
~EventRewriterController() override;
// Takes ownership of an EventRewriter; can only be called before Init().
// Takes ownership of |rewriter| and adds it to the current event sources.
void AddEventRewriter(std::unique_ptr<ui::EventRewriter> rewriter);
// Add rewriters to any existing root windows; must be called once only
// after ash::Shell has been initialized.
void Init();
// Binds the mojom::EventRewriterController interface request to this object.
void BindRequest(mojom::EventRewriterControllerRequest request);
// mojom::EventRewriterController:
void SetKeyboardDrivenEventRewriterEnabled(bool enabled) override;
void SetArrowToTabRewritingEnabled(bool enabled) override;
// aura::EnvObserver overrides:
// aura::EnvObserver:
void OnWindowInitialized(aura::Window* window) override {}
void OnHostInitialized(aura::WindowTreeHost* host) override;
private:
void AddToEventSource(ui::EventSource* source);
// The |EventRewriter|s managed by this controller.
std::vector<std::unique_ptr<ui::EventRewriter>> rewriters_;
// Whether the owned event rewriters have been added to existing
// root windows; after this no more rewriters can be added.
bool initialized_;
// A weak pointer the KeyboardDrivenEventRewriter owned in |rewriters_|.
KeyboardDrivenEventRewriter* keyboard_driven_event_rewriter_;
// Bindings for the EventRewriterController mojo interface.
mojo::BindingSet<mojom::EventRewriterController> bindings_;
DISALLOW_COPY_AND_ASSIGN(EventRewriterController);
};
} // namespace ash
#endif // ASH_EVENT_REWRITER_CONTROLLER_H_
#endif // ASH_EVENTS_EVENT_REWRITER_CONTROLLER_H_
......@@ -2,51 +2,19 @@
// 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/keyboard_driven_event_rewriter.h"
#include "ash/events/keyboard_driven_event_rewriter.h"
#include "chrome/browser/chromeos/system/input_device_settings.h"
#include "components/session_manager/core/session_manager.h"
#include "ash/session/session_controller.h"
#include "ash/shell.h"
#include "ui/chromeos/events/event_rewriter_chromeos.h"
#include "ui/events/event.h"
#include "ui/events/event_utils.h"
namespace chromeos {
namespace ash {
namespace {
KeyboardDrivenEventRewriter::KeyboardDrivenEventRewriter() = default;
const int kModifierMask = ui::EF_SHIFT_DOWN;
KeyboardDrivenEventRewriter* instance = nullptr;
// Returns true if and only if it is on login screen (i.e. user is not logged
// in) and the keyboard driven flag in the OEM manifest is on.
bool ShouldStripModifiersForArrowKeysAndEnter() {
if (session_manager::SessionManager::Get() &&
!session_manager::SessionManager::Get()->IsSessionStarted()) {
return system::InputDeviceSettings::Get()
->ForceKeyboardDrivenUINavigation();
}
return false;
}
} // namespace
// static
KeyboardDrivenEventRewriter* KeyboardDrivenEventRewriter::GetInstance() {
DCHECK(instance);
return instance;
}
KeyboardDrivenEventRewriter::KeyboardDrivenEventRewriter() {
DCHECK(!instance);
instance = this;
}
KeyboardDrivenEventRewriter::~KeyboardDrivenEventRewriter() {
DCHECK_EQ(instance, this);
instance = nullptr;
}
KeyboardDrivenEventRewriter::~KeyboardDrivenEventRewriter() = default;
ui::EventRewriteStatus KeyboardDrivenEventRewriter::RewriteForTesting(
const ui::Event& event,
......@@ -57,8 +25,10 @@ ui::EventRewriteStatus KeyboardDrivenEventRewriter::RewriteForTesting(
ui::EventRewriteStatus KeyboardDrivenEventRewriter::RewriteEvent(
const ui::Event& event,
std::unique_ptr<ui::Event>* rewritten_event) {
if (!ShouldStripModifiersForArrowKeysAndEnter())
if (!enabled_ ||
Shell::Get()->session_controller()->IsActiveUserSessionStarted()) {
return ui::EVENT_REWRITE_CONTINUE;
}
return Rewrite(event, rewritten_event);
}
......@@ -74,6 +44,7 @@ ui::EventRewriteStatus KeyboardDrivenEventRewriter::Rewrite(
const ui::Event& event,
std::unique_ptr<ui::Event>* rewritten_event) {
int flags = event.flags();
const int kModifierMask = ui::EF_SHIFT_DOWN;
if ((flags & kModifierMask) != kModifierMask)
return ui::EVENT_REWRITE_CONTINUE;
......@@ -93,7 +64,7 @@ ui::EventRewriteStatus KeyboardDrivenEventRewriter::Rewrite(
flags & ~(ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN),
key_event.code(), key_event.GetDomKey(), key_event.key_code()};
if (rewritten_to_tab_) {
if (arrow_to_tab_rewriting_enabled_) {
if (key_code == ui::VKEY_LEFT || key_code == ui::VKEY_RIGHT ||
key_code == ui::VKEY_UP || key_code == ui::VKEY_DOWN) {
const ui::KeyEvent tab_event(ui::ET_KEY_PRESSED, ui::VKEY_TAB,
......@@ -111,4 +82,4 @@ ui::EventRewriteStatus KeyboardDrivenEventRewriter::Rewrite(
return ui::EVENT_REWRITE_REWRITTEN;
}
} // namespace chromeos
} // namespace ash
......@@ -2,24 +2,23 @@
// 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_KEYBOARD_DRIVEN_EVENT_REWRITER_H_
#define CHROME_BROWSER_CHROMEOS_EVENTS_KEYBOARD_DRIVEN_EVENT_REWRITER_H_
#ifndef ASH_EVENTS_KEYBOARD_DRIVEN_EVENT_REWRITER_H_
#define ASH_EVENTS_KEYBOARD_DRIVEN_EVENT_REWRITER_H_
#include "ash/ash_export.h"
#include "base/macros.h"
#include "ui/events/event_rewriter.h"
namespace chromeos {
namespace ash {
// KeyboardDrivenEventRewriter removes the modifier flags from
// Shift+<Arrow keys|Enter|F6> key events. This mapping only happens
// on login screen and only when the keyboard driven oobe is enabled.
class KeyboardDrivenEventRewriter : public ui::EventRewriter {
class ASH_EXPORT KeyboardDrivenEventRewriter : public ui::EventRewriter {
public:
KeyboardDrivenEventRewriter();
~KeyboardDrivenEventRewriter() override;
static KeyboardDrivenEventRewriter* GetInstance();
// Calls Rewrite for testing.
ui::EventRewriteStatus RewriteForTesting(
const ui::Event& event,
......@@ -33,21 +32,25 @@ class KeyboardDrivenEventRewriter : public ui::EventRewriter {
const ui::Event& last_event,
std::unique_ptr<ui::Event>* new_event) override;
// Allow setting Shift + Arrow keys rewritten to Tab/Shift-Tab keys |enabled|.
void SetArrowToTabRewritingEnabled(bool rewritten_to_tab) {
rewritten_to_tab_ = rewritten_to_tab;
void set_enabled(bool enabled) { enabled_ = enabled; }
void set_arrow_to_tab_rewriting_enabled(bool enabled) {
arrow_to_tab_rewriting_enabled_ = enabled;
}
private:
ui::EventRewriteStatus Rewrite(const ui::Event& event,
std::unique_ptr<ui::Event>* new_event);
// If true, this rewriter is enabled. It is only active before user login.
bool enabled_ = false;
// If true, Shift + Arrow keys are rewritten to Tab/Shift-Tab keys.
bool rewritten_to_tab_ = false;
// This only applies when the KeyboardDrivenEventRewriter is active.
bool arrow_to_tab_rewriting_enabled_ = false;
DISALLOW_COPY_AND_ASSIGN(KeyboardDrivenEventRewriter);
};
} // namespace chromeos
} // namespace ash
#endif // CHROME_BROWSER_CHROMEOS_EVENTS_KEYBOARD_DRIVEN_EVENT_REWRITER_H_
#endif // ASH_EVENTS_KEYBOARD_DRIVEN_EVENT_REWRITER_H_
......@@ -6,14 +6,14 @@
#include <string>
#include "ash/events/keyboard_driven_event_rewriter.h"
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/chromeos/events/keyboard_driven_event_rewriter.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/events/event.h"
namespace chromeos {
namespace ash {
class KeyboardDrivenEventRewriterTest : public testing::Test {
public:
......@@ -114,4 +114,4 @@ TEST_F(KeyboardDrivenEventRewriterTest, Rewrite) {
}
}
} // namespace chromeos
} // namespace ash
......@@ -18,6 +18,7 @@
"ash::mojom::CastConfig",
"ash::mojom::CrosDisplayConfigController",
"ash::mojom::DockedMagnifierController",
"ash::mojom::EventRewriterController",
"ash::mojom::FirstRunHelper",
"ash::mojom::HighlighterController",
"ash::mojom::ImeController",
......
......@@ -14,6 +14,7 @@
#include "ash/cast_config_controller.h"
#include "ash/display/ash_display_controller.h"
#include "ash/display/cros_display_config.h"
#include "ash/events/event_rewriter_controller.h"
#include "ash/first_run/first_run_helper.h"
#include "ash/highlighter/highlighter_controller.h"
#include "ash/ime/ime_controller.h"
......@@ -102,6 +103,11 @@ void BindDockedMagnifierControllerRequestOnMainThread(
Shell::Get()->docked_magnifier_controller()->BindRequest(std::move(request));
}
void BindEventRewriterControllerRequestOnMainThread(
mojom::EventRewriterControllerRequest request) {
Shell::Get()->event_rewriter_controller()->BindRequest(std::move(request));
}
void BindFirstRunHelperRequestOnMainThread(
mojom::FirstRunHelperRequest request) {
Shell::Get()->first_run_helper()->BindRequest(std::move(request));
......@@ -234,6 +240,9 @@ void RegisterInterfaces(
base::BindRepeating(&BindDockedMagnifierControllerRequestOnMainThread),
main_thread_task_runner);
}
registry->AddInterface(
base::BindRepeating(&BindEventRewriterControllerRequestOnMainThread),
main_thread_task_runner);
registry->AddInterface(
base::BindRepeating(&BindFirstRunHelperRequestOnMainThread),
main_thread_task_runner);
......
......@@ -25,6 +25,7 @@ mojom("interfaces_internal") {
"cros_display_config.mojom",
"docked_magnifier_controller.mojom",
"event_properties.mojom",
"event_rewriter_controller.mojom",
"first_run_helper.mojom",
"highlighter_controller.mojom",
"ime_controller.mojom",
......
// Copyright 2018 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.
module ash.mojom;
// Allows clients to toggle some event rewriting behavior.
interface EventRewriterController {
// Enables the KeyboardDrivenEventRewriter, which is disabled by default.
// This only applies when the user is on the login screen.
SetKeyboardDrivenEventRewriterEnabled(bool enabled);
// If true, Shift + Arrow keys are rewritten to Tab/Shift-Tab keys.
// This only applies when the KeyboardDrivenEventRewriter is active.
SetArrowToTabRewritingEnabled(bool enabled);
};
......@@ -44,7 +44,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/events/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"
......
......@@ -8,6 +8,7 @@
"app_list::mojom::AppList",
"ash::mojom::AcceleratorController",
"ash::mojom::CastConfig",
"ash::mojom::EventRewriterController",
"ash::mojom::HighlighterController",
"ash::mojom::ImeController",
"ash::mojom::LocaleNotificationController",
......
......@@ -574,8 +574,6 @@ source_set("chromeos") {
"eol_notification.h",
"events/event_rewriter_delegate_impl.cc",
"events/event_rewriter_delegate_impl.h",
"events/keyboard_driven_event_rewriter.cc",
"events/keyboard_driven_event_rewriter.h",
"extensions/active_tab_permission_granter_delegate_chromeos.cc",
"extensions/active_tab_permission_granter_delegate_chromeos.h",
"extensions/default_app_order.cc",
......@@ -1891,7 +1889,6 @@ source_set("unit_tests") {
"drive/fileapi/webkit_file_stream_reader_impl_unittest.cc",
"drive/write_on_cache_file_unittest.cc",
"events/event_rewriter_unittest.cc",
"events/keyboard_driven_event_rewriter_unittest.cc",
"extensions/active_tab_permission_granter_delegate_chromeos_unittest.cc",
"extensions/default_app_order_unittest.cc",
"extensions/device_local_account_external_policy_loader_unittest.cc",
......
......@@ -38,9 +38,8 @@ include_rules = [
specific_include_rules = {
"chrome_browser_main_chromeos\.cc": [
"-ash",
# TODO(mash): Support EventRewriters, http://crbug.com/647781.
"+ash/event_rewriter_controller.h",
"+ash/events/event_rewriter_controller.h",
"+ash/root_window_controller.h",
"+ash/shell.h",
"+ash/sticky_keys/sticky_keys_controller.h",
......
......@@ -10,7 +10,9 @@
#include <utility>
#include <vector>
#include "ash/event_rewriter_controller.h"
#include "ash/events/event_rewriter_controller.h"
#include "ash/public/interfaces/constants.mojom.h"
#include "ash/public/interfaces/event_rewriter_controller.mojom.h"
#include "ash/shell.h"
#include "ash/sticky_keys/sticky_keys_controller.h"
#include "base/bind.h"
......@@ -55,7 +57,6 @@
#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_delegate_impl.h"
#include "chrome/browser/chromeos/events/keyboard_driven_event_rewriter.h"
#include "chrome/browser/chromeos/extensions/default_app_order.h"
#include "chrome/browser/chromeos/external_metrics.h"
#include "chrome/browser/chromeos/input_method/input_method_configuration.h"
......@@ -1049,12 +1050,20 @@ void ChromeBrowserMainPartsChromeos::PreBrowserStart() {
}
void ChromeBrowserMainPartsChromeos::PostBrowserStart() {
// Enable the KeyboardDrivenEventRewriter if the OEM manifest flag is on.
if (system::InputDeviceSettings::Get()->ForceKeyboardDrivenUINavigation()) {
content::ServiceManagerConnection* connection =
content::ServiceManagerConnection::GetForProcess();
ash::mojom::EventRewriterControllerPtr event_rewriter_controller_ptr;
connection->GetConnector()->BindInterface(ash::mojom::kServiceName,
&event_rewriter_controller_ptr);
event_rewriter_controller_ptr->SetKeyboardDrivenEventRewriterEnabled(true);
}
if (chromeos::GetAshConfig() != ash::Config::MASH) {
// TODO(mash): Support EventRewriterController; see crbug.com/647781
ash::EventRewriterController* event_rewriter_controller =
ash::Shell::Get()->event_rewriter_controller();
event_rewriter_controller->AddEventRewriter(
std::unique_ptr<ui::EventRewriter>(new KeyboardDrivenEventRewriter()));
event_rewriter_controller->AddEventRewriter(
std::unique_ptr<ui::EventRewriter>(new SpokenFeedbackEventRewriter()));
event_rewriter_delegate_ = std::make_unique<EventRewriterDelegateImpl>();
......@@ -1062,7 +1071,6 @@ void ChromeBrowserMainPartsChromeos::PostBrowserStart() {
std::make_unique<ui::EventRewriterChromeOS>(
event_rewriter_delegate_.get(),
ash::Shell::Get()->sticky_keys_controller()));
event_rewriter_controller->Init();
}
// In classic ash must occur after ash::ShellPort is initialized. Triggers a
......
......@@ -6,6 +6,8 @@
#include <type_traits>
#include "ash/public/interfaces/constants.mojom.h"
#include "ash/public/interfaces/event_rewriter_controller.mojom.h"
#include "ash/shell.h"
#include "base/bind.h"
#include "base/strings/utf_string_conversions.h"
......@@ -13,7 +15,6 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
#include "chrome/browser/chromeos/accessibility/magnification_manager.h"
#include "chrome/browser/chromeos/events/keyboard_driven_event_rewriter.h"
#include "chrome/browser/chromeos/login/enrollment/auto_enrollment_controller.h"
#include "chrome/browser/chromeos/login/helper.h"
#include "chrome/browser/chromeos/login/lock/screen_locker.h"
......@@ -42,7 +43,9 @@
#include "components/prefs/pref_service.h"
#include "components/strings/grit/components_strings.h"
#include "components/version_info/version_info.h"
#include "content/public/common/service_manager_connection.h"
#include "google_apis/google_api_keys.h"
#include "services/service_manager/public/cpp/connector.h"
#include "ui/aura/window_tree_host.h"
#include "ui/display/display.h"
#include "ui/display/manager/display_manager.h"
......@@ -303,11 +306,14 @@ void CoreOobeHandler::HandleUpdateCurrentScreen(
const std::string& screen_name) {
const OobeScreen screen = GetOobeScreenFromName(screen_name);
oobe_ui_->CurrentScreenChanged(screen);
// TODO(mash): Support EventRewriterController; see crbug.com/647781
if (!ash_util::IsRunningInMash()) {
KeyboardDrivenEventRewriter::GetInstance()->SetArrowToTabRewritingEnabled(
screen == OobeScreen::SCREEN_OOBE_EULA);
}
content::ServiceManagerConnection* connection =
content::ServiceManagerConnection::GetForProcess();
ash::mojom::EventRewriterControllerPtr event_rewriter_controller_ptr;
connection->GetConnector()->BindInterface(ash::mojom::kServiceName,
&event_rewriter_controller_ptr);
event_rewriter_controller_ptr->SetArrowToTabRewritingEnabled(
screen == OobeScreen::SCREEN_OOBE_EULA);
}
void CoreOobeHandler::HandleEnableHighContrast(bool enabled) {
......
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