In addition to the LGTM, I want to point out that during our discussion among the API Owners, we did specifically wonder about extension compatibility. Since this will change things for extensions, I think it will be important to look for compatibility problems popping up, and, if necessary, delay until any such problems are fully understood.

/Daniel

On 2022-08-31 16:34, Daniel Bratell wrote:

LGTM3

/Daniel

On 2022-08-30 10:58, Yoav Weiss wrote:
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>.
--
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/e6aff414-3ed1-2714-7d59-7dcfb7582391%40gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e6aff414-3ed1-2714-7d59-7dcfb7582391%40gmail.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/6189cdaa-3c77-07e8-83da-8acc178cfa93%40gmail.com.

Reply via email to