-
Notifications
You must be signed in to change notification settings - Fork 312
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add an option to include frozen documents. #1442
base: main
Are you sure you want to change the base?
Conversation
@wanderview WDYT? |
Why do we restrict this to window clients? At least in firefox you can have dedicated workers that are frozen by virtue of their owning document being frozen. Also, I think if we are adding an Also, I'm not sure this adequately captures the issue where frozen clients should not be considered controlled when determining if an active service worker can be discarded. We also probably need to ignore frozen clients in clients.claim(). Not sure if your intent is for those to be handled here or in a separate PR. Finally, exposing the frozen indicator probably needs some discussion amongst others in the group. We should probably renew discussion in #626. |
I've added the frozen attribute to Client and removed the requirement for it to be a WindowClient. @jakearchibald How can we proceed with this? |
docs/index.bs
Outdated
@@ -66,6 +66,10 @@ spec: page-visibility; urlPrefix: https://www.w3.org/TR/page-visibility/ | |||
type: enum; text: VisibilityState; url: VisibilityState | |||
type: attribute; text: visibilityState; for: Document; url: dom-document-visibilitystate | |||
|
|||
spec: page-lifecycle; urlPrefix: https://wicg.github.io/page-lifecycle/spec.html | |||
type: dfn; text: frozen; url: frozen | |||
type: dfn; text: owning document; url: dedicatedworkerglobalscope-owning-document |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tabatkins can we get https://wicg.github.io/page-lifecycle/spec.html added to bikeshed's database?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be done, give it an hour or so.
docs/index.bs
Outdated
@@ -1050,6 +1055,8 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe | |||
|
|||
A {{Client}} object has an associated <dfn id="dfn-service-worker-client-frame-type" for="Client">frame type</dfn>, which is one of "`auxiliary`", "`top-level`", "`nested`", and "`none`". Unless stated otherwise it is "`none`". | |||
|
|||
A {{Client}} object has an associated <dfn id="dfn-service-worker-client-frozen" for="Client">frozen state</dfn>, which if a {{WindowClient}} should reflect [=Client/service worker client=]'s [=responsible document=] [=frozen=] state, otherwise it should reflect [=Client/service worker client=]'s [=environment settings object/global object=]'s [=owning document=] [=frozen=] state. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Client
objects are snapshots of state – their values never update.
- Change this to a simple boolean.
- Add a getter.
- Update Create Client and Create Window Client to set the frozen value.
- Update Create Client and Create Window Client call sites to provide the correct frozen value (similar to what you're currently doing above).
https://w3c.github.io/ServiceWorker/#dfn-service-worker-client-focusstate might be a good reference for how this should work.
docs/index.bs
Outdated
@@ -1248,6 +1256,7 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe | |||
1. If |client|'s [=environment/execution ready flag=] is unset or |client|'s [=discarded flag=] is set, [=continue=]. | |||
1. If |client| is not a [=secure context=], [=continue=]. | |||
1. If |options|["{{ClientQueryOptions/includeUncontrolled}}"] is false, and if |client|'s [=active service worker=] is not the associated [=ServiceWorkerGlobalScope/service worker=], [=continue=]. | |||
1. If |options|["{{ClientQueryOptions/includeFrozen}}"] is false, |client| is {{Client/frozen}}, [=continue=]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|client|
is a [=service worker client=]
, not a {{Client}}
, so {{Client/frozen}}
doesn't make sense here.
At this point you need to determine if the client is actually frozen or not. Also, be wary of race conditions here. Ensure that, if includeFrozen
is false, no frozen clients are returned.
@aliams @asutherland @youennf @cdumez are you happy for client objects to reflect state defined in the page lifecycle spec? It seems to make sense to be, but I don't know how other browsers feel about page lifecycle. |
@EricRahm since you've been looking at Page Lifecycle you might wanna check this too. (Mozilla's position on Page LIfecycle is tracked at mozilla/standards-positions#87 and should be updated soonish.) |
Some more thoughts: Are we ever going to expose discarded top level window clients? If the user clicks a notification, it's desirable to focus a discarded tab rather than create a new one. If we might expose this, we should think about the API here, since a client cannot be both frozen and discarded.
Is this true? I know that discarded clients aren't considered controlled, but I'm less sure about frozen ones. What happens when they become unfrozen? It feels like we need to consider them controlled, or discard them so it doesn't matter. @dtapuska what happens to tasks queued against a frozen page? As in, if I |
I think it totally make sense to support showing discarded clients in these views. Since from the user perspective the tab is still there it just has to be reloaded. Whether the need to call out frozen from discarded windows is necessary I don't know. |
Ok, so a client object should probably have a single property ( When we get client objects, I can't decide if we should be providing frozen clients by default. Right now, Discarded clients shouldn't be returned by default. |
It sounds like discarded is different from a removed iframe or a closed tab, for which we also use discarded as terminology. How are those exposed today? (Should we have different terminology?) |
We discussed this previously in the context of bfcache. At the time we decided that clients frozen in bfcache should not be considered controlled. When they thaw and come out of bfcache they become controlled again. If a new service worker version has activated while they were frozen then the frozen client should be evicted from bfcache and reloaded. I think all that still makes sense. Can we apply the last part about eviction and reloading to clients frozen in background tabs instead of bfcache? |
Just saw https://wicg.github.io/page-lifecycle/spec.html#html-discarding. Yeah, I don't think the clients API cares about what the HTML spec calls "discarded". Whereas with page lifecycle's "discarded", there's still UI representing the tab, which will reload if the user makes it visible. |
Note, at the time we were discussing frozen bfcache clients page lifecycle spec stuff did not exist. So we couldn't express this in the spec since bfcache was just a "browser optimization". |
The only difference here is the client is getting queued stuff (eg via |
Alternatively, now that we have events that fired when unfrozen we could also fire a controllerchange event at the same place. I guess the one we don't have a good event for right now is when the SW is unregistered while frozen. In that case we would have to fire a controllerchange to null. |
Right now we only change controllers if the developer opts into it via I guess we also change controllers in case of corruption, but this is a disaster case. |
Or maybe bfcache freezing should be a different page lifecycle from other types of freezing. If a tab has a frozen document outside of bfcache we could in theory have it just remain controlled. Its hard to do that as long as we treat bfcache and the iframe type freezing identically. |
I spoke with Dave and I think I've been conflating things a bit. Its true that we mark documents going into bfcache as frozen, but that is not adequate to describe bfcache behavior as a whole. There is more work needed to fully describe bfcache. In this case there is a semantic difference between a frozen client in a background tab the user hasn't visited in a week and a frozen client in bfcache. The user can see the background tab exists and focus it. Conceptually the client exists from the user's perspective. In bfcache, though, they have navigated away from the frozen client, can't see it exists any more, and can't focus it without a history operation. I think this means our previous discussions about bfcache still hold true, but that they should not apply to all frozen clients. We need to spec the additional constraints on bfcache above and beyond the frozen state. For the purposes of this PR I recommend adding a non-normative not indicating that, while clients in bfcache are frozen, they should not be exposed to clients.matchAll(), etc. This can then be improved when bfcache is more fully spec'd. WDYT? |
I think bfcache and frozen clients are kind of different beasts here. Items that are in the bfcache shouldn't appear controlled or uncontrolled to a service worker. So the service worker should be free to update while something is in the bfcache. If the bfcache needs to evict and reload, or send a controllerchanged when it is restored from the bfcache those seem like reasonable approaches. For discarded top level windows, they shouldn't be controlled but appear as an uncontrolled client so it could be focused. For frozen top level windows, and frozen iframes I believe they should still appear to a service worker and probably still block updating the service worker because we expect these things to be temporary (an open tab in these states would block it as well, and it is no different). It presumably is useful to know what the state of the document is in. Perhaps we just add a |
It is off by default to exclude them when frozen. Since postMessage will be delayed until the page is unfrozen this is the safest option to exclude frozen pages by default.
@jakearchibald WDYT. I've adjusted the approach to return a ClientState which is an enum of "active", "frozen" with desire in the future to extend it to include "discarded". |
@wanderview I believe bfcache is already covered in service worker spec via this text: "If client is a window client and client’s responsible document is not browsingContext’s active document, then set isClientEnumerable to false and abort these steps." Since a document in bfcache won't be the active document for the browsingContext. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is looking much better. A few comments/nits:
docs/index.bs
Outdated
:: |state|, a string | ||
|
||
1. Let |state| be {{ClientState/"active"}}. | ||
1. If |client|'s [=environment settings object/global object=]'s [=owning document=] is [=frozen=], set |state| to be {{ClientState/"frozen"}}. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since the client is an environment, can you just do "client's responsible document"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Client is an enviornment not necessarily an environment settings object (which defines responsible document). But if you think that is clear I'm fine with that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah good point. I think it should be fine.
"frozen", | ||
"all" | ||
}; | ||
</pre> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should break this out into multiple enums, since a client can never have a state of "all".
I think enums can inherit, so ClientStateQuery (which adds "all") can inherit from ClientState.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't get enums to inherit.. I don't see any that do that in WPT . Either way added a separate definition
- Separate enums - Remove owner document reference - Fix links
Restating my understanding of this issue:
It seems reasonable to me to filter out the frozen clients by default. Given that this is also exposing a new concept, I think it would be desirable to either directly provide some non-normative guidance on the implications of frozen clients or link to some in the page-lifecycle not-yet-spec. In particular, I think ServiceWorker authors would be interested in the not-immediately obvious fact that frozen clients won't process the message until unfrozen. And it would be good to make clear what the expected outcome of spamming postMessage() at a frozen client is. Is it a nefarious trick they can use to get their client unfrozen? Or is it expected that such postMessage() calls will hasten the discarding of the client? |
I don't really know the answers..
Do you expect these to be covered in the Service Worker spec, I'd think these should be described maybe in the page lifecycle spec because you could postMessage or broadcastChannel to a frame with window handles or message channels so it isn't directly tied to ServiceWorkers. |
I think describing in the page lifecycle spec with appropriate (probably non-normative) links from the ServiceWorker spec makes sense. |
Given a multi-process architecture, I am not sure how we can make sure that any client, believed to be frozen or unfrozen at matchAll resolution time, or postMessage call time, will not get frozen/discarded anyway before the postMessage task reaches the client. Also, I am not sure the concept of a discarded service worker client makes total sense since it is more related with the concept of a page. Is there any use in knowing whether iframe clients or worker clients are discarded for instance? I get it that one might want to optimize the number of opened tabs. When launching a browser, tabs might be visible but pages are not loaded.
I'll try to get some feedback from Safari people. |
As discussed on w3c/ServiceWorker#1442 Unfortunately adoption of page-lifecycle is yet to be formally supported by other vendors so we need to monkey patch this in the page lifecycle spec.
As discussed on w3c/ServiceWorker#1442 Unfortunately adoption of page-lifecycle is yet to be formally supported by other vendors so we need to monkey patch this in the page lifecycle spec.
As discussed on w3c/ServiceWorker#1442 Unfortunately adoption of page-lifecycle is yet to be formally supported by other vendors so we need to monkey patch this in the page lifecycle spec.
As discussed on w3c/ServiceWorker#1442 Unfortunately adoption of page-lifecycle is yet to be formally supported by other vendors so we need to monkey patch this in the page lifecycle spec.
Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d
Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d
Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d
Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d
Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <[email protected]> Reviewed-by: Ken Buchanan <[email protected]> Reviewed-by: Matt Falkenhagen <[email protected]> Cr-Commit-Position: refs/heads/master@{#689558}
Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <[email protected]> Reviewed-by: Ken Buchanan <[email protected]> Reviewed-by: Matt Falkenhagen <[email protected]> Cr-Commit-Position: refs/heads/master@{#689558}
Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <[email protected]> Reviewed-by: Ken Buchanan <[email protected]> Reviewed-by: Matt Falkenhagen <[email protected]> Cr-Commit-Position: refs/heads/master@{#689558}
Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <[email protected]> Reviewed-by: Ken Buchanan <[email protected]> Reviewed-by: Matt Falkenhagen <[email protected]> Cr-Commit-Position: refs/heads/master@{#689558}
… out frozen windows., a=testonly Automatic update from web-platform-tests Add ability for service worker to filter out frozen windows. Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <[email protected]> Reviewed-by: Ken Buchanan <[email protected]> Reviewed-by: Matt Falkenhagen <[email protected]> Cr-Commit-Position: refs/heads/master@{#689558} -- wpt-commits: 3d052c54485970c1673500c1ba7d52182adf6f4f wpt-pr: 17554
… out frozen windows., a=testonly Automatic update from web-platform-tests Add ability for service worker to filter out frozen windows. Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <[email protected]> Reviewed-by: Ken Buchanan <[email protected]> Reviewed-by: Matt Falkenhagen <[email protected]> Cr-Commit-Position: refs/heads/master@{#689558} -- wpt-commits: 3d052c54485970c1673500c1ba7d52182adf6f4f wpt-pr: 17554
We've made the changes in the page lifecycle spec. We've chosen just to expose the lifecycleState on the client and not introduce any form of filtering to matchAll at this time. |
For TPAC:
|
Resolution:
|
For the record I just want to state I find the pushback on I acknowledge that using it has a small race condition, but the service worker group specifically accepted that design when it chose to make Client object a snapshot years ago. I believe this was a tradeoff to avoid the expensive operations required for live updated attributes, etc. I hope we don't have to re-litigate the Client object design every time we want to add a boolean flag to Client. Also, freeze state is not changed frequently. The probability of the race in checking Finally, adding Given two browser engines are in favor I would hope we could proceed with |
@wanderview are you supporting bringing it into the service worker spec, or keeping it in the page lifecycle spec? |
Oh also, @annevk suggested it would be bad to have |
It means |
From what I heard, I am not convinced Client.frozen is the best way to solve the issues we talked about. |
… out frozen windows., a=testonly Automatic update from web-platform-tests Add ability for service worker to filter out frozen windows. Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <kenrbchromium.org> Reviewed-by: Ken Buchanan <kenrbchromium.org> Reviewed-by: Matt Falkenhagen <falkenchromium.org> Cr-Commit-Position: refs/heads/master{#689558} -- wpt-commits: 3d052c54485970c1673500c1ba7d52182adf6f4f wpt-pr: 17554 UltraBlame original commit: d34dc9e00ee2c4ca00e2b78bdad1f7c51f68ba3e
… out frozen windows., a=testonly Automatic update from web-platform-tests Add ability for service worker to filter out frozen windows. Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <kenrbchromium.org> Reviewed-by: Ken Buchanan <kenrbchromium.org> Reviewed-by: Matt Falkenhagen <falkenchromium.org> Cr-Commit-Position: refs/heads/master{#689558} -- wpt-commits: 3d052c54485970c1673500c1ba7d52182adf6f4f wpt-pr: 17554 UltraBlame original commit: d34dc9e00ee2c4ca00e2b78bdad1f7c51f68ba3e
… out frozen windows., a=testonly Automatic update from web-platform-tests Add ability for service worker to filter out frozen windows. Add code to support handling of frozen clients. Frozen clients do not run their event loop, so postMessage to them just causes problems. To allow service workers to continue working with frozen windows we expose includeFrozen in the matchAll and the frozen attribute on the Client. If a service worker calls focus on a client it will unfreeze the window when it is moved to have focus. This feature is currently marked as experimental and an intent to ship will be sent. This is specified in https://wicg.github.io/page-lifecycle/ and w3c/ServiceWorker#1442 BUG=957597 Change-Id: I6abe1882e88c65dac99250db5bb7fa8d3a4b2b1d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1677065 Commit-Queue: Ken Buchanan <kenrbchromium.org> Reviewed-by: Ken Buchanan <kenrbchromium.org> Reviewed-by: Matt Falkenhagen <falkenchromium.org> Cr-Commit-Position: refs/heads/master{#689558} -- wpt-commits: 3d052c54485970c1673500c1ba7d52182adf6f4f wpt-pr: 17554 UltraBlame original commit: d34dc9e00ee2c4ca00e2b78bdad1f7c51f68ba3e
It is off by default to exclude them when frozen. Since postMessage
will be delayed until the page is unfrozen this is the safest option
to exclude frozen pages by default.
Preview | Diff