Please also make sure to complete all of the other shipping gate reviews <https://groups.google.com/a/chromium.org/g/blink-dev/c/bqvB1oap0Yc/m/YlO8DEHgAQAJ> .
Thanks! Chris On Thu, Aug 10, 2023 at 8:46 AM 'Yuzu Saijo' via blink-dev < blink-dev@chromium.org> wrote: > Sounds good, I will create a list on the explainer > <https://github.com/WICG/bfcache-not-restored-reason/blob/main/NotRestoredReason.md> > for the "may block" reasons then. > > Re: exposing NotRestoredReasons interface instead of object in idl: > I'm working on the implementation in this CL > <https://chromium-review.googlesource.com/c/chromium/src/+/4770594>. > This might be a basic question, but is there any difference on how to call > the API from users' perspective, when the exposed attribute is an interface > vs object? > > On Thursday, August 10, 2023 at 10:06:49 AM UTC+9 dom...@chromium.org > wrote: > >> 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 <dom...@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...@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/43e32f0e-454e-4525-b317-cbe492e2f23bn%40chromium.org > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/43e32f0e-454e-4525-b317-cbe492e2f23bn%40chromium.org?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/CAOMQ%2Bw8yP0QcXFW0yyKOQjaiGiTFbNELCNWAMwoDn5CVcHqFdw%40mail.gmail.com.