summaryrefslogtreecommitdiff
path: root/chromium/ui/events/event.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/events/event.cc')
-rw-r--r--chromium/ui/events/event.cc117
1 files changed, 57 insertions, 60 deletions
diff --git a/chromium/ui/events/event.cc b/chromium/ui/events/event.cc
index 219c9c42080..e60e7095cb0 100644
--- a/chromium/ui/events/event.cc
+++ b/chromium/ui/events/event.cc
@@ -6,14 +6,17 @@
#include <cmath>
#include <cstring>
+#include <memory>
+#include <string>
#include <utility>
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram.h"
#include "base/metrics/histogram_macros.h"
+#include "base/notreached.h"
+#include "base/strings/string16.h"
#include "base/strings/string_number_conversions.h"
-#include "base/strings/stringprintf.h"
#include "build/build_config.h"
#include "ui/events/base_event_utils.h"
#include "ui/events/event_utils.h"
@@ -28,7 +31,7 @@
#include "ui/gfx/transform_util.h"
#if defined(USE_OZONE)
-#include "ui/events/ozone/layout/keyboard_layout_engine.h" // nogncheck
+#include "ui/events/ozone/layout/keyboard_layout_engine.h" // nogncheck
#include "ui/events/ozone/layout/keyboard_layout_engine_manager.h" // nogncheck
#endif
@@ -40,9 +43,8 @@ namespace ui {
namespace {
constexpr int kChangedButtonFlagMask =
- ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON |
- ui::EF_RIGHT_MOUSE_BUTTON | ui::EF_BACK_MOUSE_BUTTON |
- ui::EF_FORWARD_MOUSE_BUTTON;
+ EF_LEFT_MOUSE_BUTTON | EF_MIDDLE_MOUSE_BUTTON | EF_RIGHT_MOUSE_BUTTON |
+ EF_BACK_MOUSE_BUTTON | EF_FORWARD_MOUSE_BUTTON;
SourceEventType EventTypeToLatencySourceEventType(EventType type) {
switch (type) {
@@ -72,8 +74,8 @@ SourceEventType EventTypeToLatencySourceEventType(EventType type) {
case ET_SCROLL_FLING_CANCEL:
return SourceEventType::UNKNOWN;
- case ui::ET_KEY_PRESSED:
- return ui::SourceEventType::KEY_PRESS;
+ case ET_KEY_PRESSED:
+ return SourceEventType::KEY_PRESS;
case ET_MOUSE_PRESSED:
case ET_MOUSE_DRAGGED:
@@ -141,7 +143,7 @@ std::string ScrollEventPhaseToString(ScrollEventPhase phase) {
#if defined(USE_OZONE)
uint32_t ScanCodeFromNative(const PlatformEvent& native_event) {
- const ui::KeyEvent* event = static_cast<const ui::KeyEvent*>(native_event);
+ const KeyEvent* event = static_cast<const KeyEvent*>(native_event);
DCHECK(event->IsKeyEvent());
return event->scan_code();
}
@@ -189,6 +191,13 @@ Event::~Event() {
ReleaseCopiedNativeEvent(native_event_);
}
+void Event::SetNativeEvent(const PlatformEvent& event) {
+ if (delete_native_event_)
+ ReleaseCopiedNativeEvent(native_event_);
+ native_event_ = CopyNativeEvent(event);
+ delete_native_event_ = true;
+}
+
const char* Event::GetName() const {
return EventTypeName(type_);
}
@@ -308,12 +317,12 @@ std::string Event::ToString() const {
Event::Event(EventType type, base::TimeTicks time_stamp, int flags)
: type_(type),
- time_stamp_(time_stamp),
+ time_stamp_(time_stamp.is_null() ? EventTimeForNow() : time_stamp),
flags_(flags),
native_event_(PlatformEvent()),
delete_native_event_(false),
cancelable_(true),
- target_(NULL),
+ target_(nullptr),
phase_(EP_PREDISPATCH),
result_(ER_UNHANDLED),
source_device_id_(ED_UNKNOWN_DEVICE) {
@@ -328,7 +337,7 @@ Event::Event(const PlatformEvent& native_event, EventType type, int flags)
native_event_(native_event),
delete_native_event_(false),
cancelable_(true),
- target_(NULL),
+ target_(nullptr),
phase_(EP_PREDISPATCH),
result_(ER_UNHANDLED),
source_device_id_(ED_UNKNOWN_DEVICE) {
@@ -351,7 +360,7 @@ Event::Event(const Event& copy)
native_event_(CopyNativeEvent(copy.native_event_)),
delete_native_event_(true),
cancelable_(true),
- target_(NULL),
+ target_(nullptr),
phase_(EP_PREDISPATCH),
result_(ER_UNHANDLED),
source_device_id_(copy.source_device_id_),
@@ -380,7 +389,7 @@ Event& Event::operator=(const Event& rhs) {
else
properties_.reset();
}
- latency_.set_source_event_type(ui::SourceEventType::OTHER);
+ latency_.set_source_event_type(SourceEventType::OTHER);
return *this;
}
@@ -398,8 +407,7 @@ CancelModeEvent::CancelModeEvent()
set_cancelable(false);
}
-CancelModeEvent::~CancelModeEvent() {
-}
+CancelModeEvent::~CancelModeEvent() = default;
////////////////////////////////////////////////////////////////////////////////
// LocatedEvent
@@ -459,7 +467,7 @@ MouseEvent::MouseEvent(const PlatformEvent& native_event)
: LocatedEvent(native_event),
changed_button_flags_(GetChangedMouseButtonFlagsFromNative(native_event)),
pointer_details_(GetMousePointerDetailsFromNative(native_event)) {
- latency()->set_source_event_type(ui::SourceEventType::MOUSE);
+ latency()->set_source_event_type(SourceEventType::MOUSE);
latency()->AddLatencyNumberWithTimestamp(
INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, time_stamp());
latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT);
@@ -479,7 +487,7 @@ MouseEvent::MouseEvent(EventType type,
DCHECK_NE(ET_MOUSEWHEEL, type);
DCHECK_EQ(changed_button_flags_,
changed_button_flags_ & kChangedButtonFlagMask);
- latency()->set_source_event_type(ui::SourceEventType::MOUSE);
+ latency()->set_source_event_type(SourceEventType::MOUSE);
latency()->AddLatencyNumber(INPUT_EVENT_LATENCY_UI_COMPONENT);
if (this->type() == ET_MOUSE_MOVED && IsAnyButton())
SetType(ET_MOUSE_DRAGGED);
@@ -518,8 +526,7 @@ bool MouseEvent::IsRepeatedClickEvent(const MouseEvent& event1,
static const int kDoubleClickWidth = 4;
static const int kDoubleClickHeight = 4;
- if (event1.type() != ET_MOUSE_PRESSED ||
- event2.type() != ET_MOUSE_PRESSED)
+ if (event1.type() != ET_MOUSE_PRESSED || event2.type() != ET_MOUSE_PRESSED)
return false;
// Compare flags, but ignore EF_IS_DOUBLE_CLICK to allow triple clicks.
@@ -549,9 +556,9 @@ bool MouseEvent::IsRepeatedClickEvent(const MouseEvent& event1,
int MouseEvent::GetRepeatCount(const MouseEvent& event) {
int click_count = 1;
if (last_click_event_) {
- if (event.type() == ui::ET_MOUSE_RELEASED) {
+ if (event.type() == ET_MOUSE_RELEASED) {
if (event.changed_button_flags() ==
- last_click_event_->changed_button_flags()) {
+ last_click_event_->changed_button_flags()) {
return last_click_event_->GetClickCount();
} else {
// If last_click_event_ has changed since this button was pressed
@@ -577,12 +584,12 @@ int MouseEvent::GetRepeatCount(const MouseEvent& event) {
void MouseEvent::ResetLastClickForTest() {
if (last_click_event_) {
delete last_click_event_;
- last_click_event_ = NULL;
+ last_click_event_ = nullptr;
}
}
// static
-MouseEvent* MouseEvent::last_click_event_ = NULL;
+MouseEvent* MouseEvent::last_click_event_ = nullptr;
int MouseEvent::GetClickCount() const {
if (type() != ET_MOUSE_PRESSED && type() != ET_MOUSE_RELEASED)
@@ -642,8 +649,7 @@ MouseWheelEvent::MouseWheelEvent(const MouseEvent& mouse_event,
}
MouseWheelEvent::MouseWheelEvent(const MouseWheelEvent& mouse_wheel_event)
- : MouseEvent(mouse_wheel_event),
- offset_(mouse_wheel_event.offset()) {
+ : MouseEvent(mouse_wheel_event), offset_(mouse_wheel_event.offset()) {
DCHECK_EQ(ET_MOUSEWHEEL, type());
}
@@ -653,7 +659,7 @@ MouseWheelEvent::MouseWheelEvent(const gfx::Vector2d& offset,
base::TimeTicks time_stamp,
int flags,
int changed_button_flags)
- : MouseEvent(ui::ET_UNKNOWN,
+ : MouseEvent(ET_UNKNOWN,
location,
root_location,
time_stamp,
@@ -663,7 +669,7 @@ MouseWheelEvent::MouseWheelEvent(const gfx::Vector2d& offset,
// Set event type to ET_UNKNOWN initially in MouseEvent() to pass the
// DCHECK for type to enforce that we use MouseWheelEvent() to create
// a MouseWheelEvent.
- SetType(ui::ET_MOUSEWHEEL);
+ SetType(ET_MOUSEWHEEL);
}
MouseWheelEvent::MouseWheelEvent(const gfx::Vector2d& offset,
@@ -805,9 +811,7 @@ KeyEvent::KeyEvent(EventType type,
KeyboardCode key_code,
int flags,
base::TimeTicks time_stamp)
- : Event(type,
- time_stamp == base::TimeTicks() ? EventTimeForNow() : time_stamp,
- flags),
+ : Event(type, time_stamp, flags),
key_code_(key_code),
code_(UsLayoutKeyboardCodeToDomCode(key_code)) {}
@@ -815,10 +819,7 @@ KeyEvent::KeyEvent(EventType type,
KeyboardCode key_code,
DomCode code,
int flags)
- : Event(type, EventTimeForNow(), flags),
- key_code_(key_code),
- code_(code) {
-}
+ : Event(type, EventTimeForNow(), flags), key_code_(key_code), code_(code) {}
KeyEvent::KeyEvent(EventType type,
KeyboardCode key_code,
@@ -838,9 +839,7 @@ KeyEvent::KeyEvent(base::char16 character,
DomCode code,
int flags,
base::TimeTicks time_stamp)
- : Event(ET_KEY_PRESSED,
- time_stamp == base::TimeTicks() ? EventTimeForNow() : time_stamp,
- flags),
+ : Event(ET_KEY_PRESSED, time_stamp, flags),
key_code_(key_code),
code_(code),
is_char_(true),
@@ -881,7 +880,7 @@ void KeyEvent::InitializeNative() {
// Check if this is a key repeat. This must be called before initial flags
// processing, e.g: NormalizeFlags(), to avoid issues like crbug.com/1069690.
if (IsRepeated(GetLastKeyEvent()))
- set_flags(flags() | ui::EF_IS_REPEAT);
+ set_flags(flags() | EF_IS_REPEAT);
#if defined(USE_X11)
NormalizeFlags();
@@ -899,7 +898,7 @@ void KeyEvent::InitializeNative() {
}
void KeyEvent::ApplyLayout() const {
- ui::DomCode code = code_;
+ DomCode code = code_;
if (code == DomCode::NONE) {
// Catch old code that tries to do layout without a physical key, and try
// to recover using the KeyboardCode. Once key events are fully defined
@@ -940,13 +939,13 @@ bool KeyEvent::IsRepeated(KeyEvent** last_key_event) {
if (is_char())
return false;
- if (type() == ui::ET_KEY_RELEASED) {
+ if (type() == ET_KEY_RELEASED) {
delete *last_key_event;
*last_key_event = nullptr;
return false;
}
- CHECK_EQ(ui::ET_KEY_PRESSED, type());
+ CHECK_EQ(ET_KEY_PRESSED, type());
KeyEvent* last = *last_key_event;
if (!last) {
@@ -954,7 +953,7 @@ bool KeyEvent::IsRepeated(KeyEvent** last_key_event) {
return false;
} else if (time_stamp() == last->time_stamp()) {
// The KeyEvent is created from the same native event.
- return (last->flags() & ui::EF_IS_REPEAT) != 0;
+ return (last->flags() & EF_IS_REPEAT) != 0;
}
DCHECK(last);
@@ -969,7 +968,7 @@ bool KeyEvent::IsRepeated(KeyEvent** last_key_event) {
#endif
if (!is_repeat) {
if (key_code() == last->key_code() &&
- flags() == (last->flags() & ~ui::EF_IS_REPEAT) &&
+ flags() == (last->flags() & ~EF_IS_REPEAT) &&
(time_stamp() - last->time_stamp()).InMilliseconds() <
kMaxAutoRepeatTimeMs) {
is_repeat = true;
@@ -978,7 +977,7 @@ bool KeyEvent::IsRepeated(KeyEvent** last_key_event) {
if (is_repeat) {
last->set_time_stamp(time_stamp());
- last->set_flags(last->flags() | ui::EF_IS_REPEAT);
+ last->set_flags(last->flags() | EF_IS_REPEAT);
return true;
}
@@ -1036,8 +1035,8 @@ base::char16 KeyEvent::GetCharacter() const {
base::char16 KeyEvent::GetText() const {
if ((flags() & EF_CONTROL_DOWN) != 0) {
- ui::DomKey key;
- ui::KeyboardCode key_code;
+ DomKey key;
+ KeyboardCode key_code;
if (DomCodeToControlCharacter(code_, flags(), &key, &key_code))
return key.ToCharacter();
}
@@ -1061,9 +1060,9 @@ bool KeyEvent::IsUnicodeKeyCode() const {
// In that case, EF_EXTENDED will not be set; if it is set, the key event
// originated from the relevant non-numpad dedicated key, e.g. [Insert].
return (!(flags() & EF_IS_EXTENDED_KEY) &&
- (key == VKEY_INSERT || key == VKEY_END || key == VKEY_DOWN ||
- key == VKEY_NEXT || key == VKEY_LEFT || key == VKEY_CLEAR ||
- key == VKEY_RIGHT || key == VKEY_HOME || key == VKEY_UP ||
+ (key == VKEY_INSERT || key == VKEY_END || key == VKEY_DOWN ||
+ key == VKEY_NEXT || key == VKEY_LEFT || key == VKEY_CLEAR ||
+ key == VKEY_RIGHT || key == VKEY_HOME || key == VKEY_UP ||
key == VKEY_PRIOR));
#else
return false;
@@ -1124,18 +1123,16 @@ ScrollEvent::ScrollEvent(const PlatformEvent& native_event)
&y_offset_ordinal_, &finger_count_, &momentum_phase_);
} else if (type() == ET_SCROLL_FLING_START ||
type() == ET_SCROLL_FLING_CANCEL) {
- GetFlingData(native_event,
- &x_offset_, &y_offset_,
- &x_offset_ordinal_, &y_offset_ordinal_,
- NULL);
+ GetFlingData(native_event, &x_offset_, &y_offset_, &x_offset_ordinal_,
+ &y_offset_ordinal_, nullptr);
} else {
NOTREACHED() << "Unexpected event type " << type()
- << " when constructing a ScrollEvent.";
+ << " when constructing a ScrollEvent.";
}
if (IsScrollEvent())
- latency()->set_source_event_type(ui::SourceEventType::WHEEL);
+ latency()->set_source_event_type(SourceEventType::WHEEL);
else
- latency()->set_source_event_type(ui::SourceEventType::TOUCH);
+ latency()->set_source_event_type(SourceEventType::TOUCH);
}
ScrollEvent::ScrollEvent(EventType type,
@@ -1159,7 +1156,7 @@ ScrollEvent::ScrollEvent(EventType type,
momentum_phase_(momentum_phase),
scroll_event_phase_(scroll_event_phase) {
CHECK(IsScrollEvent());
- latency()->set_source_event_type(ui::SourceEventType::WHEEL);
+ latency()->set_source_event_type(SourceEventType::WHEEL);
}
ScrollEvent::ScrollEvent(EventType type,
@@ -1224,11 +1221,11 @@ GestureEvent::GestureEvent(float x,
flags | EF_FROM_TOUCH),
details_(details),
unique_touch_event_id_(unique_touch_event_id) {
- latency()->set_source_event_type(ui::SourceEventType::TOUCH);
+ latency()->set_source_event_type(SourceEventType::TOUCH);
// TODO(crbug.com/868056) Other touchpad gesture should report as TOUCHPAD.
if (IsPinchEvent() &&
- details.device_type() == ui::GestureDeviceType::DEVICE_TOUCHPAD) {
- latency()->set_source_event_type(ui::SourceEventType::TOUCHPAD);
+ details.device_type() == GestureDeviceType::DEVICE_TOUCHPAD) {
+ latency()->set_source_event_type(SourceEventType::TOUCHPAD);
}
}