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.