Created crbug/1472321 to track that improvement On Fri, Aug 11, 2023 at 1:28 AM Fergal Daly <fer...@google.com> wrote:
> On Fri, 11 Aug 2023 at 09:08, Brandon Heenan <bhee...@google.com> wrote: > >> That makes sense—I suppose a more general wording that would apply here >> would be "These flags prevent or revert a breaking change and will only be >> available for a limited time." Does that sound better to you / others on >> the thread? >> > > That sounds great to me, > > F > >> >> On Thu, Aug 10, 2023 at 4:33 AM Fergal Daly <fer...@google.com> wrote: >> >>> On Wed, 9 Aug 2023 at 07:23, Brandon Heenan <bhee...@google.com> wrote: >>> >>>> Still, previous breaking changes to the unload event that affected SAP >>>> were present in the /deprecated page, so the safest thing to do is to >>>> follow the same pattern here, no? >>>> >>> >>> The switch landed here <https://crrev.com/c/4736842>, It's in M117. >>> I've sent a CL <https://crrev.com/c/4764528> to make it appear on the >>> deprecated flags page. We can CP that, >>> >>> F >>> >>> It's not marked as a deprecated feature, so it's just in the regular >>> flags UI. We can CP a tiny change to move it. What gives me pause is that >>> the page says >>> >>> "These features are disabled by default. They will not be available in >>> future versions of Chrome." >>> >>> This doesn't quite match what we are doing. >>> >>> >>> >>>> >>>> On Tue, Aug 8, 2023 at 12:18 AM Fergal Daly <fer...@google.com> wrote: >>>> >>>>> On Tue, 8 Aug 2023 at 08:00, Brandon Heenan <bhee...@google.com> >>>>> wrote: >>>>> >>>>>> Flipping the permission policy default is still a breaking change >>>>>> that requires some action from the developer to keep unload events, >>>>>> right? >>>>>> If so, we still want en entry in the /deprecated page so that unmanaged >>>>>> (vendors/BYOD/outbound) users accessing on-prem deployments have some >>>>>> mitigation. Kenji and I discussed this case with SAP last week, and that >>>>>> level of mitigation seemed necessary. >>>>>> >>>>> >>>>> It's just about naming/presentation - I'm adding a switch no matter >>>>> what, just whether it shows in the deprecated tab or the main tab, >>>>> >>>>> F >>>>> >>>>> >>>>>> >>>>>> On Mon, Aug 7, 2023 at 3:35 AM Fergal Daly <fer...@google.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Sat, 8 Jul 2023 at 07:55, Brandon Heenan <bhee...@google.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Hello, I'm chiming in to provide some thoughts from the enterprise >>>>>>>> perspective. >>>>>>>> >>>>>>>> Our goal is to not block forward progress to the web, but to >>>>>>>> improve the web in an enterprise-friendly way. You shouldn't ever hear >>>>>>>> me >>>>>>>> say "you can't do X because it's scary to the enterprise team." You >>>>>>>> should >>>>>>>> instead hear "We expect X to be risky, but here are the things we know >>>>>>>> we >>>>>>>> can do to make it much less risky." >>>>>>>> >>>>>>>> In this case, yes, this is risky for enterprises. We can say this >>>>>>>> with confidence because we've seen escalations before when we've made >>>>>>>> changes to unload events (crbug.com/933153, crbug.com/953228). >>>>>>>> >>>>>>>> Kenji and Daisuke have been working with us, and my understanding >>>>>>>> of the plan is to: >>>>>>>> >>>>>>>> - >>>>>>>> >>>>>>>> Allow developers to opt-in early to the new behavior (unload >>>>>>>> event ignored) with a permission policy >>>>>>>> - >>>>>>>> >>>>>>>> Communicate the change on chromestatus and the enterprise >>>>>>>> release notes (already happening >>>>>>>> >>>>>>>> <https://support.google.com/chrome/a/answer/7679408?sjid=15316582819754370342-NA#skpUnload114>). >>>>>>>> We will provide a bug link for customers for feedback in a future >>>>>>>> release. >>>>>>>> - >>>>>>>> >>>>>>>> Reach out to enterprises and developers we expect to be affected >>>>>>>> - >>>>>>>> >>>>>>>> Introduce an enterprise policy to allow an IT admin to control >>>>>>>> unload event behavior >>>>>>>> - >>>>>>>> >>>>>>>> Introduce a flag in chrome://flags/deprecated to allow end >>>>>>>> users to control unload event behavior >>>>>>>> >>>>>>>> >>>>>>> I looked into this, I'm not sure this should be a deprecated flag. >>>>>>> It doesn't really fit the description. Some time in the future when we >>>>>>> start to fully disable unload, there should be a deprecated flag for >>>>>>> unload >>>>>>> but right now we are just flipping the permission policy default. >>>>>>> >>>>>>> Are you OK with just adding a UI entry for the existing flag that >>>>>>> controls this Permission-Policy rollout (which is named DeprecateUnload >>>>>>> but >>>>>>> I'm happy to rename it) >>>>>>> >>>>>>> F >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> - >>>>>>>> >>>>>>>> As early as M117, change the default for the policy so that >>>>>>>> unload events will be ignored. This is the breaking change, and >>>>>>>> there's >>>>>>>> likely to be friction here. The two escalations mentioned above both >>>>>>>> resulted in respins the first time they reached this point. >>>>>>>> However, this >>>>>>>> time around, IT admins will be able to fix their environment >>>>>>>> immediately >>>>>>>> with the enterprise policy, end users will be able to fix >>>>>>>> themselves with >>>>>>>> the deprecation flag, and developers will be able to fix their app >>>>>>>> with the >>>>>>>> permission policy. With those mitigations in place, the risk of >>>>>>>> requiring a >>>>>>>> respin (or Finch rollback) due to enterprise impact is dramatically >>>>>>>> reduced, and this is how we eventually successfully shipped both of >>>>>>>> those >>>>>>>> above escalations. >>>>>>>> - >>>>>>>> >>>>>>>> We expect a long transition period after that. By default, the >>>>>>>> unload event is ignored, but different stakeholders are able to >>>>>>>> revert to >>>>>>>> legacy behavior. Within enterprise, we expect the enterprise policy >>>>>>>> to be >>>>>>>> the most useful mitigation, and the deprecation flag is the backup >>>>>>>> for BYOD >>>>>>>> or unmanaged devices. For the above escalations, this migration >>>>>>>> period was >>>>>>>> over a year, and I'm expecting something similar this time. >>>>>>>> - >>>>>>>> >>>>>>>> At some point in the future, we expect to remove those >>>>>>>> mitigations and remove support for the unload event completely. We >>>>>>>> don't >>>>>>>> have any specific dates for that yet; we will be responsive to the >>>>>>>> needs of >>>>>>>> web stakeholders, enterprise and otherwise. >>>>>>>> >>>>>>>> The two escalations I mentioned above were successfully resolved >>>>>>>> and the changes to not allow popups on page unload and to not allow >>>>>>>> synchronous XHRs on page unload were shipped. Both of those changes >>>>>>>> followed essentially the same plan I just laid out above, and so I >>>>>>>> think >>>>>>>> it's reasonable to do the same thing here. >>>>>>>> >>>>>>>> >>>>>>>> On Thursday, June 29, 2023 at 7:02:06 AM UTC-7 Rick Byers wrote: >>>>>>>> >>>>>>>>> On Thu, Jun 29, 2023 at 1:47 AM Kenji Baheux <kenji...@google.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Jun 29, 2023 at 1:48 PM Fergal Daly <fer...@google.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> On Thu, 29 Jun 2023 at 01:16, Rick Byers <rby...@chromium.org> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi Fergal, >>>>>>>>>>>> Thanks for pushing through this contentious and challenging >>>>>>>>>>>> deprecation. We discussed this in the API owners meeting today and >>>>>>>>>>>> were >>>>>>>>>>>> worried that this plan seemed likely to be seriously problematic >>>>>>>>>>>> for >>>>>>>>>>>> enterprises (policy opt-out is helpful, but far from a silver >>>>>>>>>>>> bullet >>>>>>>>>>>> unfortunately). To what extent have you engaged with them and >>>>>>>>>>>> worked to >>>>>>>>>>>> follow the enterprise breaking change policy >>>>>>>>>>>> <https://www.chromium.org/developers/enterprise-changes/>? Our >>>>>>>>>>>> hunch is that at 1% or 5% we'd get escalations forcing us to >>>>>>>>>>>> abandon this >>>>>>>>>>>> plan. Of course, if the enterprise team is OK with it, we could >>>>>>>>>>>> always try >>>>>>>>>>>> anyway and see if our hunch is right. It's possible I'm >>>>>>>>>>>> over-indexing on >>>>>>>>>>>> past experiences like deprecating sync XHR in unload handlers >>>>>>>>>>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/LnqwTCiT9Gs/m/tO0IBO4PAwAJ> >>>>>>>>>>>> and that the enterprise world is different now, but I doubt it :-). >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> In addition to Daisuke's response... are you concerned about >>>>>>>>>>> enterprises that are not using fleet management and so cannot use >>>>>>>>>>> the >>>>>>>>>>> opt-out? If you think an enterprise policy will not be sufficient, a >>>>>>>>>>> mitigation for those enterprises would be for us to publish an >>>>>>>>>>> extension >>>>>>>>>>> that allows anyone to re-enable unload (for all sites or for >>>>>>>>>>> specific >>>>>>>>>>> sites) by injecting the PP:unload header. Are the escalations that >>>>>>>>>>> can't be >>>>>>>>>>> resolved by either a policy or extension? >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> One extra comment on the extension option (great for desktop). >>>>>>>>>> >>>>>>>>>> If you wonder about the mobile BYOD scenarios, where extensions >>>>>>>>>> don't exist, then we are a bit lucky here because unload is already >>>>>>>>>> unreliable on mobile. So, it seems extremely unlikely that we'd see >>>>>>>>>> mobile >>>>>>>>>> enterprise/edu products that rely on unload on mobile. >>>>>>>>>> >>>>>>>>>> *Rick:* are there specific scenarios / environments that we >>>>>>>>>> haven't covered? >>>>>>>>>> >>>>>>>>> >>>>>>>>> I'm glad to see the conversation with the enterprise team is >>>>>>>>> further along than I had realized. Having skip unload events in the >>>>>>>>> release >>>>>>>>> notes >>>>>>>>> <https://support.google.com/chrome/a/answer/7679408?sjid=5091298988245423514-NA#skpUnloadEv113> >>>>>>>>> since M113 is a significant mitigation, sorry I wasn't caught up on >>>>>>>>> the >>>>>>>>> latest. And yes some sort of user opt-out for BYOD (extension or >>>>>>>>> chrome::/flags, etc.) seems like an essential mitigation. I defer to >>>>>>>>> the >>>>>>>>> enterprise team's judgement here, so if they're OK with proceeding >>>>>>>>> then we >>>>>>>>> shouldn't let my enterprise fears block us. I expect we do need some >>>>>>>>> easy >>>>>>>>> way for an application to signal that it really does need unload >>>>>>>>> handlers. >>>>>>>>> Setting a permission policy is likely orders of magnitude easier than >>>>>>>>> converting essential unload handlers to pagehide and ensuring they're >>>>>>>>> safe >>>>>>>>> to invoke multiple times. >>>>>>>>> >>>>>>>>> The other major constituency potentially impacted are ad networks. >>>>>>>>> Perhaps the next step should be a 1% finch trial where we can measure >>>>>>>>> various ad-related metrics? I'd defer to the judgment of the Chrome >>>>>>>>> Ads >>>>>>>>> team (@Josh Karlin). >>>>>>>>> >>>>>>>>> Anyway, I'm personally OK with 1% stable experiments (and whatever >>>>>>>>> else on dev/beta). But I think we should discussing learnings from >>>>>>>>> such 1% >>>>>>>>> experiments here publicly before approving a plan to go beyond that. >>>>>>>>> >>>>>>>>> In general Yoav and I disagree with the WebKit and Gecko feedback >>>>>>>>>>>> here and suspect that your original PP default-on proposal is far >>>>>>>>>>>> more >>>>>>>>>>>> likely to be a successful deprecation path for Chrome (and, should >>>>>>>>>>>> they >>>>>>>>>>>> choose to follow, Edge). I can understand why Firefox and WebKit >>>>>>>>>>>> don't have >>>>>>>>>>>> the same constraints around enterprises and so would choose >>>>>>>>>>>> differently for >>>>>>>>>>>> themselves. Yoav and I are happy to help in the standards >>>>>>>>>>>> discussions. I'm >>>>>>>>>>>> about to go on vacation for 2 weeks but Yoav said he'd follow up >>>>>>>>>>>> with you >>>>>>>>>>>> privately to brainstorm next steps. Sound good? >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> I would love to get moving on PP:unload ASAP no matter what. >>>>>>>>>>> It's been through OT and is sitting behind a flag with some sites >>>>>>>>>>> eager to >>>>>>>>>>> use it. I'm happy to send an I2S for that while we discuss the >>>>>>>>>>> harder >>>>>>>>>>> problem. We hope that getting that out there can clear out a large >>>>>>>>>>> chunk of >>>>>>>>>>> the 1st- and 3rd-party unload usage, >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> +1, I'd suggest doing that regardless. >>>>>>>>>> >>>>>>>>>> There are a few large sites that have done some legwork on >>>>>>>>>> unload handlers (theirs and third party partners), and are >>>>>>>>>> interested in >>>>>>>>>> pushing the remaining unload handlers out with PP:unload. Having >>>>>>>>>> allies in >>>>>>>>>> the ecosystem (i.e. extra incentives to migrate), will be helpful >>>>>>>>>> going >>>>>>>>>> forward :) >>>>>>>>>> >>>>>>>>> >>>>>>>>> Yep I think this was Yoav and my primary concern. For chrome to >>>>>>>>> have a pragmatic and reasonable deprecation path given our user base, >>>>>>>>> we >>>>>>>>> really need sites adopting such an API. If we're not going to >>>>>>>>> actually ship >>>>>>>>> such an API then I think we'd have to give up on deprecating unload. >>>>>>>>> I'd >>>>>>>>> support shipping this API despite the lack of support from WebKit and >>>>>>>>> Gecko. >>>>>>>>> >>>>>>>>> >>>>>>>>>> F >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Rick >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Jun 28, 2023 at 4:07 AM Fergal Daly <fer...@google.com> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi API-owners, >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> I am now asking for permission to go ahead with the following >>>>>>>>>>>>> concrete unload deprecation plan below. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> Tools and outreach >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> M115 Enable `Permission-Policy: unload` (PP:unload) >>>>>>>>>>>>> with the default being enabled. This allows sites to opt-in >>>>>>>>>>>>> to unload >>>>>>>>>>>>> deprecation. >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> Outreach to 1st/3rd parties, to migrate away from using >>>>>>>>>>>>> unload and to enforce this with PP:unload. >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> Deprecation >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> M117 change the default for PP:unload so that unload >>>>>>>>>>>>> handlers are skipped by default for 1% of page loads >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> M118 increase to 5% of page loads >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> M119 (last of 2023) increase to 10% of page loads >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> Evaluate progress on reduction of the use of unload >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> M120-128 increase +10% gradually to 100% of page loads >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Enterprise policy would allow opt-out entirely. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Obviously, the deprecation timeline is contingent on unload >>>>>>>>>>>>> usage coming down in response to the earlier steps. >>>>>>>>>>>>> >>>>>>>>>>>>> We expect that 10% of page loads will provide a noticeable >>>>>>>>>>>>> signal to sites that use unload. Also, if we were to just follow >>>>>>>>>>>>> the >>>>>>>>>>>>> current spec and not run unload when we can BFCache (as happens on >>>>>>>>>>>>> Clank/Firefox mobile and all WebKit) we expect that we would skip >>>>>>>>>>>>> 30-40% of >>>>>>>>>>>>> unload handlers when the main frame navigates. >>>>>>>>>>>>> >>>>>>>>>>>>> Decisions: >>>>>>>>>>>>> >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> Timeline >>>>>>>>>>>>> - >>>>>>>>>>>>> >>>>>>>>>>>>> All navigations vs main-frame navigations only >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Standardising >>>>>>>>>>>>> >>>>>>>>>>>>> We have some new data and have had some further discussions >>>>>>>>>>>>> with browser vendors. There's no consensus. TL;DR WebKit are >>>>>>>>>>>>> opposed to any >>>>>>>>>>>>> Permissions-Policy but support removing unload eventually. >>>>>>>>>>>>> Mozilla are >>>>>>>>>>>>> still discussing. >>>>>>>>>>>>> >>>>>>>>>>>>> Both Mozilla >>>>>>>>>>>>> <https://github.com/mozilla/standards-positions/issues/691> >>>>>>>>>>>>> and WebKit >>>>>>>>>>>>> <https://github.com/WebKit/standards-positions/issues/127> >>>>>>>>>>>>> were opposed to standardising `Permissions-Policy: unload` >>>>>>>>>>>>> (defaulting to >>>>>>>>>>>>> on) because they worried that a containing frame might >>>>>>>>>>>>> selectively disable >>>>>>>>>>>>> unload handlers in a child frame for malicious purposes (no >>>>>>>>>>>>> specific cases >>>>>>>>>>>>> were discussed). >>>>>>>>>>>>> >>>>>>>>>>>>> So we flipped to the idea of having PP:unload with the default >>>>>>>>>>>>> being disabled. We cannot suddenly do that. We need to roll it out >>>>>>>>>>>>> gradually. WebKit folks are opposed to this and have suggested >>>>>>>>>>>>> <https://github.com/WebKit/standards-positions/issues/200#issuecomment-1596385073> >>>>>>>>>>>>> we do a reverse origin trial instead. If our plan works out, >>>>>>>>>>>>> eventually we >>>>>>>>>>>>> would ROT as the final nail but ROT starting now has downsides >>>>>>>>>>>>> for users >>>>>>>>>>>>> and sites and no upside for the implementer. >>>>>>>>>>>>> >>>>>>>>>>>>> Mozilla has so far not been negative >>>>>>>>>>>>> <https://github.com/mozilla/standards-positions/issues/691> >>>>>>>>>>>>> on the Permissions-Policy off-by-default approach but they are >>>>>>>>>>>>> still >>>>>>>>>>>>> discussing. They are concerned that disabling unloads when >>>>>>>>>>>>> subframes are >>>>>>>>>>>>> navigating could be a problem. We found that about 1/4 of subframe >>>>>>>>>>>>> navigations involve an `unload` handler (most seem to involve >>>>>>>>>>>>> handlers in >>>>>>>>>>>>> cross-site and same-site site frames). We don't have examples of >>>>>>>>>>>>> sites that >>>>>>>>>>>>> rely on `unload` handlers in this way, although they probably do >>>>>>>>>>>>> exist. >>>>>>>>>>>>> Migrating to `pageshow` or using PP:unload for these sites should >>>>>>>>>>>>> be >>>>>>>>>>>>> trivial. >>>>>>>>>>>>> >>>>>>>>>>>>> We have the option to say that PP:unload only applies to main >>>>>>>>>>>>> frame navigations. This would mean these sites would be completely >>>>>>>>>>>>> unaffected however that has some downsides. It is harder to >>>>>>>>>>>>> explain and >>>>>>>>>>>>> does not end with full removal of `unload`. We would prefer to >>>>>>>>>>>>> have this >>>>>>>>>>>>> apply to all navigations unless we find a good reason not to. If >>>>>>>>>>>>> we were to >>>>>>>>>>>>> change part-way, there would be no breakage. We hope that once we >>>>>>>>>>>>> drive >>>>>>>>>>>>> down usage in 3rd-part iframes with PP:unload that the number of >>>>>>>>>>>>> unload >>>>>>>>>>>>> handlers running in subframe navigations decreases significantly. >>>>>>>>>>>>> >>>>>>>>>>>>> Finally there was some discussion >>>>>>>>>>>>> <https://github.com/w3c/webappsec-permissions-policy/issues/513#issuecomment-1564361739> >>>>>>>>>>>>> about how Permissions-Policy off-by-default should work. Our >>>>>>>>>>>>> current >>>>>>>>>>>>> version requires every page to set the header and every parent to >>>>>>>>>>>>> set the >>>>>>>>>>>>> iframe `allow` attribute. This is maximally conservative. If at >>>>>>>>>>>>> some point >>>>>>>>>>>>> later on there is agreement to standardise on something less >>>>>>>>>>>>> conservative, >>>>>>>>>>>>> it will not break pages that have already re-enabled `unload`. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Overall it seems hard to standardise in advance but if we >>>>>>>>>>>>> succeed in driving down `unload` usage, other browsers are >>>>>>>>>>>>> on-board with >>>>>>>>>>>>> removing unload. The worst case scenario would be where we >>>>>>>>>>>>> implement >>>>>>>>>>>>> PP:unload (which the others do not agree with) but make no >>>>>>>>>>>>> noticeable >>>>>>>>>>>>> progress on `unload` usage. If that happens we can just go with >>>>>>>>>>>>> the >>>>>>>>>>>>> currently specced behaviour (don't run `unload` if BFCaching is >>>>>>>>>>>>> possible) >>>>>>>>>>>>> and maybe revert the PP:unload, >>>>>>>>>>>>> >>>>>>>>>>>>> F >>>>>>>>>>>>> >>>>>>>>>>>>> On Tue, 9 May 2023 at 16:01, Fergal Daly <fer...@google.com> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> On Mon, 8 May 2023 at 17:51, Rick Byers <rby...@chromium.org> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Fergal, >>>>>>>>>>>>>>> It's exciting to see this moving forward! Just to clarify, >>>>>>>>>>>>>>> this is effectively an I2S for the unload permissions-policy, >>>>>>>>>>>>>>> is that >>>>>>>>>>>>>>> right? Or are you also requesting permission to stop firing >>>>>>>>>>>>>>> unload events >>>>>>>>>>>>>>> now too? The latter is going to require some significant >>>>>>>>>>>>>>> compat analysis, >>>>>>>>>>>>>>> but could be greatly informed by the experience of having some >>>>>>>>>>>>>>> top-level >>>>>>>>>>>>>>> sites opt-out of unload for their frame tree. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>> >>>>>>>>>>>>>> We're not requesting permission to stop firing at this point. >>>>>>>>>>>>>> It is the far-away end-point. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Any plan to trigger a deprecation warning / report for the >>>>>>>>>>>>>>> installation of unload handlers? It might be tricky to find a >>>>>>>>>>>>>>> good balance >>>>>>>>>>>>>>> of useful warnings without being too spammy. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Permission policy will do this as is with a console warning >>>>>>>>>>>>>> and Reporting-API if you attempt to install a handler that is >>>>>>>>>>>>>> disallowed by >>>>>>>>>>>>>> policy. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> A couple more questions / comments inline: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Mon, May 8, 2023 at 7:43 AM Fergal Daly < >>>>>>>>>>>>>>> fer...@chromium.org> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Contact emails >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> fer...@chromium.org, kenji...@chromium.org >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Explainer >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> https://github.com/fergald/docs/blob/master/explainers/permissions-policy-deprecate-unload.md >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Specification >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> https://github.com/whatwg/html/pull/7915 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> This is still marked as draft. Can you get this ready for >>>>>>>>>>>>>>> review? If it's blocked only on having a 2nd implementor show >>>>>>>>>>>>>>> support, then >>>>>>>>>>>>>>> I'd be fine shipping based on a PR. But we should at least do >>>>>>>>>>>>>>> what we can >>>>>>>>>>>>>>> to solicit feedback on the spec change prior to shipping. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yes. There's nothing in the spec change that isn't in the >>>>>>>>>>>>>> requests for positions but since neither of those are supportive >>>>>>>>>>>>>> yet, I >>>>>>>>>>>>>> have not asked for review of the PR. I'm hopeful that once we >>>>>>>>>>>>>> have data on >>>>>>>>>>>>>> use on unload in subframe navigations as discussed here >>>>>>>>>>>>>> <https://github.com/mozilla/standards-positions/issues/691#issuecomment-1484997320> >>>>>>>>>>>>>> that >>>>>>>>>>>>>> Mozilla will be supportive. Those metrics are in 113 but based >>>>>>>>>>>>>> on the data >>>>>>>>>>>>>> from beta, we need to change how we record them. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Summary >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> A Permission-Policy for creating unload event listeners >>>>>>>>>>>>>>>> will be added. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Initially, the default policy will be set to allow. From >>>>>>>>>>>>>>>> there, Chrome will gradually migrate the default policy to >>>>>>>>>>>>>>>> deny (i.e. increasingly disallow the creation of unload >>>>>>>>>>>>>>>> event listeners, eventually reaching a state where deny >>>>>>>>>>>>>>>> fully becomes the default policy). The ultimate goal is to >>>>>>>>>>>>>>>> remove support for unload event. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Blink component >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Blink>PermissionsAPI >>>>>>>>>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EPermissionsAPI> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Motivation >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> The unload event is extremely unreliable. It is ignored in >>>>>>>>>>>>>>>> most cases by all mobile browsers except Firefox on Android. >>>>>>>>>>>>>>>> Furthermore, >>>>>>>>>>>>>>>> in Safari, the unload event is ignored on both desktop & >>>>>>>>>>>>>>>> mobile platforms. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> In the current state, unload is a major BFCache blocker >>>>>>>>>>>>>>>> (~18 percentage points reduction of hit rate for Chrome). >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> The change will unlock a large fraction of that hit-rate >>>>>>>>>>>>>>>> while providing an opt-out for those who need more time to >>>>>>>>>>>>>>>> migrate. It also >>>>>>>>>>>>>>>> sends a clear signal that unload should not be used in new >>>>>>>>>>>>>>>> development. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Sidenote: the spec was changed to say that unload should >>>>>>>>>>>>>>>> only run if the page cannot enter BFCache, which reflects >>>>>>>>>>>>>>>> Safari’s >>>>>>>>>>>>>>>> behavior, However neither Chrome nor Mozilla have implemented >>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>> behavior. In Chrome's case, we believe that this would >>>>>>>>>>>>>>>> suddenly break >>>>>>>>>>>>>>>> various sites and would make it hard for developers to know >>>>>>>>>>>>>>>> if/when unload >>>>>>>>>>>>>>>> may run. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Initial public proposal >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> None >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> TAG review >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> https://github.com/w3ctag/design-reviews/issues/738 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> TAG review status >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Pending >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Risks >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Interoperability and Compatibility >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> If no other browsers implement this, there is a risk that >>>>>>>>>>>>>>>> devs continue to use unload widely and pages malfunction on >>>>>>>>>>>>>>>> chrome. However >>>>>>>>>>>>>>>> given that alternatives to unload exist it seems entirely >>>>>>>>>>>>>>>> possible for >>>>>>>>>>>>>>>> sites that are actively maintained to move off unload. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Gecko: ( >>>>>>>>>>>>>>>> https://github.com/mozilla/standards-positions/issues/691#issuecomment-1484997320) >>>>>>>>>>>>>>>> It's possible that pages are depending on `unload` handlers in >>>>>>>>>>>>>>>> subframes >>>>>>>>>>>>>>>> for functionality even without any main frame navigation. We >>>>>>>>>>>>>>>> should try to >>>>>>>>>>>>>>>> understand how common this is before breaking it. It should be >>>>>>>>>>>>>>>> possible to >>>>>>>>>>>>>>>> measure how often subframe unloads fire when the mainframe is >>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>> navigating. This will give us an upper bound on the size of >>>>>>>>>>>>>>>> the problem, - >>>>>>>>>>>>>>>> Chrome: we have landed code to measure the occurrence of >>>>>>>>>>>>>>>> unload in >>>>>>>>>>>>>>>> different scenarios. We will report back the findings. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> WebKit: >>>>>>>>>>>>>>>> https://github.com/WebKit/standards-positions/issues/127 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> From a quick skim, it sounds like WebKit is already happy >>>>>>>>>>>>>>> with their tradeoff of not firing unload and doesn't see a need >>>>>>>>>>>>>>> for an API >>>>>>>>>>>>>>> that reduces unload further, is that about right? WebKit has >>>>>>>>>>>>>>> mostly shipped >>>>>>>>>>>>>>> heuristics here without trying to spec them first, right? In >>>>>>>>>>>>>>> general I'm >>>>>>>>>>>>>>> not too concerned >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yes, there's no great upside for them. I believe the >>>>>>>>>>>>>> situation as specced where unload is unpredictable and likely >>>>>>>>>>>>>> biased is bad >>>>>>>>>>>>>> for devs and is probably skewing data collected via WebKit (and >>>>>>>>>>>>>> Chrome/Mozilla mobile) but nobody is complaining. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I believe there was support expressed offline for the >>>>>>>>>>>>>> prospect of killing off unload. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Web developers: Positive ( >>>>>>>>>>>>>>>> https://groups.google.com/a/chromium.org/g/bfcache-dev/c/zTIMx7u4uxo/m/-M4IS6LDBgAJ) >>>>>>>>>>>>>>>> The web communities we reached out had positive reactions to >>>>>>>>>>>>>>>> our proposal >>>>>>>>>>>>>>>> and we have not heard about any concrete blockers. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 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? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On WebView, we will introduce the Permissions-Policy but >>>>>>>>>>>>>>>> not move the default to "deny". BFCache does not work on >>>>>>>>>>>>>>>> WebView, so the >>>>>>>>>>>>>>>> benefit is lower. Meanwhile the risk seems higher as we have >>>>>>>>>>>>>>>> far less >>>>>>>>>>>>>>>> visibility into the HTML being run in WebViews. A roll-out to >>>>>>>>>>>>>>>> WebView >>>>>>>>>>>>>>>> should be done independently and in consultation with the >>>>>>>>>>>>>>>> WebView team. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Sounds like the right strategy to me, thanks! >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Debuggability >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> None >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>>>>>>>>>> ? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Yes >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Flag name >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> None >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Please put the new policy behind a RuntimeEnabledFeature >>>>>>>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/RuntimeEnabledFeatures.md>. >>>>>>>>>>>>>>> It's effectively a new API so is required >>>>>>>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/flag_guarding_guidelines.md#When-is-a-flag-required> >>>>>>>>>>>>>>> to have a finch killswitch. It sounds to me like it should be >>>>>>>>>>>>>>> unlikely that >>>>>>>>>>>>>>> simply adding the new policy could break things, but maybe some >>>>>>>>>>>>>>> scenario is >>>>>>>>>>>>>>> possible where we decide breakage in 3p iframes is bad enough >>>>>>>>>>>>>>> to warrant an >>>>>>>>>>>>>>> emergency fix? >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yes, there will be a flag, maybe more than one. The >>>>>>>>>>>>>> implementation details of rolling this out gradually have not >>>>>>>>>>>>>> been worked >>>>>>>>>>>>>> out. See below. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Requires code in //chrome? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> False >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Estimated milestones >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> M115 for availability of Permissions-Policy >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> M115 is the earliest we would start to disable unload, >>>>>>>>>>>>>>>> however >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Is this a typo? Or are you considering disabling the event >>>>>>>>>>>>>>> in the same release we first make the permissions policy >>>>>>>>>>>>>>> available? >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> The plan is to make the PP available with a default of >>>>>>>>>>>>>> enabled and then gradually flip the default to disabled. The >>>>>>>>>>>>>> details are >>>>>>>>>>>>>> here >>>>>>>>>>>>>> <https://github.com/fergald/docs/blob/master/explainers/permissions-policy-deprecate-unload.md#logistics-of-deprecation>. >>>>>>>>>>>>>> It's not particularly nice. We have the option to just stop 100% >>>>>>>>>>>>>> but that >>>>>>>>>>>>>> seems fairly disruptive, >>>>>>>>>>>>>> >>>>>>>>>>>>>> F >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> https://chromestatus.com/feature/5579556305502208 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> 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+...@chromium.org. >>>>>>>>>>>>>>>> To view this discussion on the web visit >>>>>>>>>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLm7CR6EeL2KmBFyFpYT%3DNPXmTg4roLKV%3D7dRcCE%2BOoGwg%40mail.gmail.com >>>>>>>>>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAAozHLm7CR6EeL2KmBFyFpYT%3DNPXmTg4roLKV%3D7dRcCE%2BOoGwg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>>>>>>>>>>>> . >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Kenji BAHEUX (my how-to <http://balance/kenjibaheux>) >>>>>>>>>> Product Manager - Chrome >>>>>>>>>> Google Japan >>>>>>>>>> >>>>>>>>> -- 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/CAFKd2qWpnY6gUATjQAVUks0WfGnpcyMtrzAGB5hT-QULHrem2g%40mail.gmail.com.