Reviewers: lanwei, dtapuska
CL:
https://codereview.chromium.org/2273703002/Message:
PTAL
Description:
Force events to be non blocking if main thread is unresponsive.
Behind the MainThreadBusyScrollIntervention content feature.
Uses the estimated input latency
(
https://docs.google.com/document/d/1b9slyaB9yho91YTOkAQfpCdULFkZM9LqsipcX3t7He8/)
to determine when the main thread is unresponsive. When the main thread
is unresponsive, forces events to be non-blocking.
To be enabled via Finch.
TEST=MainThreadEventQueueTest.ForcedNonBlockingDueToUnresponsiveMainThread,
RenderWidgetUnittest.RenderWidgetInputEventUmaMetrics
QueueingTimeEstimatorTest.EstimateQueueingTimeDuringSingleLongTaskIncompleteWindow
QueueingTimeEstimatorTest.EstimateQueueingTimeDuringSingleLongTaskExceedingWindow
BUG=599609
Base URL:
https://chromium.googlesource.com/chromium/src.git@masterAffected files (+414, -128 lines):
M content/public/common/content_features.h
M content/public/common/content_features.cc
M content/renderer/input/main_thread_event_queue.h
M content/renderer/input/main_thread_event_queue.cc
M content/renderer/input/main_thread_event_queue_unittest.cc
M content/renderer/input/render_widget_input_handler.cc
M content/renderer/render_widget_unittest.cc
M third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator.h
M third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator.cc
M third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator_unittest.cc
M third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
M third_party/WebKit/Source/platform/scheduler/base/task_time_tracker.h
M third_party/WebKit/Source/platform/scheduler/base/test_task_time_tracker.h
M third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
M third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
M third_party/WebKit/Source/platform/scheduler/test/fake_renderer_scheduler.cc
M third_party/WebKit/public/platform/WebInputEvent.h
M third_party/WebKit/public/platform/scheduler/renderer/renderer_scheduler.h
M third_party/WebKit/public/platform/scheduler/test/fake_renderer_scheduler.h
M third_party/WebKit/public/platform/scheduler/test/mock_renderer_scheduler.h
M tools/metrics/histograms/histograms.xml