Chromium Code Reviews| 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) |