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) |