| Index: content/renderer/input/main_thread_event_queue.cc
|
| diff --git a/content/renderer/input/main_thread_event_queue.cc b/content/renderer/input/main_thread_event_queue.cc
|
| index 8c1b8675cfafb469d36ae1841c51a4d9256fe32e..4992872821c0da7c87b7d7e6364f2cfab245b51e 100644
|
| --- a/content/renderer/input/main_thread_event_queue.cc
|
| +++ b/content/renderer/input/main_thread_event_queue.cc
|
| @@ -46,6 +46,9 @@ MainThreadEventQueue::MainThreadEventQueue(
|
| last_touch_start_forced_nonblocking_due_to_fling_(false),
|
| enable_fling_passive_listener_flag_(base::FeatureList::IsEnabled(
|
| features::kPassiveEventListenersDueToFling)),
|
| + enable_non_blocking_due_to_main_thread_responsiveness_flag_(
|
| + base::FeatureList::IsEnabled(
|
| + features::kMainThreadBusyScrollIntervention)),
|
| main_task_runner_(main_task_runner),
|
| renderer_scheduler_(renderer_scheduler) {}
|
|
|
| @@ -91,6 +94,18 @@ bool MainThreadEventQueue::HandleEvent(
|
| last_touch_start_forced_nonblocking_due_to_fling_ = true;
|
| }
|
| }
|
| +
|
| + if (enable_non_blocking_due_to_main_thread_responsiveness_flag_ &&
|
| + touch_event->dispatchType == blink::WebInputEvent::Blocking) {
|
| + bool passive_due_to_unresponsive_main =
|
| + renderer_scheduler_
|
| + ->ShouldForceEventsNonBlockingForUnresponsiveMainThread();
|
| + if (passive_due_to_unresponsive_main) {
|
| + touch_event->dispatchType = blink::WebInputEvent::
|
| + ListenersForcedNonBlockingDueToMainThreadResponsiveness;
|
| + non_blocking = true;
|
| + }
|
| + }
|
| }
|
| if (is_wheel && non_blocking) {
|
| // Adjust the |dispatchType| on the event since the compositor
|
|
|