On Wed, Aug 9, 2023 at 6:44 PM Fergal Daly <fer...@google.com> wrote:

> On Wed, 9 Aug 2023 at 12:01, Domenic Denicola <dome...@chromium.org>
> wrote:
>
>> I think specifying these reasons is important. As noted in the linked
>> issue <https://github.com/WICG/bfcache-not-restored-reason/issues/2>, I
>> think the end goal should be:
>>
>>    - Every reason that a browser ever emits, is found in a specification
>>    somewhere. (It doesn't have to be the HTML spec, e.g. the speech synthesis
>>    reason could live in the speech synthesis spec.)
>>
>> There's no intrinsic reason for speech synthesis to block BFCache. It
> just happens that Chrome blocked it. There's no spec reason for unload to
> block BFCache, in fact the spec says that it doesn't.
>
> I think it's good for us to have agreed names, e.g.
> "unload-event-handler". Should we put into various specs "if an implementer
> chooses to block BFCache because X has been used, they should use the
> reason `Y`"?
>
>
>>    - If browsers prevent bfcache restoration for a reason not found in a
>>    spec, it is always translated to a standardized reason such as "unknown".
>>
>> This avoids the usual interop problems with vendor-specific extensions to
>> the web platform, such as: no clear specification for what strings to use;
>> no clear point at which the reason is added to the document's reasons list;
>> etc. Although you claim these reasons are idiosyncratic to Chrome, that
>> won't necessarily be the case; e.g. Firefox has unload handler as a reason,
>> and I suspect most user agents have memory limitations or similar.
>>
>
> Chrome has over 100 reasons. I'd say at least 50 of them are actionable
> such that you wouldn't want to lump them into an opaque "unknown" category.
>
> I do not relish the idea of updating 50 places in spec to insert a name to
> be used if you decide to block.
>
> How about maintaining a central list of reasons with low friction to add
> new reasons even if they are browser-specific? The cases where you *must* 
> block
> should still be inline in spec (and also on the list),
>

That sounds great to me. We should probably make this separation clear in
the spec, e.g. the "must" list will have cross-references you can follow,
whereas the "may" list ends up only being cross-referenced from some
generic location like
https://html.spec.whatwg.org/multipage/browsing-the-web.html#note-bfcache:~:text=User%20agents%20may,keeping%20it%20cached.
.


>
> F
>
>
>>
>> We could have a discussion about allowing vendor-specific information in
>> the API *in addition* to the standardized reasons. For example, we could
>> have one of the standardized reasons be "user-agent-specific", and then add
>> an additional field userAgentSpecificInfo. But I would like to see
>> significantly more discussion with other vendors before going that route.
>>
>> On Tue, Aug 8, 2023 at 9:56 PM Yuzu Saijo <yu...@google.com> wrote:
>>
>>> +bfcache-dev
>>>
>>> I was talking to Fergal today and discussed this, and I am not sure
>>> about adding browser-specific reasons to the spec.
>>> For example, some reasons like "speech synthesis API is used" / "unload
>>> handler" are completely specific to Chrome, and it doesn't really make
>>> sense to add them to the spec, even with the namespace (x-speechsysthesis /
>>> x-unloadhandler).
>>> Maybe we can document the reasons somewhere in a shared list but not in
>>> the spec?
>>>
>>> I think the API would be more useful if it can give as much information
>>> as possible, not limited to the specced reasons.
>>> Please let me know what you think!
>>>
>>> Yuzu
>>>
>>>
>>> On Thursday, August 3, 2023 at 12:39:17 PM UTC+9 Yuzu Saijo wrote:
>>>
>>>> Sorry for the delayed response.
>>>>
>>>> *> there doesn't appear to be any NotRestoredReasons interface defined
>>>> in Chromium?*
>>>> Let me address this implementation and delay the shipping until the
>>>> chromium implementation matches the proposed spec. Thanks for pointing it
>>>> out!
>>>> Same for WPT. I will add tests for all the standardized reasons.
>>>>
>>>> *> Can you confirm that you're only shipping the specified four?*
>>>> We do have ~50 not restored reasons, and in theory we will be able to
>>>> remove most of them except for the standardized four reasons.
>>>> However, in reality it will take time for us to support all the reasons
>>>> and we need to keep blocking on them for a while.
>>>> In the meantime, our plan was to expose the non-standardized reasons
>>>> too, but in a way that's distinguishable from standardized reasons as
>>>> you suggested here
>>>> <https://github.com/WICG/bfcache-not-restored-reason/issues/2>.
>>>> I realized that we need to add browser specific reasons to the spec as
>>>> well. Let me add that and send a review request again.
>>>>
>>>> Thanks!
>>>> Yuzu
>>>> On Thursday, July 13, 2023 at 12:07:05 PM UTC+9 dom...@chromium.org
>>>> wrote:
>>>>
>>>>> Also, checking the tests, it seems like the currently-implemented
>>>>> reasons don't match the spec. E.g. this test
>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js>
>>>>>  requires
>>>>> the reason to be "WebSocket", but the specification says "websocket"
>>>>> (lowercase). I couldn't find tests for the other three reasons...
>>>>>
>>>>> On Thu, Jul 13, 2023 at 12:04 PM Domenic Denicola <dom...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>> I have some questions about how well the implementation here matches
>>>>>> up with the spec.
>>>>>>
>>>>>> First, there doesn't appear to be any NotRestoredReasons interface
>>>>>> defined in Chromium? The relevant attribute on
>>>>>> PerformanceNavigationTiming returns object?
>>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/timing/performance_navigation_timing.idl;l=33?q=NotRestoredReasons%20file:%5C.idl&ss=chromium>.
>>>>>> That seems like a problematic mismatch...
>>>>>>
>>>>>> Second, I can't find exactly where the list of script-exposed not
>>>>>> restored reasons are. But, I'll note that Chromium seems to have ~50
>>>>>> such reasons
>>>>>> <https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:content/browser/renderer_host/back_forward_cache_metrics.h;drc=6754d1409bf5099314eea7e87e896622ade9bc0f;l=49>,
>>>>>> whereas you've only specified 4 (fetch, navigation-failure, 
>>>>>> parser-aborted,
>>>>>> websocket). Can you confirm that you're only shipping the specified four?
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>> On Thu, Jul 13, 2023 at 12:11 AM Yoav Weiss <yoav...@chromium.org>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Jul 6, 2023 at 7:28 AM 'Yuzu Saijo' via blink-dev <
>>>>>>> blin...@chromium.org> wrote:
>>>>>>>
>>>>>>>> Contact emails
>>>>>>>>
>>>>>>>> yu...@google.com, yu...@chromium.org, fer...@chromium.org
>>>>>>>>
>>>>>>>> Explainer
>>>>>>>>
>>>>>>>>
>>>>>>>> https://github.com/WICG/bfcache-not-restored-reason/blob/main/NotRestoredReason.md
>>>>>>>>
>>>>>>>> Specification
>>>>>>>>
>>>>>>>> https://github.com/whatwg/html/pull/9360
>>>>>>>>
>>>>>>>> Design docs
>>>>>>>>
>>>>>>>>
>>>>>>>> https://github.com/WICG/bfcache-not-restored-reason/blob/main/NotRestoredReason.md
>>>>>>>>
>>>>>>>> Summary
>>>>>>>>
>>>>>>>> NotRestoredReason API will report the list of reasons why a page is
>>>>>>>> not served from BFcache in a frame tree structure, via
>>>>>>>> PerformanceNavigationTiming API.
>>>>>>>>
>>>>>>>>
>>>>>>>> Blink component
>>>>>>>>
>>>>>>>> UI>Browser>Navigation>BFCache
>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:UI%3EBrowser%3ENavigation%3EBFCache>
>>>>>>>>
>>>>>>>> TAG review
>>>>>>>>
>>>>>>>> https://github.com/w3ctag/design-reviews/issues/739
>>>>>>>>
>>>>>>>> TAG review status
>>>>>>>>
>>>>>>>> Issues addressed
>>>>>>>>
>>>>>>>> Risks
>>>>>>>>
>>>>>>>> Interoperability and Compatibility
>>>>>>>>
>>>>>>>> Gecko: Defer (
>>>>>>>> https://github.com/mozilla/standards-positions/issues/766) Once
>>>>>>>> issues (standardized reasons & unsalvageable documents), they would 
>>>>>>>> switch
>>>>>>>> to positive.
>>>>>>>>
>>>>>>>
>>>>>>> It seems like the "standardized reasons" part is addressed in your
>>>>>>> PR. Is the same true for the second point?
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> WebKit: No signal (
>>>>>>>> https://github.com/WebKit/standards-positions/issues/154)
>>>>>>>>
>>>>>>>> Web developers: Positive (
>>>>>>>> https://github.com/w3c/navigation-timing/issues/171#issuecomment-1062672989
>>>>>>>> )
>>>>>>>>
>>>>>>>> Other signals: Positive from Origin Trial users:
>>>>>>>>
>>>>>>>> How likely are you to keep using this feature?
>>>>>>>>
>>>>>>>> 92% answered likely, 8% (1 vote) is unsure
>>>>>>>>
>>>>>>>> Security
>>>>>>>>
>>>>>>>> We do not report detailed information about cross-origin iframes.
>>>>>>>> See Security and Privacy section
>>>>>>>> <https://github.com/WICG/bfcache-not-restored-reason/blob/main/NotRestoredReason.md#security-and-privacy>
>>>>>>>> in the explainer.
>>>>>>>>
>>>>>>>>
>>>>>>>> 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?
>>>>>>>>
>>>>>>>> No.
>>>>>>>>
>>>>>>>>
>>>>>>>> Debuggability
>>>>>>>>
>>>>>>>> In DevTools console, try:
>>>>>>>>
>>>>>>>> performance.getEntriesByType('navigation')[0].notRestoredReasons;
>>>>>>>>
>>>>>>>>
>>>>>>>> Will this feature be supported on all six Blink platforms (Windows,
>>>>>>>> Mac, Linux, Chrome OS, Android, and Android WebView)?
>>>>>>>>
>>>>>>>> Yes.
>>>>>>>>
>>>>>>>> NotRestoredReasons API is available on all platforms including
>>>>>>>> WebView, but back/forward cache is not enabled on WebView. So on 
>>>>>>>> WebView,
>>>>>>>> NotRestoredReasons API should always say that the page is blocked from
>>>>>>>> being restored from bfcache with the reason being something like “not
>>>>>>>> supported”.
>>>>>>>>
>>>>>>>> (Currently it reports null due to a bug
>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/detail?id=1459533>)
>>>>>>>>
>>>>>>>> Is this feature fully tested by web-platform-tests
>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>>>>>> ?
>>>>>>>>
>>>>>>>> Yes.
>>>>>>>> https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/performance-timeline/not-restored-reasons/
>>>>>>>>
>>>>>>>> DevTrial instructions
>>>>>>>>
>>>>>>>>
>>>>>>>> https://github.com/rubberyuzu/bfcache-not-retored-reason/blob/main/HowToTest.md
>>>>>>>>
>>>>>>>> Flag nameblink RunTimeEnabledFeature:
>>>>>>>> BackForwardCacheSendNotRestoredReasons
>>>>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/platform/runtime_enabled_features.json5;l=423?q=BackForwardCacheSendNotRestoredReasons%20-f:out&ss=chromium>
>>>>>>>> Requires code in //chrome?
>>>>>>>>
>>>>>>>> False
>>>>>>>>
>>>>>>>> Tracking bug
>>>>>>>>
>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1326344
>>>>>>>>
>>>>>>>> Launch bug
>>>>>>>>
>>>>>>>> https://launch.corp.google.com/launch/4200848
>>>>>>>>
>>>>>>>> Estimated milestones
>>>>>>>>
>>>>>>>> Shipping on desktop
>>>>>>>>
>>>>>>>> 116
>>>>>>>>
>>>>>>>> OriginTrial desktop last
>>>>>>>>
>>>>>>>> 114
>>>>>>>>
>>>>>>>> OriginTrial desktop first
>>>>>>>>
>>>>>>>> 109
>>>>>>>>
>>>>>>>> DevTrial on desktop
>>>>>>>>
>>>>>>>> 108
>>>>>>>>
>>>>>>>> Shipping on Android
>>>>>>>>
>>>>>>>> 116
>>>>>>>>
>>>>>>>> OriginTrial Android last
>>>>>>>>
>>>>>>>> 114
>>>>>>>>
>>>>>>>> OriginTrial Android first
>>>>>>>>
>>>>>>>> 109
>>>>>>>>
>>>>>>>> DevTrial on Android
>>>>>>>>
>>>>>>>> 108
>>>>>>>>
>>>>>>>>
>>>>>>>> Shipping on WebView
>>>>>>>>
>>>>>>>> 116
>>>>>>>>
>>>>>>>> OriginTrial WebView last
>>>>>>>>
>>>>>>>> 114
>>>>>>>>
>>>>>>>> OriginTrial WebView first
>>>>>>>>
>>>>>>>> 109
>>>>>>>>
>>>>>>>> DevTrial on WebView
>>>>>>>>
>>>>>>>> 108
>>>>>>>>
>>>>>>>>
>>>>>>>> Anticipated spec changes
>>>>>>>>
>>>>>>>> Open questions about a feature may be a source of future web compat
>>>>>>>> or interop issues. Please list open issues.
>>>>>>>>
>>>>>>>> https://github.com/whatwg/html/pull/9360
>>>>>>>>
>>>>>>>>
>>>>>>>> Link to entry on the Chrome Platform Status
>>>>>>>>
>>>>>>>> https://chromestatus.com/feature/5684908759449600
>>>>>>>>
>>>>>>>> Links to previous Intent discussions
>>>>>>>>
>>>>>>>> Intent to prototype:
>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAP-nMoGAzjUjzv3WmxcRpUSBgnA-AHQ05kh9gXc%2BQB8pRM6%2BfA%40mail.gmail.com
>>>>>>>> Intent to Experiment:
>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAP-nMoHe391sAB2PdbEVw9uiSPFxTB_EYsRizcPpZ7-pg16O0A%40mail.gmail.com
>>>>>>>>
>>>>>>>> Intent to Extend Experiment:
>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA5e698QcKZSthm%3Dz_4pi8cOzi4kfbx-AXveC%2BAKimUh-tMycA%40mail.gmail.com
>>>>>>>>
>>>>>>>>
>>>>>>>> This intent message was generated by Chrome Platform Status
>>>>>>>> <https://chromestatus.com/>.
>>>>>>>>
>>>>>>>> --
>>>>>>>> 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/CAP-nMoHYpT3sxWV%2BEipL5NcNSWy8fOdDdAroucmNb%3DZvxJWRBA%40mail.gmail.com
>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAP-nMoHYpT3sxWV%2BEipL5NcNSWy8fOdDdAroucmNb%3DZvxJWRBA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "blink-dev" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to blink-dev+...@chromium.org.
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfXtkH6O82W%2BWm9ckCyYasSJt2cbs9VA4VZAmYhtivgj4g%40mail.gmail.com
>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfXtkH6O82W%2BWm9ckCyYasSJt2cbs9VA4VZAmYhtivgj4g%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>> --
>> You received this message because you are subscribed to the Google Groups
>> "bfcache-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to bfcache-dev+unsubscr...@chromium.org.
>> To view this discussion on the web, visit
>> https://groups.google.com/a/chromium.org/d/msgid/bfcache-dev/CAM0wra-P3NxELP28%3Dgh%3D3ROC35m8ijS_5RRcStyjFew1AXNyEg%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/bfcache-dev/CAM0wra-P3NxELP28%3Dgh%3D3ROC35m8ijS_5RRcStyjFew1AXNyEg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra_a8Rtpo%2BDG5sMstewnRVh1gm2CD-hShWpk1dj9EotKOQ%40mail.gmail.com.

Reply via email to