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?

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/CAFKd2qUZra3uuUEtPz5OC%2BogzuFcJ4qPMt7iFmqGJGMj4XrqJg%40mail.gmail.com.

Reply via email to