Thank you for the answers Etienne. Once the Testing bit has been
requested, I'm happy to give an LGTM.
On 3/25/24 11:08 AM, Etienne Pierre-doray wrote:
Right - that's my question. I also asked how similar this change
is to whatever Safari implements - do they also align wakeups of
JS timers for cross-origin, < 75% of viewport, frames that haven't
yet received a user gesture? You previously wrote "non-interacted
cross origin frames" for WebKit. Is there also a viewport condition?
I don't think WebKit has a viewport condition. [code
<https://github.com/WebKit/WebKit/blob/main/Source/WebCore/dom/Document.cpp#L4005>]
I believe the question Mike asked is not if this is spec
compliant, but if the specifics of this should be more tightly
specified, given that both WebKit and Chromium find a similar
intervention useful.
Defining this concept in the spec would presumably be used to more
strictly define when throttling is allowed (1) or mandatory (2) by
browsers. I really don't think it's useful to specify this more
tightly in the spec, as it makes performance interventions overly
restrictive and is prone to rotting over time, as common patterns and
APIs evolve.
1- Allowing throttling *only* for some definition of unimportant
frames could provide a more predictable platform to web devs, but it
seems overly restrictive on what the platform is allowed to do, and
locks us in wrt. the kind of performance intervention we're allowed to
do. This is already not true: both Webkit and blink implement various
throttling in power-reducing situations other than unimportant frames.
2- It's unclear how making throttling mandatory in certain situations
brings value to web devs, especially if the intervention is different
among browsers. It does however add unnecessary constraints on the
platform.
As a case in point, the spec specifies a mandatory 4ms delay on
settimeout (8.6.5
<https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers>)
with a nesting level greater than 5. This intervention doesn't really
make sense in modern day browsers, and neither blink or webkit are
spec compliant (in distinct ways).
On Fri, Mar 22, 2024 at 2:57 PM Mike Taylor <miketa...@chromium.org>
wrote:
On 3/22/24 1:37 AM, Yoav Weiss (@Shopify) wrote:
On Thu, Mar 21, 2024 at 10:11 AM Zheda Chen
<zheda.c...@intel.com> wrote:
The privacy/security/enterprise/debuggability gates are
requested on Chrome Status. Testing gate to be requested later.
Thanks - we've been asked to not send LGTMs until all bits have
been requested. Can you let us know when Testing is?
"Unimportant" cross origin frames means they are
cross-origin, visible but use non-large proportion (<75%) of
page's visible area and have not received a user gesture. All
3 conditions should be met. The criteria are too long so we
use "unimportant" concept here.
Thank you - that's much more clear to me now.
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". In Safari, DOM timers of non-interacted cross
origin frames are aligned to 30ms after reaching max nesting
level (>=5). In Firefox, all DOM timers of frames (both same
origin and cross origin) are aligned to 16ms. See details
in"Interoperability and Compatibility Risks", "Safari views",
"Firefox views".
I believe the question Mike asked is not if this is spec
compliant, but if the specifics of this should be more tightly
specified, given that both WebKit and Chromium find a similar
intervention useful.
Right - that's my question. I also asked how similar this change
is to whatever Safari implements - do they also align wakeups of
JS timers for cross-origin, < 75% of viewport, frames that haven't
yet received a user gesture? You previously wrote "non-interacted
cross origin frames" for WebKit. Is there also a viewport condition?
On Thursday, March 21, 2024 at 1:27:16 AM UTC+8
mike...@chromium.org wrote:
You should be able to see all the various bits for
approvals in your chromestatus entry now, can you fill
them out please?
There have been a few questions/comments about the lack
of clarity of what "unimportant cross-origin frames" are.
What exactly is the definition? You mention that Safari
has a similar intervention - how similar is it? Do we
know? I wonder if there is alignment for this
"unimportant cross-origin frame" concept, if we shouldn't
specify that somehow.
On 3/15/24 2:58 AM, Zheda Chen wrote:
*Intent to Ship: Add JavaScript timer wake up alignment
for unimportant cross-origin frames*
Contact emails
zheda...@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/7b8b9b84-2285-4fa9-a80d-c5fc0c1c0c41n%40chromium.org
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7b8b9b84-2285-4fa9-a80d-c5fc0c1c0c41n%40chromium.org?utm_medium=email&utm_source=footer>.
--
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/97506e50-9dcb-42b2-900e-685d43bfa341%40chromium.org.