blob: 83a80944f3050e02d2a4ebb871579e7b8ac5a38d [file] [log] [blame]
// Copyright 2017 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 "ui/aura/mus/system_input_injector_mus.h"
#include "services/service_manager/public/cpp/connector.h"
#include "services/ws/public/mojom/constants.mojom.h"
#include "ui/events/event_constants.h"
#include "ui/events/keycodes/dom/keycode_converter.h"
namespace aura {
namespace {
ws::mojom::InjectedMouseButtonType EventFlagsToInjectedMouseButtonType(
ui::EventFlags flags) {
switch (flags) {
case ui::EF_LEFT_MOUSE_BUTTON:
return ws::mojom::InjectedMouseButtonType::kLeft;
case ui::EF_MIDDLE_MOUSE_BUTTON:
return ws::mojom::InjectedMouseButtonType::kMiddle;
case ui::EF_RIGHT_MOUSE_BUTTON:
return ws::mojom::InjectedMouseButtonType::kRight;
default:
LOG(WARNING) << "Invalid flag: " << flags << " for the button parameter";
}
return ws::mojom::InjectedMouseButtonType::kLeft;
}
} // namespace
SystemInputInjectorMus::SystemInputInjectorMus(
service_manager::Connector* connector) {
// Tests may use a null connector.
if (connector)
connector->BindInterface(ws::mojom::kServiceName,
&remoting_event_injector_);
}
SystemInputInjectorMus::~SystemInputInjectorMus() {}
void SystemInputInjectorMus::MoveCursorTo(const gfx::PointF& location) {
if (remoting_event_injector_)
remoting_event_injector_->MoveCursorToLocationInPixels(location);
}
void SystemInputInjectorMus::InjectMouseButton(ui::EventFlags button,
bool down) {
if (remoting_event_injector_) {
remoting_event_injector_->InjectMousePressOrRelease(
EventFlagsToInjectedMouseButtonType(button), down);
}
}
void SystemInputInjectorMus::InjectMouseWheel(int delta_x, int delta_y) {
if (remoting_event_injector_)
remoting_event_injector_->InjectMouseWheelInPixels(delta_x, delta_y);
}
void SystemInputInjectorMus::InjectKeyEvent(ui::DomCode dom_code,
bool down,
bool suppress_auto_repeat) {
if (remoting_event_injector_) {
remoting_event_injector_->InjectKeyEvent(
ui::KeycodeConverter::DomCodeToNativeKeycode(dom_code), down,
suppress_auto_repeat);
}
}
} // namespace aura