*Intent to Ship: Add JavaScript timer wake up alignment for unimportant 
cross-origin frames*

Contact emails
zheda.c...@intel.com, fdo...@chromium.org

Specification
https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html

Summary

Align wake ups of JavaScript timers for unimportant cross-origin frames. 
Currently, DOM timers <32ms are all opt-out from AlignWakeUps [1] due to 
performance concerns. This is very conservative and actually some 
unimportant frames are eligible to use JS timer alignment. WebKit uses the 
policy to align DOM timer of non-interacted cross origin frames to 30ms. 
This feature adds JavaScript timer wake up alignment for unimportant frames 
on foreground pages. Unimportant frames means they are cross origin, 
visible but have non-large proportion of page’s visible area, and have no 
user interaction. The alignment interval is 32ms. [1] 
https://chromium-review.googlesource.com/c/chromium/src/+/4589092


Blink component
Blink>PerformanceAPIs>Timers 
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EPerformanceAPIs%3ETimers>

TAG review
None

TAG review status
Not applicable

Risks


Interoperability and Compatibility

"Other vendors already have interoperable implementation" Safari has a 
similar intervention. DOM timers of non-interacted cross origin frames are 
aligned to 30ms. In Firefox, all DOM timers (both same-origin and 
cross-origin) in foreground pages would be aligned to 16ms. "A mature 
specification in the relevant standards body" This intervention is 
spec-compliant. The spec mentions "the SetTimeout/SetInterval API does not 
guarantee that timers will run exactly on schedule. Delays due to CPU load, 
other tasks, etc, are to be expected. ". The wait length of time is 
implementation-defined, "which is intended to allow user agents to pad 
timeouts as needed to optimize the power usage of the device. " 
https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html "A 
shared test suite for that specification" It isn't clear what should be 
tested specifically for this intervention since the spec allows waiting for 
an "implementation-defined" length.


*Gecko*: Shipped/Shipping
In Firefox, all DOM timers of frames (both same origin and cross origin) 
are aligned to 16ms

*WebKit*: Shipped/Shipping
In Safari, DOM timers of non-interacted cross origin frames are aligned to 
30ms after reaching max nesting level (>=5)

*Web developers*: No signals

*Other signals*:

WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that 
it has potentially high risk for Android WebView-based applications?

None


Debuggability

None


Will this feature be supported on all six Blink platforms (Windows, Mac, 
Linux, ChromeOS, Android, and Android WebView)?
Yes

Is this feature fully tested by web-platform-tests 
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
?
Yes

This intervention doesn't require changes to the spec. Timers are already 
covered by Web Platform Tests.


Flag name on chrome://flags
None

Finch feature name
ThrottleUnimportantFrameTimers

Requires code in //chrome?
False

Tracking bug
https://issues.chromium.org/issues/40942028

Launch bug
https://issues.chromium.org/issues/40942028

Estimated milestones
Shipping on desktop
123
DevTrial on desktop
121
Shipping on Android
123
DevTrial on Android
121

Anticipated spec changes

Open questions about a feature may be a source of future web compat or 
interop issues. Please list open issues (e.g. links to known github issues 
in the project for the feature specification) whose resolution may 
introduce web compat/interop risk (e.g., changing to naming or structure of 
the API in a non-backward-compatible way).
None

Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5106220399853568

Links to previous Intent discussions

This intent message was generated by Chrome Platform Status 
<https://chromestatus.com/>.


On Friday, March 15, 2024 at 6:24:06 AM UTC+8 mike...@chromium.org wrote:

The privacy and security teams review all intents, so requesting reviews 
and answering the relevant questionnaires is the best path forward.

Looking forward to the new I2S - thanks!
On 3/14/24 11:22 AM, Zheda Chen wrote:

More details are updated in ChromeStatus, including interoperability and 
compatibility risks, Safari/Firefox views, web platform tests. It compares 
the behaviors across different browser vendors. 
https://chromestatus.com/feature/5106220399853568 

Will send the updated "intent to ship" to this thread later if it looks 
good.

AFAIK, I don't see potential privacy/security issues, so can i set 
"security review status" and "privacy review status" to "not applicable"? 
Please let us know if you have any concerns.

On Wednesday, March 13, 2024 at 10:00:35 AM UTC+8 dom...@chromium.org wrote:

Can you fill out the interoperability and compatibility risks section here? 
I don't think standards position requests are necessary, but saying how 
this behavior might break existing sites that assume Chromium's current 
behavior, and how this new behavior compares to WebKit and Gecko, would be 
helpful. 

Also, can you request the privacy/security/enterprise/debuggability/testing 
gates on Chrome Status?

On Tue, Mar 12, 2024 at 10:12 PM Zheda Chen <zheda...@intel.com> wrote:

Okay I update the process stage in Chrome Platform Status, and paste the 
newly-generated Intent above. Please take a look. 

https://chromestatus.com/feature/5106220399853568

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/fef3fef7-e01a-4c97-927d-4c1095cba2cdn%40chromium.org.

Reply via email to