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 |