LGTM2 to expand support for desktop. On Tue, Aug 30, 2022 at 8:53 AM TAMURA, Kent <tk...@chromium.org> wrote:
> LGTM1. > It's pretty safe to expand support to desktop platforms, and it > seems there are no negative signals. > > On Thu, Aug 18, 2022 at 4:07 PM 'Angel Raposo' via blink-dev < > blink-dev@chromium.org> wrote: > >> Contact emails >> >> toyos...@chromium.org, angelrapo...@google.com >> >> Explainer >> >> This I2S aims to expand our efforts on Prerender2 (currently shipped only >> on Android) to Desktop. >> >> The full prerendering revamped explainer can be found at >> >> https://github.com/WICG/nav-speculation/blob/main/README.md >> >> Specification >> >> https://wicg.github.io/nav-speculation/prerendering.html >> >> Design docs >> >> >> https://docs.google.com/document/d/1EpLshvc9RRW3vswmXsJGrbCkhlFmxDsWfbvgxmYDTfs >> >> Summary >> >> Prerendering is “pre”-rendering, it’s about pre-loading and rendering a >> Web page before the user actually navigates to it. The main goal of >> prerendering is to make the next page navigation faster, or ideally nearly >> instant. >> >> Sites can inform the user agent about which pages the user may likely >> visit, by asking to trigger a ‘prerendering’ for a particular URL (e.g. >> user is at page A and will likely navigate to page B next). Once the >> prerender is triggered, the browser pre-fetches the main resource, >> instantiates a hidden page, and processes the main resource to fetch and >> process more subresources. >> >> After shipping Prerender2 for Android (I2S speculation rules triggered >> Prerender2 >> <https://groups.google.com/a/chromium.org/g/blink-dev/c/EdW7O8yG7Jc/m/ypgp7pIjBAAJ?utm_medium=email&utm_source=footer> >> and I2S for Omnibox triggered Prerender2 >> <https://groups.google.com/a/chromium.org/g/blink-dev/c/ogegRwcRlcs/m/Aso1a0UcBgAJ>), >> we are now requesting approval to ship Prerender2 for Desktop. This release >> will enable the same triggers (speculation rules and Omnibox) for Desktop. >> >> With this feature, Chrome (Desktop) will start prerendering >> high-confidence URL suggestions provided by the page using speculation >> rules or directly by Omnibox. During the prerendering process, a page will >> process and construct the full DOM tree, including the execution of scripts >> (this differs from No-state Prefetch >> <https://developers.google.com/web/updates/2018/07/nostate-prefetch> >> which only prefetches resources and doesn’t execute scripts). >> >> Note that we are not shipping cross-origin prerendering, which allows a >> web page to prerender another page on a different origin. >> >> >> Blink component >> >> Internals>Preload>Prerender >> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3EPreload%3EPrerender> >> >> TAG review >> >> https://github.com/w3ctag/design-reviews/issues/667 >> >> TAG review status >> >> All issues have been addressed. >> >> Risks >> >> >> Interoperability and Compatibility >> >> Interoperability risk: this feature is focused on enabling Prerender on >> Desktop, which is already launched and available for Android. >> >> We believe that some browsers already have prerendering implementations >> which are not specified and may differ from each other, or not always >> exposed to the platform. Our vision is to produce a specification that can >> help improve interoperability. There is a risk that other browsers do not >> converge on a prerendering standard but we hope that we’ll be able to >> address legitimate concerns if any are raised by interested parties. >> >> Compatibility risk: this feature is focused on enabling Prerender on >> Desktop, which is already launched and available for Android. There are >> some use cases that will need to know whether a page is being prerendered >> by the user agent or navigated by the user, e.g. ads and analytics are >> likely examples of this which are supported by already launched features >> such as `document.prerendering` which lets a page know that it’s being >> prerendered. >> >> Chrome Extensions have abilities to interact with web contents and have >> widely used API surfaces. We’ve been keeping in mind compatibility with >> Extensions’ compatibility, including giving enough capability for >> Extensions to properly support Prerender2 [1]. >> >> A similar concern applies to (P)NaCl/PPAPI. However, these plugins are on >> a deprecation path. In the meantime, given that NaCl permits the page to >> perform powerful operations, we are taking the safe route by canceling >> prerendering if it triggers a request to load a NaCl module. >> >> [1] >> https://docs.google.com/document/d/1EpLshvc9RRW3vswmXsJGrbCkhlFmxDsWfbvgxmYDTfs/edit >> >> >> Gecko: When we launched Prerender2 for Android, we had some informal >> positive discussion with Gecko engineers on the HTML Standard issue >> tracker >> <https://github.com/whatwg/html/issues/7533#issuecomment-1022051187> and in >> the HTML triage call >> <https://github.com/whatwg/html/issues/7488#issuecomment-1029510684>; >> formal positions request here: >> https://github.com/mozilla/standards-positions/issues/613 >> >> >> WebKit: WebKit already ships URL-bar triggered prerendering, but not any >> APIs for letting pages know about it, and it's unclear what strategy they >> are using to prohibit disruptive behaviors for prerendered pages. When we >> launched Prerender2 for Android, we reached out for a formal positions >> request here in the hopes of moving toward interoperability: >> https://lists.webkit.org/pipermail/webkit-dev/2022-February/032113.html >> >> Web developers: When we launched Prerender2 for Android, we received >> positive feedback from initial web developers testing the speculation rules >> triggers (see https://github.com/WICG/proposals/issues/2 for positive >> sentiments on speculation rules triggered). >> >> >> Other signals: When we launched Prerender2 for Android we created a >> public request for feedback published ( >> https://web.dev/speculative-prerendering/#feedback-welcome) which is >> currently being managed through: >> https://github.com/WICG/nav-speculation/issues >> >> >> Ergonomics >> >> This feature is triggered by the speculation rules API >> <https://chromestatus.com/feature/5740655424831488> and Omnibox. We >> don't anticipate any conflict with other Platform APIs. >> >> IT admins can disable Prerender2 via the existing group policy >> "NetworkPredictionOptions" >> >> We are shipping the same web-exposed APIs previously launched on Android: >> document.prerendering, prerenderingchange event and >> performanceEntry.activationStart timing. >> >> >> Activation >> >> There are two mechanisms to trigger a prerender: >> (1) Speculation rules in which developers can immediately take advantage >> of this feature by defining suggestions that the user agent will take into >> consideration when deciding if a page is likely going to be browsed next. >> >> (2) Omnibox where the user agent decides if an URL should be prerendered >> according to different heuristics. >> Both of these triggers are already shipped for Android. With this >> request, we want to allow Desktop to also trigger Prerender2 in the same >> scenarios. >> >> The feature should just work for most existing pages but developers >> should be aware of restrictions on prerendering content (they cannot play >> audio or perform other disruptive behavior, etc.). As we grow our reach of >> navigations by enabling the Desktop version, we will pay special attention >> to the documentation available to developers. >> >> We’ve also paid close attention to extensions. We believe that >> extensions shouldn’t be affected by this feature as the restricted features >> are deferred behind a Promise resolution, and many extensions appear to >> just work transparently. >> >> To report breakages in extensions developers have two options: they can >> comment on the extensions related compatibility issue at >> https://crbug.com/1351312, or they can discuss the desired API surface >> in the mail group: >> https://groups.google.com/a/chromium.org/g/chromium-extensions. >> >> >> >> Security >> >> We are scaling an already shipped feature in Android to cover Desktop. >> >> The speculation rules API was the first use of the Multiple-Page >> Architecture, which is a significant change to Chromium's internals. Both >> MPArch and the speculation rules API underwent significant security review. >> From >> a web-exposed perspective, the security and privacy concerns are smaller, >> because this feature is restricted to the same-origin case only. WebView >> application risks >> >> Prerendering is not supported on WebView and doesn’t deprecate or change >> behavior of existing APIs directly. >> >> >> >> Debuggability >> >> We are actively talking to the DevTools team about adding general >> Prerender support to it [metabug >> <https://bugs.chromium.org/p/chromium/issues/detail?id=1217029>] with a >> current focus in providing meaningful debugging messages. >> The current MVP is to reveal the status of prerendered pages so web >> developers can know if prerendering succeeded or not. >> >> See [this document >> <https://docs.google.com/document/d/1YEAfcuBjwlJn7GG6po8AFteObG15r9ro63fdFfcMvoI/edit>] >> for our longer-term plan for improving the experience of debugging >> prerendering with DevTools. >> >> Prerendered pages are also visible in chrome://process-internals. >> >> >> >> Will this feature be supported on all six Blink platforms (Windows, Mac, >> Linux, Chrome OS, Android, and Android WebView)? >> >> No. Prerender2 was originally shipped on Android. This Intent expands it >> to cover Windows, Mac, Linux, and Chrome OS. It remains disabled on Android >> WebView. >> >> >> Is this feature fully tested by web-platform-tests >> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >> ? >> >> We have written a lot of web platform tests using speculation rules as >> the trigger: >> >> >> https://wpt.fyi/results/speculation-rules/prerender?label=experimental&label=master&aligned >> >> Flag name >> >> Prerender2 >> >> Requires code in //chrome? >> >> True >> >> Tracking bug >> >> https://crbug.com/1278141 >> >> Launch bug >> >> https://crbug.com/1332400 >> >> Estimated milestones >> >> DevTrial on desktop >> >> 105 >> >> DevTrial on Android >> >> Already shipped on 103 >> >> >> Anticipated spec changes >> >> With this I2S we are aiming to scale already shipped APIs to Desktop. >> >> When we shipped the speculation rules, we reviewed all the current >> pending discussions >> <https://docs.google.com/document/d/1eFY7RMoeG7Mdhon9yLs6hKSfi6DYrASBPM-31hWXPDg/edit> >> and all of them were resolved with the initial launch without causing >> compatibility issues. >> >> >> Link to entry on the Chrome Platform Status >> >> https://chromestatus.com/feature/5197044678393856 >> >> Links to previous Intent discussions >> >> Intent to prototype: >> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFWCB1n7W-gfr9b8FTNtB1bNDnYJ_%3DkSfWiY%2BtfGyqjuXe52zA%40mail.gmail.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFWCB1n7W-gfr9b8FTNtB1bNDnYJ_=ksfwiy+tfgyqjuxe5...@mail.gmail.com> >> >> >> This intent message was generated by Chrome Platform Status >> <https://chromestatus.com/>. >> >> >> -- >> Angel Raposo | Engagement Manager | angelrap...@google.com | >> Google Japan G.K. >> >> >> This email may be confidential or privileged. If you received this >> communication by mistake, please don't forward it to anyone else, please >> erase all copies and attachments, and please let me know that it went to >> the wrong person. Thanks. >> >> The above terms reflect a potential business arrangement, are provided >> solely as a basis for further discussion, and are not intended to be and do >> not constitute a legally binding obligation. No legally binding >> obligations will be created, implied, or inferred until an agreement in >> final form is executed in writing by all parties involved. >> >> >> もし、このメッセージが誤って貴殿に送信されたと思われる場合には、機密情報を含んでいる可能性もありますので、どなたにも転送せず、添付ファイルも含めて削除していただくとともに、発信者にその旨をお伝えいただきますようお願いいたします。 >> >> -- >> 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/CAA9vRHy7_o1ftcTz2-pC5rOPtZRhas5PGLw4HJ--v%2Bewkvcoww%40mail.gmail.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA9vRHy7_o1ftcTz2-pC5rOPtZRhas5PGLw4HJ--v%2Bewkvcoww%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > TAMURA Kent > Software Engineer, Google > > > -- > 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/CAGH7WqGfDVX7aWqdHt9skKSsnZcvvGHa9F6ZWshvGnVDJ24EAQ%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGH7WqGfDVX7aWqdHt9skKSsnZcvvGHa9F6ZWshvGnVDJ24EAQ%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/CAL5BFfUr2bVZHm-GCy0Eh18rXY4HcZ0yv2EEsT_S1o7ORm%2BCtg%40mail.gmail.com.