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.

Reply via email to