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.) - 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. 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 "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-P3NxELP28%3Dgh%3D3ROC35m8ijS_5RRcStyjFew1AXNyEg%40mail.gmail.com.