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
<https://github.com/WICG/nav-speculation/blob/main/README.md>
Specification
https://wicg.github.io/nav-speculation/prerendering.html
<https://wicg.github.io/nav-speculation/prerendering.html>
Design docs
https://docs.google.com/document/d/1EpLshvc9RRW3vswmXsJGrbCkhlFmxDsWfbvgxmYDTfs
<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
<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
<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
<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
<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
<https://web.dev/speculative-prerendering/#feedback-welcome>)
which is currently being managed through:
https://github.com/WICG/nav-speculation/issues
<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
<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
<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
<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 <https://crbug.com/1278141>
Launch bug
https://crbug.com/1332400 <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
<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
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUr2bVZHm-GCy0Eh18rXY4HcZ0yv2EEsT_S1o7ORm%2BCtg%40mail.gmail.com?utm_medium=email&utm_source=footer>.