| Index: ui/events/platform/platform_event_builder.cc
|
| diff --git a/ui/events/platform/platform_event_builder.cc b/ui/events/platform/platform_event_builder.cc
|
| deleted file mode 100644
|
| index e893b1609be3af11b430691566f9c70d66c6302c..0000000000000000000000000000000000000000
|
| --- a/ui/events/platform/platform_event_builder.cc
|
| +++ /dev/null
|
| @@ -1,277 +0,0 @@
|
| -// Copyright 2015 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/events/platform/platform_event_builder.h"
|
| -
|
| -#if defined(USE_X11)
|
| -#include <X11/extensions/XInput2.h>
|
| -#include <X11/Xlib.h>
|
| -#include <X11/keysym.h>
|
| -#endif
|
| -
|
| -#include "ui/events/event.h"
|
| -#include "ui/events/platform/platform_event_utils.h"
|
| -
|
| -namespace ui {
|
| -namespace {
|
| -
|
| -bool X11EventHasNonStandardState(const base::NativeEvent& event) {
|
| -#if defined(USE_X11)
|
| - const unsigned int kAllStateMask =
|
| - Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask |
|
| - Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | ShiftMask |
|
| - LockMask | ControlMask | AnyModifier;
|
| - return event && (event->xkey.state & ~kAllStateMask) != 0;
|
| -#else
|
| - return false;
|
| -#endif
|
| -}
|
| -
|
| -bool IsX11SendEventTrue(const base::NativeEvent& event) {
|
| -#if defined(USE_X11)
|
| - return event && event->xany.send_event;
|
| -#else
|
| - return false;
|
| -#endif
|
| -}
|
| -
|
| -KeyEvent* last_key_event_ = nullptr;
|
| -MouseEvent* last_click_event_ = nullptr;
|
| -
|
| -// We can create a MouseEvent for a native event more than once. We set this
|
| -// to true when the next event either has a different timestamp or we see a
|
| -// release signalling that the press (click) event was completed.
|
| -bool last_click_complete_ = false;
|
| -
|
| -bool IsRepeated(const base::NativeEvent& native_event, const KeyEvent& event) {
|
| - // A safe guard in case if there were continous key pressed events that are
|
| - // not auto repeat.
|
| - const int kMaxAutoRepeatTimeMs = 2000;
|
| - // Ignore key events that have non standard state masks as it may be
|
| - // reposted by an IME. IBUS-GTK uses this field to detect the
|
| - // re-posted event for example. crbug.com/385873.
|
| - if (X11EventHasNonStandardState(native_event))
|
| - return false;
|
| - if (event.is_char())
|
| - return false;
|
| - if (event.type() == ui::ET_KEY_RELEASED) {
|
| - delete last_key_event_;
|
| - last_key_event_ = NULL;
|
| - return false;
|
| - }
|
| - CHECK_EQ(ui::ET_KEY_PRESSED, event.type());
|
| - if (!last_key_event_) {
|
| - last_key_event_ = new KeyEvent(event);
|
| - return false;
|
| - }
|
| - if (event.key_code() == last_key_event_->key_code() &&
|
| - event.flags() == last_key_event_->flags() &&
|
| - (event.time_stamp() - last_key_event_->time_stamp()).InMilliseconds() <
|
| - kMaxAutoRepeatTimeMs) {
|
| - return true;
|
| - }
|
| - delete last_key_event_;
|
| - last_key_event_ = new KeyEvent(event);
|
| - return false;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// static
|
| -MouseEvent PlatformEventBuilder::BuildMouseEvent(
|
| - const base::NativeEvent& native_event) {
|
| - MouseEvent mouse_event;
|
| - FillEventFrom(native_event, &mouse_event);
|
| - FillLocatedEventFrom(native_event, &mouse_event);
|
| - FillMouseEventFrom(native_event, &mouse_event);
|
| - return mouse_event;
|
| -}
|
| -
|
| -// static
|
| -MouseWheelEvent PlatformEventBuilder::BuildMouseWheelEvent(
|
| - const base::NativeEvent& native_event) {
|
| - MouseWheelEvent mouse_wheel_event;
|
| - FillEventFrom(native_event, &mouse_wheel_event);
|
| - FillLocatedEventFrom(native_event, &mouse_wheel_event);
|
| - FillMouseEventFrom(native_event, &mouse_wheel_event);
|
| - FillMouseWheelEventFrom(native_event, &mouse_wheel_event);
|
| - return mouse_wheel_event;
|
| -}
|
| -
|
| -// static
|
| -TouchEvent PlatformEventBuilder::BuildTouchEvent(
|
| - const base::NativeEvent& native_event) {
|
| - TouchEvent touch_event;
|
| - FillEventFrom(native_event, &touch_event);
|
| - FillLocatedEventFrom(native_event, &touch_event);
|
| - FillTouchEventFrom(native_event, &touch_event);
|
| - return touch_event;
|
| -}
|
| -
|
| -// static
|
| -KeyEvent PlatformEventBuilder::BuildKeyEvent(
|
| - const base::NativeEvent& native_event) {
|
| - KeyEvent key_event;
|
| - FillEventFrom(native_event, &key_event);
|
| - FillKeyEventFrom(native_event, &key_event);
|
| - return key_event;
|
| -}
|
| -
|
| -// static
|
| -ScrollEvent PlatformEventBuilder::BuildScrollEvent(
|
| - const base::NativeEvent& native_event) {
|
| - ScrollEvent scroll_event;
|
| - FillEventFrom(native_event, &scroll_event);
|
| - FillLocatedEventFrom(native_event, &scroll_event);
|
| - FillMouseEventFrom(native_event, &scroll_event);
|
| - FillScrollEventFrom(native_event, &scroll_event);
|
| - return scroll_event;
|
| -}
|
| -
|
| -// static
|
| -int PlatformEventBuilder::GetRepeatCount(const base::NativeEvent& native_event,
|
| - const MouseEvent& event) {
|
| - int click_count = 1;
|
| - if (last_click_event_) {
|
| - if (event.type() == ui::ET_MOUSE_RELEASED) {
|
| - if (event.changed_button_flags() ==
|
| - last_click_event_->changed_button_flags()) {
|
| - last_click_complete_ = true;
|
| - return last_click_event_->GetClickCount();
|
| - } else {
|
| - // If last_click_event_ has changed since this button was pressed
|
| - // return a click count of 1.
|
| - return click_count;
|
| - }
|
| - }
|
| - if (event.time_stamp() != last_click_event_->time_stamp())
|
| - last_click_complete_ = true;
|
| - if (!last_click_complete_ || IsX11SendEventTrue(native_event)) {
|
| - click_count = last_click_event_->GetClickCount();
|
| - } else if (MouseEvent::IsRepeatedClickEvent(*last_click_event_, event)) {
|
| - click_count = last_click_event_->GetClickCount() + 1;
|
| - }
|
| - delete last_click_event_;
|
| - }
|
| - last_click_event_ = new MouseEvent(event);
|
| - last_click_complete_ = false;
|
| - if (click_count > 3)
|
| - click_count = 3;
|
| - last_click_event_->SetClickCount(click_count);
|
| - return click_count;
|
| -}
|
| -
|
| -// static
|
| -void PlatformEventBuilder::ResetLastClickForTest() {
|
| - if (last_click_event_) {
|
| - delete last_click_event_;
|
| - last_click_event_ = NULL;
|
| - last_click_complete_ = false;
|
| - }
|
| -}
|
| -
|
| -// static
|
| -void PlatformEventBuilder::FillEventFrom(const base::NativeEvent& native_event,
|
| - Event* event) {
|
| - event->set_type(EventTypeFromNative(native_event));
|
| - event->set_time_stamp(EventTimeFromNative(native_event));
|
| - event->set_flags(EventFlagsFromNative(native_event));
|
| -
|
| -#if defined(USE_X11)
|
| - if (native_event->type == GenericEvent) {
|
| - XIDeviceEvent* xiev =
|
| - static_cast<XIDeviceEvent*>(native_event->xcookie.data);
|
| - event->set_source_device_id(xiev->sourceid);
|
| - }
|
| -#endif
|
| -}
|
| -
|
| -// static
|
| -void PlatformEventBuilder::FillLocatedEventFrom(
|
| - const base::NativeEvent& native_event,
|
| - LocatedEvent* located_event) {
|
| - gfx::PointF event_location = EventLocationFromNative(native_event);
|
| - located_event->set_location(event_location);
|
| - located_event->set_root_location(event_location);
|
| - located_event->set_screen_location(
|
| - EventSystemLocationFromNative(native_event));
|
| -}
|
| -
|
| -// static
|
| -void PlatformEventBuilder::FillMouseEventFrom(
|
| - const base::NativeEvent& native_event,
|
| - MouseEvent* mouse_event) {
|
| - mouse_event->set_changed_button_flags(
|
| - GetChangedMouseButtonFlagsFromNative(native_event));
|
| -
|
| - if (mouse_event->type() == ET_MOUSE_PRESSED ||
|
| - mouse_event->type() == ET_MOUSE_RELEASED) {
|
| - mouse_event->SetClickCount(GetRepeatCount(native_event, *mouse_event));
|
| - }
|
| -}
|
| -
|
| -// static
|
| -void PlatformEventBuilder::FillMouseWheelEventFrom(
|
| - const base::NativeEvent& native_event,
|
| - MouseWheelEvent* mouse_wheel_event) {
|
| - mouse_wheel_event->set_offset(GetMouseWheelOffset(native_event));
|
| -}
|
| -
|
| -// static
|
| -void PlatformEventBuilder::FillTouchEventFrom(
|
| - const base::NativeEvent& native_event,
|
| - TouchEvent* touch_event) {
|
| - touch_event->set_touch_id(GetTouchId(native_event));
|
| - touch_event->set_radius_x(GetTouchRadiusX(native_event));
|
| - touch_event->set_radius_y(GetTouchRadiusY(native_event));
|
| - touch_event->set_rotation_angle(GetTouchAngle(native_event));
|
| - touch_event->set_force(GetTouchForce(native_event));
|
| -}
|
| -
|
| -// static
|
| -void PlatformEventBuilder::FillKeyEventFrom(
|
| - const base::NativeEvent& native_event,
|
| - KeyEvent* key_event) {
|
| - key_event->set_key_code(KeyboardCodeFromNative(native_event));
|
| - key_event->set_code(CodeFromNative(native_event));
|
| - key_event->set_is_char(IsCharFromNative(native_event));
|
| - key_event->set_platform_keycode(PlatformKeycodeFromNative(native_event));
|
| -
|
| - if (IsRepeated(native_event, *key_event))
|
| - key_event->set_flags(key_event->flags() | ui::EF_IS_REPEAT);
|
| -
|
| -#if defined(USE_X11)
|
| - key_event->NormalizeFlags();
|
| -#endif
|
| -}
|
| -
|
| -// static
|
| -void PlatformEventBuilder::FillScrollEventFrom(
|
| - const base::NativeEvent& native_event,
|
| - ScrollEvent* scroll_event) {
|
| - float x_offset = 0;
|
| - float y_offset = 0;
|
| - float x_offset_ordinal = 0;
|
| - float y_offset_ordinal = 0;
|
| - int finger_count = 0;
|
| -
|
| - if (scroll_event->type() == ET_SCROLL) {
|
| - GetScrollOffsets(native_event, &x_offset, &y_offset, &x_offset_ordinal,
|
| - &y_offset_ordinal, &finger_count);
|
| - scroll_event->set_offset(x_offset, y_offset);
|
| - scroll_event->set_offset_ordinal(x_offset_ordinal, y_offset_ordinal);
|
| - scroll_event->set_finger_count(finger_count);
|
| - } else if (scroll_event->type() == ET_SCROLL_FLING_START ||
|
| - scroll_event->type() == ET_SCROLL_FLING_CANCEL) {
|
| - GetFlingData(native_event, &x_offset, &y_offset, &x_offset_ordinal,
|
| - &y_offset_ordinal, NULL);
|
| - scroll_event->set_offset(x_offset, y_offset);
|
| - scroll_event->set_offset_ordinal(x_offset_ordinal, y_offset_ordinal);
|
| - } else {
|
| - NOTREACHED() << "Unexpected event type " << scroll_event->type()
|
| - << " when constructing a ScrollEvent.";
|
| - }
|
| -}
|
| -
|
| -} // namespace ui
|
|
|