Blink uses a series of task types defined in task_type.h. For each task type that can be frame-attributed, the table below indicates whether the task queue associated with this task type can be paused, throttled, frozen or deferred. All specified (in W3C, HTML, DOM, etc) task types are pausable. Some internal task queues are not.
Queue Type | Throttlable | Throttlable (intensive) | Deferrable | Freezable | Pausable | Virtual time |
---|---|---|---|---|---|---|
DOMManipulation | No | No | Yes | Yes | Yes | Yes |
UserInteraction | No | No | No | Yes | Yes | Yes |
Networking | No | No | Yes | Yes | Yes | No |
NetworkingWithURLLoaderAnnotation | No | No | Yes | Yes | Yes | No |
NetworkingControl | No | No | Yes | Yes | Yes | No |
LowPriorityScriptExecution | No | No | Yes | Yes | Yes | No |
HistoryTraversal | No | No | Yes | Yes | Yes | Yes |
Embed | No | No | Yes | Yes | Yes | Yes |
MediaElementEvent | No | No | No | Yes | Yes | Yes |
CanvasBlobSerialization | No | No | Yes | Yes | Yes | Yes |
Microtask | No | No | Yes | Yes | Yes | Yes |
JavascriptTimerDelayedLowNesting | Yes | No [^1] | Yes | Yes | Yes | Yes |
JavascriptTimerDelayedHighNesting | Yes | Yes [^2] | Yes | Yes | Yes | Yes |
JavascriptTimerImmediate | No | No | Yes | Yes | Yes | Yes |
RemoteEvent | No | No | Yes | Yes | Yes | Yes |
WebSocket | No | No | Yes | Yes | Yes | Yes |
PostedMessage | No | No | No | Yes | Yes | Yes |
UnshippedPortMessage | No | No | Yes | Yes | Yes | Yes |
FileReading | No | No | Yes | Yes | Yes | Yes |
DatabaseAccess | No | No | No | Yes | Yes | Yes |
Presentation | No | No | Yes | Yes | Yes | Yes |
Sensor | No | No | Yes | Yes | Yes | Yes |
PerformanceTimeline | No | No | Yes | Yes | Yes | Yes |
WebGL | No | No | Yes | Yes | Yes | Yes |
WebGPU | No | No | Yes | Yes | Yes | Yes |
IdleTask | No | No | Yes | Yes | Yes | Yes |
MiscPlatformAPI | No | No | Yes | Yes | Yes | Yes |
WorkerAnimation | No | No | No | Yes | Yes | Yes |
FontLoading | No | No | Yes | Yes | Yes | Yes |
ApplicationLifeCycle | No | No | Yes | Yes | Yes | Yes |
BackgroundFetch | No | No | Yes | Yes | Yes | Yes |
Permission | No | No | Yes | Yes | Yes | Yes |
ServiceWorkerClientMessage | No | No | No | Yes | Yes | Yes |
WebLocks | No | No | No | No | No | Yes |
WakeLock | No | No | Yes | Yes | Yes | Yes |
Storage | No | No | Yes | Yes | Yes | Yes |
MachineLearning | No | No | Yes | Yes | Yes | Yes |
WebSchedulingPostedTask | Yes [^3] | Yes [^3] | Yes | Yes | Yes | Yes |
InternalDefault | No | No | Yes | Yes | Yes | Yes |
InternalLoading | No | No | Yes | Yes | Yes | No |
InternalTest | No | No | No | No | No | Yes |
InternalWebCrypto | No | No | No | Yes | Yes | Yes |
InternalMedia | No | No | No | Yes | Yes | Yes |
InternalMediaRealTime | No | No | No | Yes | Yes | Yes |
InternalIPC | No | No | No | No | No | Yes |
InternalUserInteraction | No | No | No | Yes | Yes | Yes |
InternalInspector | No | No | No | No | No | No |
InternalTranslation | Yes | No | Yes | Yes | Yes | Yes |
InternalIntersectionObserver | No | No | No | Yes | Yes | Yes |
InternalContentCapture | Yes | No | Yes | Yes | Yes | Yes |
InternalNavigationAssociated | No | No | No | No | No | No |
InternalFreezableIPC | No | No | No | Yes | No | No |
InternalContinueScriptLoading | No | No | No | Yes | Yes | Yes |
InternalPostMessageForwarding | No | No | No | No | Yes | Yes |
Internal Translation queue supports concept of it running only in the foreground. It is disabled if the page that owns it goes in background.
“Throttlable (Intensive)”: Wake ups are limited to 1 per minute when the page has been backgrounded for 5 minutes. See Chrome Platform Status entry.
[^1] “Yes” if the “IntensiveWakeUpThrottling” feature is enabled and the “can_intensively_throttle_low_nesting_level” param is “true”.
[^2] “No” if the “IntensiveWakeUpThrottling” feature is disabled.
[^3] “Yes” only for scheduler.postTask()
tasks where delay > 0.