Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(930)

Unified Diff: third_party/WebKit/Source/platform/WebFrameScheduler.h

Issue 2895673002: [scheduler] Add unthrottled-by-blockable task queue to fix touch latency regression. (Closed)
Patch Set: Address comments and disable a failing test Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/WebFrameScheduler.h
diff --git a/third_party/WebKit/Source/platform/WebFrameScheduler.h b/third_party/WebKit/Source/platform/WebFrameScheduler.h
index f1ea4505332ce61291aa6c0abb5be50199cd01e6..c3123785866ed3ddbaeae4a3fd8d1f7a55fa1642 100644
--- a/third_party/WebKit/Source/platform/WebFrameScheduler.h
+++ b/third_party/WebKit/Source/platform/WebFrameScheduler.h
@@ -43,14 +43,31 @@ class WebFrameScheduler {
// frames.
virtual void SetCrossOrigin(bool) {}
- // Returns the WebTaskRunner for loading tasks.
- // WebFrameScheduler owns the returned WebTaskRunner.
- virtual RefPtr<WebTaskRunner> LoadingTaskRunner() = 0;
+ // The tasks runners below are listed in increasing QoS order.
+ // - timer task queue. Designed for custom user-provided javascript tasks.
+ // Lowest guarantees. Can be suspended, blocked during user gesture or
+ // throttled when backgrounded.
+ // - loading task queue. Can be suspended or blocked during user gesture.
+ // Throttling might be considered in the future.
+ // - suspendable task queue. Can be suspended and blocked during user gesture,
+ // can't be throttled.
+ // - unthrottled-but-blockable task queue. Can't be throttled, can't
+ // be suspended but can be blocked during user gesture.
+ // NOTE: existence of this queue is a temporary fix for scroll latency
+ // regression. All tasks should be moved from this queue to suspendable
+ // or unthrottled queues and it should be deleted.
+ // - unthrottled task queue. Highest guarantees. Can't be throttled,
+ // suspended or blocked. Should be used only when necessary after
+ // consulting scheduler-dev@.
// Returns the WebTaskRunner for timer tasks.
// WebFrameScheduler owns the returned WebTaskRunner.
virtual RefPtr<WebTaskRunner> TimerTaskRunner() = 0;
+ // Returns the WebTaskRunner for loading tasks.
+ // WebFrameScheduler owns the returned WebTaskRunner.
+ virtual RefPtr<WebTaskRunner> LoadingTaskRunner() = 0;
+
// Returns the WebTaskRunner for tasks which shouldn't get throttled,
// but can be suspended.
// TODO(altimin): This is a transitional task runner. Unthrottled task runner
@@ -58,6 +75,13 @@ class WebFrameScheduler {
// task runner will be added.
virtual RefPtr<WebTaskRunner> SuspendableTaskRunner() = 0;
+ // Retuns the WebTaskRunner for tasks which should not be suspended or
+ // throttled, but should be blocked during user gesture.
+ // This is a temporary task runner needed for a fix for touch latency
+ // regression. All tasks from it should be moved to suspendable or
+ // unthrottled task runner.
+ virtual RefPtr<WebTaskRunner> UnthrottledButBlockableTaskRunner() = 0;
+
// Returns the WebTaskRunner for tasks which should never get throttled.
// This is generally used for executing internal browser tasks which should
// never be throttled. Ideally only tasks whose performance characteristics

Powered by Google App Engine
This is Rietveld 408576698