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/CAAozHL%3DCyCeG%3D00SZEFr9%2BL3t9Mw5%3DKUp17cRLHkY%2BU-tOFsFg%40mail.gmail.com.

Reply via email to