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

Unified Diff: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc

Issue 2266883002: scheduler: Reset gesture state at start of a mouse drag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 4 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: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
index 9c5e33a261fef355db3ff3399cc626aa9141ce70..6c32dcbc496d95397d821085935c2d5cccc7f4a3 100644
--- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
@@ -468,7 +468,8 @@ bool RendererSchedulerImpl::ShouldPrioritizeInputEvent(
const blink::WebInputEvent& web_input_event) {
// We regard MouseMove events with the left mouse button down as a signal
// that the user is doing something requiring a smooth frame rate.
- if (web_input_event.type == blink::WebInputEvent::MouseMove &&
+ if ((web_input_event.type == blink::WebInputEvent::MouseDown ||
alex clarke (OOO till 29th) 2016/08/22 11:30:09 Are we going to start blocking expensive tasks if
Sami 2016/08/22 13:25:14 Right, we wouldn't want to do blocking based on a
+ web_input_event.type == blink::WebInputEvent::MouseMove) &&
(web_input_event.modifiers & blink::WebInputEvent::LeftButtonDown)) {
return true;
}
@@ -528,7 +529,7 @@ void RendererSchedulerImpl::UpdateForInputEventOnCompositorThread(
if (input_event_state == InputEventState::EVENT_CONSUMED_BY_COMPOSITOR)
AnyThread().user_model.DidFinishProcessingInputEvent(now);
- if (type) {
+ if (type != blink::WebInputEvent::Undefined) {
alex clarke (OOO till 29th) 2016/08/22 11:30:09 Perhaps handle this as a case in the switch?
Sami 2016/08/22 13:25:15 Good idea -- makes more sense that way.
switch (type) {
case blink::WebInputEvent::TouchStart:
AnyThread().awaiting_touch_start_response = true;
@@ -576,6 +577,20 @@ void RendererSchedulerImpl::UpdateForInputEventOnCompositorThread(
// meaningful touchstart response and should not impact task priority.
break;
+ case blink::WebInputEvent::MouseDown:
+ // Reset tracking state at the start of a new mouse drag gesture.
+ AnyThread().last_gesture_was_compositor_driven = false;
+ AnyThread().default_gesture_prevented = true;
+ break;
+
+ case blink::WebInputEvent::MouseMove:
+ // Consider mouse movement with the left button held down (see
+ // ShouldPrioritizeInputEvent) similarly to a touch gesture.
+ AnyThread().last_gesture_was_compositor_driven =
+ input_event_state == InputEventState::EVENT_CONSUMED_BY_COMPOSITOR;
+ AnyThread().awaiting_touch_start_response = false;
+ break;
+
default:
AnyThread().awaiting_touch_start_response = false;
break;
@@ -1019,8 +1034,6 @@ RendererSchedulerImpl::UseCase RendererSchedulerImpl::ComputeCurrentUseCase(
// stream of input events and has prevented a default gesture from being
// started.
// 4. SYNCHRONIZED_GESTURE where the gesture is processed on both threads.
- // TODO(skyostil): Consider removing in_idle_period_ and
- // HadAnIdlePeriodRecently() unless we need them here.
if (AnyThread().last_gesture_was_compositor_driven) {
if (AnyThread().begin_main_frame_on_critical_path) {
return UseCase::SYNCHRONIZED_GESTURE;
@@ -1281,12 +1294,6 @@ void RendererSchedulerImpl::OnNavigationStarted() {
ResetForNavigationLocked();
}
-bool RendererSchedulerImpl::HadAnIdlePeriodRecently(base::TimeTicks now) const {
- return (now - AnyThread().last_idle_period_end_time) <=
- base::TimeDelta::FromMilliseconds(
- kIdlePeriodStarvationThresholdMillis);
-}
-
void RendererSchedulerImpl::SuspendTimerQueueWhenBackgrounded() {
DCHECK(MainThreadOnly().renderer_backgrounded);
if (MainThreadOnly().timer_queue_suspended_when_backgrounded)

Powered by Google App Engine
This is Rietveld 408576698