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

Unified Diff: mojo/converters/blink/blink_input_events_type_converters.cc

Issue 2270953002: Merge the mojo blink type converter into ui/events/blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase apparently restored deleted files Created 4 years, 3 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: mojo/converters/blink/blink_input_events_type_converters.cc
diff --git a/mojo/converters/blink/blink_input_events_type_converters.cc b/mojo/converters/blink/blink_input_events_type_converters.cc
deleted file mode 100644
index 44098ef1ebccaaead083bc303b0aae2d76fe029a..0000000000000000000000000000000000000000
--- a/mojo/converters/blink/blink_input_events_type_converters.cc
+++ /dev/null
@@ -1,245 +0,0 @@
-// 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 "mojo/converters/blink/blink_input_events_type_converters.h"
-
-#include <utility>
-
-#include "base/logging.h"
-#include "base/time/time.h"
-#include "third_party/WebKit/public/web/WebInputEvent.h"
-#include "ui/events/base_event_utils.h"
-#include "ui/events/event.h"
-#include "ui/events/keycodes/dom/keycode_converter.h"
-
-namespace mojo {
-namespace {
-
-// TODO(majidvp): remove this and directly use ui::EventFlagsToWebEventModifiers
-int EventFlagsToWebEventModifiers(int flags) {
- int modifiers = 0;
-
- if (flags & ui::EF_SHIFT_DOWN)
- modifiers |= blink::WebInputEvent::ShiftKey;
- if (flags & ui::EF_CONTROL_DOWN)
- modifiers |= blink::WebInputEvent::ControlKey;
- if (flags & ui::EF_ALT_DOWN)
- modifiers |= blink::WebInputEvent::AltKey;
- // TODO(beng): MetaKey/META_MASK
- if (flags & ui::EF_LEFT_MOUSE_BUTTON)
- modifiers |= blink::WebInputEvent::LeftButtonDown;
- if (flags & ui::EF_MIDDLE_MOUSE_BUTTON)
- modifiers |= blink::WebInputEvent::MiddleButtonDown;
- if (flags & ui::EF_RIGHT_MOUSE_BUTTON)
- modifiers |= blink::WebInputEvent::RightButtonDown;
- if (flags & ui::EF_CAPS_LOCK_ON)
- modifiers |= blink::WebInputEvent::CapsLockOn;
- return modifiers;
-}
-
-// TODO(majidvp): remove this and directly use ui::EventFlagsToWebEventModifiers
-int EventFlagsToWebInputEventModifiers(int flags) {
- return (flags & ui::EF_SHIFT_DOWN ? blink::WebInputEvent::ShiftKey : 0) |
- (flags & ui::EF_CONTROL_DOWN ? blink::WebInputEvent::ControlKey : 0) |
- (flags & ui::EF_CAPS_LOCK_ON ? blink::WebInputEvent::CapsLockOn : 0) |
- (flags & ui::EF_ALT_DOWN ? blink::WebInputEvent::AltKey : 0);
-}
-
-int GetClickCount(int flags) {
- if (flags & ui::EF_IS_TRIPLE_CLICK)
- return 3;
- else if (flags & ui::EF_IS_DOUBLE_CLICK)
- return 2;
-
- return 1;
-}
-
-void SetWebMouseEventLocation(const ui::LocatedEvent& located_event,
- blink::WebMouseEvent* web_event) {
- web_event->x = static_cast<int>(located_event.x());
- web_event->y = static_cast<int>(located_event.y());
- web_event->globalX = static_cast<int>(located_event.root_location_f().x());
- web_event->globalY = static_cast<int>(located_event.root_location_f().y());
-}
-
-std::unique_ptr<blink::WebInputEvent> BuildWebMouseEventFrom(
- const ui::PointerEvent& event) {
- std::unique_ptr<blink::WebMouseEvent> web_event(new blink::WebMouseEvent);
-
- web_event->pointerType = blink::WebPointerProperties::PointerType::Mouse;
- SetWebMouseEventLocation(event, web_event.get());
-
- web_event->modifiers = EventFlagsToWebEventModifiers(event.flags());
- web_event->timeStampSeconds = ui::EventTimeStampToSeconds(event.time_stamp());
-
- web_event->button = blink::WebMouseEvent::Button::NoButton;
- if (event.flags() & ui::EF_LEFT_MOUSE_BUTTON)
- web_event->button = blink::WebMouseEvent::Button::Left;
- if (event.flags() & ui::EF_MIDDLE_MOUSE_BUTTON)
- web_event->button = blink::WebMouseEvent::Button::Middle;
- if (event.flags() & ui::EF_RIGHT_MOUSE_BUTTON)
- web_event->button = blink::WebMouseEvent::Button::Right;
-
- switch (event.type()) {
- case ui::ET_POINTER_DOWN:
- web_event->type = blink::WebInputEvent::MouseDown;
- break;
- case ui::ET_POINTER_UP:
- web_event->type = blink::WebInputEvent::MouseUp;
- break;
- case ui::ET_POINTER_MOVED:
- web_event->type = blink::WebInputEvent::MouseMove;
- break;
- case ui::ET_MOUSE_EXITED:
- web_event->type = blink::WebInputEvent::MouseLeave;
- break;
- default:
- NOTIMPLEMENTED() << "Received unexpected event: " << event.type();
- break;
- }
-
- web_event->clickCount = GetClickCount(event.flags());
-
- return std::move(web_event);
-}
-
-std::unique_ptr<blink::WebInputEvent> BuildWebKeyboardEvent(
- const ui::KeyEvent& event) {
- std::unique_ptr<blink::WebKeyboardEvent> web_event(
- new blink::WebKeyboardEvent);
-
- web_event->modifiers = EventFlagsToWebInputEventModifiers(event.flags());
- web_event->timeStampSeconds = ui::EventTimeStampToSeconds(event.time_stamp());
-
- switch (event.type()) {
- case ui::ET_KEY_PRESSED:
- web_event->type = event.is_char() ? blink::WebInputEvent::Char
- : blink::WebInputEvent::RawKeyDown;
- break;
- case ui::ET_KEY_RELEASED:
- web_event->type = blink::WebInputEvent::KeyUp;
- break;
- default:
- NOTREACHED();
- }
-
- if (web_event->modifiers & blink::WebInputEvent::AltKey)
- web_event->isSystemKey = true;
-
- web_event->windowsKeyCode = event.GetLocatedWindowsKeyboardCode();
- web_event->nativeKeyCode =
- ui::KeycodeConverter::DomCodeToNativeKeycode(event.code());
- web_event->text[0] = event.GetText();
- web_event->unmodifiedText[0] = event.GetUnmodifiedText();
- return std::move(web_event);
-}
-
-std::unique_ptr<blink::WebInputEvent> BuildWebMouseWheelEventFrom(
- const ui::PointerEvent& event) {
- std::unique_ptr<blink::WebMouseWheelEvent> web_event(
- new blink::WebMouseWheelEvent);
- web_event->type = blink::WebInputEvent::MouseWheel;
- web_event->button = blink::WebMouseEvent::Button::NoButton;
- web_event->modifiers = EventFlagsToWebEventModifiers(event.flags());
- web_event->timeStampSeconds = ui::EventTimeStampToSeconds(event.time_stamp());
-
- SetWebMouseEventLocation(event, web_event.get());
-
- // TODO(rjkroege): Update the following code once Blink supports
- // DOM Level 3 wheel events
- // (http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents)
- web_event->deltaX = event.pointer_details().offset.x();
- web_event->deltaY = event.pointer_details().offset.y();
-
- web_event->wheelTicksX = web_event->deltaX / ui::MouseWheelEvent::kWheelDelta;
- web_event->wheelTicksY = web_event->deltaY / ui::MouseWheelEvent::kWheelDelta;
-
- // TODO(moshayedi): ui::WheelEvent currently only supports WHEEL_MODE_LINE.
- // Add support for other wheel modes once ui::WheelEvent has support for them.
- web_event->hasPreciseScrollingDeltas = false;
- web_event->scrollByPage = false;
-
- return std::move(web_event);
-}
-
-void SetWebTouchEventLocation(const ui::PointerEvent& event,
- blink::WebTouchPoint* touch) {
- touch->position.x = event.x();
- touch->position.y = event.y();
- touch->screenPosition.x = event.root_location_f().x();
- touch->screenPosition.y = event.root_location_f().y();
-}
-
-std::unique_ptr<blink::WebInputEvent> BuildWebTouchEvent(
- const ui::PointerEvent& event) {
- std::unique_ptr<blink::WebTouchEvent> web_event(new blink::WebTouchEvent);
- blink::WebTouchPoint* touch = &web_event->touches[event.pointer_id()];
-
- // TODO(jonross): we will need to buffer input events, as blink expects all
- // active touch points to be in each WebInputEvent (crbug.com/578160)
- SetWebTouchEventLocation(event, touch);
- touch->pointerType = blink::WebPointerProperties::PointerType::Touch;
- touch->radiusX = event.pointer_details().radius_x;
- touch->radiusY = event.pointer_details().radius_y;
-
- web_event->modifiers = EventFlagsToWebEventModifiers(event.flags());
- web_event->timeStampSeconds = ui::EventTimeStampToSeconds(event.time_stamp());
- web_event->uniqueTouchEventId = ui::GetNextTouchEventId();
-
- switch (event.type()) {
- case ui::ET_POINTER_DOWN:
- web_event->type = blink::WebInputEvent::TouchStart;
- touch->state = blink::WebTouchPoint::StatePressed;
- break;
- case ui::ET_POINTER_UP:
- web_event->type = blink::WebInputEvent::TouchEnd;
- touch->state = blink::WebTouchPoint::StateReleased;
- break;
- case ui::ET_POINTER_MOVED:
- web_event->type = blink::WebInputEvent::TouchMove;
- touch->state = blink::WebTouchPoint::StateMoved;
- break;
- case ui::ET_POINTER_CANCELLED:
- web_event->type = blink::WebInputEvent::TouchCancel;
- touch->state = blink::WebTouchPoint::StateCancelled;
- break;
- default:
- NOTIMPLEMENTED() << "Received non touch pointer event action: "
- << event.type();
- break;
- }
-
- return std::move(web_event);
-}
-
-} // namespace
-
-// static
-std::unique_ptr<blink::WebInputEvent>
-TypeConverter<std::unique_ptr<blink::WebInputEvent>, ui::Event>::Convert(
- const ui::Event& event) {
- DCHECK(event.IsKeyEvent() || event.IsPointerEvent());
- switch (event.type()) {
- case ui::ET_POINTER_DOWN:
- case ui::ET_POINTER_UP:
- case ui::ET_POINTER_CANCELLED:
- case ui::ET_POINTER_MOVED:
- case ui::ET_POINTER_EXITED:
- if (event.IsMousePointerEvent())
- return BuildWebMouseEventFrom(*event.AsPointerEvent());
- else if (event.IsTouchPointerEvent())
- return BuildWebTouchEvent(*event.AsPointerEvent());
- else
- return nullptr;
- case ui::ET_POINTER_WHEEL_CHANGED:
- return BuildWebMouseWheelEventFrom(*event.AsPointerEvent());
- case ui::ET_KEY_PRESSED:
- case ui::ET_KEY_RELEASED:
- return BuildWebKeyboardEvent(*event.AsKeyEvent());
- default:
- return nullptr;
- }
-}
-
-} // namespace mojo

Powered by Google App Engine
This is Rietveld 408576698