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

Unified Diff: components/test_runner/event_sender.cc

Issue 1936853002: Assert event timestamp to be monotonic and not from future Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change to histogram Created 4 years, 2 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
« no previous file with comments | « components/test_runner/event_sender.h ('k') | components/test_runner/web_test_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/test_runner/event_sender.cc
diff --git a/components/test_runner/event_sender.cc b/components/test_runner/event_sender.cc
index 44aba8039829818bccdbb6f4e9bcbd58e5d162ca..c6970d4c38dd6d9b48abe93085986a1ea4737bf3 100644
--- a/components/test_runner/event_sender.cc
+++ b/components/test_runner/event_sender.cc
@@ -1329,9 +1329,14 @@ void EventSender::Reset() {
touch_modifiers_ = 0;
touch_cancelable_ = true;
touch_points_.clear();
+
+ if (delegate())
+ delegate()->SetMockMonotonicTimeFunction(base::Callback<double()>());
}
void EventSender::Install(WebLocalFrame* frame) {
+ delegate()->SetMockMonotonicTimeFunction(
+ base::Bind(&EventSender::GetMockTimeSeconds, base::Unretained(this)));
EventSenderBindings::Install(weak_factory_.GetWeakPtr(), frame);
}
@@ -1346,7 +1351,7 @@ void EventSender::DoDragDrop(const WebDragData& drag_data,
current_pointer_state_[kRawMousePointerId].pressed_button_,
current_pointer_state_[kRawMousePointerId].current_buttons_,
current_pointer_state_[kRawMousePointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count_,
+ GetMockTimeSeconds(), click_count_,
current_pointer_state_[kRawMousePointerId].modifiers_,
&unscaled_event);
@@ -1357,6 +1362,7 @@ void EventSender::DoDragDrop(const WebDragData& drag_data,
WebPoint client_point(event->x, event->y);
WebPoint screen_point(event->globalX, event->globalY);
+
current_drag_data_ = drag_data;
current_drag_effects_allowed_ = mask;
current_drag_effect_ = view()->dragTargetDragEnter(
@@ -1410,7 +1416,7 @@ void EventSender::PointerDown(int button_number,
current_pointer_state_[pointerId].pressed_button_,
current_pointer_state_[pointerId].current_buttons_,
current_pointer_state_[pointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count,
+ GetMockTimeSeconds(), click_count,
current_pointer_state_[pointerId].modifiers_,
pointerType, pointerId, pressure, tiltX, tiltY, &event);
@@ -1453,7 +1459,7 @@ void EventSender::PointerUp(int button_number,
InitMouseEventGeneric(WebInputEvent::MouseUp, button_type,
current_pointer_state_[pointerId].current_buttons_,
current_pointer_state_[pointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count, modifiers,
+ GetMockTimeSeconds(), click_count, modifiers,
pointerType, pointerId, pressure, tiltX, tiltY,
&event);
HandleInputEventOnViewOrPopup(event);
@@ -1653,7 +1659,7 @@ void EventSender::KeyDown(const std::string& code_str,
// Windows event flow; on other platforms we create a merged event and test
// the event flow that that platform provides.
WebKeyboardEvent event_down;
- event_down.timeStampSeconds = GetCurrentEventTimeSec();
+ event_down.timeStampSeconds = GetMockTimeSeconds();
event_down.type = WebInputEvent::RawKeyDown;
event_down.modifiers = modifiers;
event_down.windowsKeyCode = code;
@@ -1713,7 +1719,7 @@ void EventSender::KeyDown(const std::string& code_str,
current_pointer_state_[kRawMousePointerId].pressed_button_,
current_pointer_state_[kRawMousePointerId].current_buttons_,
current_pointer_state_[kRawMousePointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count_, 0, &event);
+ GetMockTimeSeconds(), click_count_, 0, &event);
FinishDragAndDrop(event, blink::WebDragOperationNone);
}
@@ -1763,7 +1769,7 @@ std::vector<std::string> EventSender::ContextClick() {
InitMouseEvent(WebInputEvent::MouseDown, WebMouseEvent::Button::Right,
current_pointer_state_[kRawMousePointerId].current_buttons_,
current_pointer_state_[kRawMousePointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count_, 0, &event);
+ GetMockTimeSeconds(), click_count_, 0, &event);
HandleInputEventOnViewOrPopup(event);
#if defined(OS_WIN)
@@ -1775,7 +1781,7 @@ std::vector<std::string> EventSender::ContextClick() {
InitMouseEvent(WebInputEvent::MouseUp, WebMouseEvent::Button::Right,
current_pointer_state_[kRawMousePointerId].current_buttons_,
current_pointer_state_[kRawMousePointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count_, 0, &event);
+ GetMockTimeSeconds(), click_count_, 0, &event);
HandleInputEventOnViewOrPopup(event);
#endif
@@ -1908,7 +1914,7 @@ void EventSender::GestureFlingCancel() {
// be cumbersome to expect all callers to specify a device, we'll just
// choose Touchpad here.
event.sourceDevice = blink::WebGestureDeviceTouchpad;
- event.timeStampSeconds = GetCurrentEventTimeSec();
+ event.timeStampSeconds = GetMockTimeSeconds();
if (force_layout_on_events_)
view()->updateAllLifecyclePhases();
@@ -1952,7 +1958,7 @@ void EventSender::GestureFlingStart(float x,
event.data.flingStart.velocityX = velocity_x;
event.data.flingStart.velocityY = velocity_y;
- event.timeStampSeconds = GetCurrentEventTimeSec();
+ event.timeStampSeconds = GetMockTimeSeconds();
if (force_layout_on_events_)
view()->updateAllLifecyclePhases();
@@ -2187,7 +2193,7 @@ void EventSender::MouseMoveTo(gin::Arguments* args) {
WebInputEvent::MouseMove,
current_pointer_state_[kRawMousePointerId].pressed_button_,
current_pointer_state_[kRawMousePointerId].current_buttons_, mouse_pos,
- GetCurrentEventTimeSec(), click_count, modifiers, pointerType,
+ GetMockTimeSeconds(), click_count, modifiers, pointerType,
pointerId, pressure, tiltX, tiltY, &event);
HandleInputEventOnViewOrPopup(event);
if (pointerType == WebPointerProperties::PointerType::Mouse)
@@ -2202,7 +2208,7 @@ void EventSender::MouseLeave() {
WebMouseEvent event;
InitMouseEvent(WebInputEvent::MouseLeave, WebMouseEvent::Button::NoButton, 0,
current_pointer_state_[kRawMousePointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count_, 0, &event);
+ GetMockTimeSeconds(), click_count_, 0, &event);
HandleInputEventOnViewOrPopup(event);
}
@@ -2224,7 +2230,7 @@ void EventSender::ScheduleAsynchronousKeyDown(const std::string& code_str,
modifiers, location)));
}
-double EventSender::GetCurrentEventTimeSec() {
+double EventSender::GetMockTimeSeconds() {
return (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF() +
time_offset_ms_ / 1000.0;
}
@@ -2274,7 +2280,7 @@ void EventSender::SendCurrentTouchEvent(WebInputEvent::Type type,
touch_event.dispatchType = touch_cancelable_
? WebInputEvent::Blocking
: WebInputEvent::EventNonBlocking;
- touch_event.timeStampSeconds = GetCurrentEventTimeSec();
+ touch_event.timeStampSeconds = GetMockTimeSeconds();
touch_event.movedBeyondSlopRegion = moved_beyond_slop_region;
touch_event.uniqueTouchEventId = unique_touch_event_id;
touch_event.touchesLength = touch_points_.size();
@@ -2522,7 +2528,7 @@ void EventSender::GestureEvent(WebInputEvent::Type type,
event.globalX = event.x;
event.globalY = event.y;
- event.timeStampSeconds = GetCurrentEventTimeSec();
+ event.timeStampSeconds = GetMockTimeSeconds();
if (force_layout_on_events_)
view()->updateAllLifecyclePhases();
@@ -2535,7 +2541,7 @@ void EventSender::GestureEvent(WebInputEvent::Type type,
InitMouseEvent(WebInputEvent::MouseDown,
current_pointer_state_[kRawMousePointerId].pressed_button_,
current_pointer_state_[kRawMousePointerId].current_buttons_,
- WebPoint(x, y), GetCurrentEventTimeSec(), click_count_,
+ WebPoint(x, y), GetMockTimeSeconds(), click_count_,
current_pointer_state_[kRawMousePointerId].modifiers_,
&mouse_event);
@@ -2546,7 +2552,7 @@ void EventSender::GestureEvent(WebInputEvent::Type type,
void EventSender::UpdateClickCountForButton(
WebMouseEvent::Button button_type) {
- if ((GetCurrentEventTimeSec() - last_click_time_sec_ <
+ if ((GetMockTimeSeconds() - last_click_time_sec_ <
kMultipleClickTimeSec) &&
(!OutsideMultiClickRadius(
current_pointer_state_[kRawMousePointerId].last_pos_,
@@ -2608,7 +2614,7 @@ void EventSender::InitMouseWheelEvent(gin::Arguments* args,
current_pointer_state_[kRawMousePointerId].pressed_button_,
current_pointer_state_[kRawMousePointerId].current_buttons_,
current_pointer_state_[kRawMousePointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count_, modifiers, event);
+ GetMockTimeSeconds(), click_count_, modifiers, event);
event->wheelTicksX = static_cast<float>(horizontal);
event->wheelTicksY = static_cast<float>(vertical);
event->deltaX = event->wheelTicksX;
@@ -2755,7 +2761,7 @@ void EventSender::ReplaySavedEvents() {
WebInputEvent::MouseMove,
current_pointer_state_[kRawMousePointerId].pressed_button_,
current_pointer_state_[kRawMousePointerId].current_buttons_, e.pos,
- GetCurrentEventTimeSec(), click_count_, e.modifiers, &event);
+ GetMockTimeSeconds(), click_count_, e.modifiers, &event);
current_pointer_state_[kRawMousePointerId].last_pos_ =
WebPoint(event.x, event.y);
HandleInputEventOnViewOrPopup(event);
@@ -2776,7 +2782,7 @@ void EventSender::ReplaySavedEvents() {
WebInputEvent::MouseUp, e.button_type,
current_pointer_state_[kRawMousePointerId].current_buttons_,
current_pointer_state_[kRawMousePointerId].last_pos_,
- GetCurrentEventTimeSec(), click_count_, e.modifiers, &event);
+ GetMockTimeSeconds(), click_count_, e.modifiers, &event);
HandleInputEventOnViewOrPopup(event);
DoDragAfterMouseUp(event);
break;
@@ -2808,7 +2814,7 @@ void EventSender::SendGesturesForMouseWheelEvent(
const WebMouseWheelEvent wheel_event) {
WebGestureEvent begin_event;
InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollBegin,
- GetCurrentEventTimeSec(), wheel_event,
+ GetMockTimeSeconds(), wheel_event,
&begin_event);
begin_event.data.scrollBegin.deltaXHint = wheel_event.deltaX;
begin_event.data.scrollBegin.deltaYHint = wheel_event.deltaY;
@@ -2836,7 +2842,7 @@ void EventSender::SendGesturesForMouseWheelEvent(
WebGestureEvent update_event;
InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollUpdate,
- GetCurrentEventTimeSec(), wheel_event,
+ GetMockTimeSeconds(), wheel_event,
&update_event);
update_event.data.scrollUpdate.deltaX =
begin_event.data.scrollBegin.deltaXHint;
@@ -2851,7 +2857,7 @@ void EventSender::SendGesturesForMouseWheelEvent(
WebGestureEvent end_event;
InitGestureEventFromMouseWheel(WebInputEvent::GestureScrollEnd,
- GetCurrentEventTimeSec(), wheel_event,
+ GetMockTimeSeconds(), wheel_event,
&end_event);
end_event.data.scrollEnd.deltaUnits =
begin_event.data.scrollBegin.deltaHintUnits;
« no previous file with comments | « components/test_runner/event_sender.h ('k') | components/test_runner/web_test_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698