Chromium Code Reviews
DescriptionFix priority of TaskQueue::QueueType::COMPOSITOR on touch events
RendererSchedulerImpl::UpdatePolicyLocked attempts to increase priority of
TaskQueue::QueueType::COMPOSITOR on touch events. To do that, it asks UserModel
if it expects a gesture. UserModel starts expecting a gesture when its method
DidStartProcessingInputEvent is called. The method DidStartProcessingInputEvent
was not called for blink::WebInputEvent::TouchStart, even though the method
clearly expects the event (compares its input param with it), and the event
signals of a gesture start.
The method UserModel::DidStartProcessingInputEvent should propogate
blink::WebInputEvent::TouchStart by next call stack:
InputHandlerManager::DidHandleInputEventAndOverscroll =>
RendererSchedulerImpl::DidHandleInputEventOnCompositorThread =>
RendererSchedulerImpl::UpdateForInputEventOnCompositorThread =>
UserModel::DidStartProcessingInputEvent
But the top method (DidHandleInputEventAndOverscroll) doesn't propogate event
blink::WebInputEvent::TouchStart when it is received.
The method doesn't propogate the event because a switch-case in it
doesn't handle InputEventAckState::INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING
(which is generated for blink::WebInputEvent::TouchStart).
The switch-case in InputHandlerManager::DidHandleInputEventAndOverscroll was
created by commit 7819e255a595, and the not-handled-state
(InputEventAckState::INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING) didn't
exist back then - the switch-case handled all meaningful elements of
InputEventAckState back then (the elements that meant that the touch event
was not ignored).
When InputEventAckState::INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING was created
(0bd451acef1d), a case for it was not added to the switch-case, which causes
blink::WebInputEvent::TouchStart to be ignored by
InputHandlerManager::DidHandleInputEventAndOverscroll.
BUG=705884
Patch Set 1 #
Messages
Total messages: 10 (4 generated)
|
|||||||||||||||||||||||||||||||||||||