Thanks Thomas for all your work here! Your HTTP Archive survey seems promising to me: it sounds like there are no regressions, and you found some great places to perform outreach. (Hi Wesley!)
I'm happy to LGTM this as soon as the privacy/security reviews are approved and you've picked a target experiment timeline. On Thu, Jan 25, 2024 at 10:00 AM Wesley Luyten <luytenwes...@gmail.com> wrote: > Wesley from Mux here. I saw the issue come by. > > We'd be happy those API's could get deprecated and unified into the new > one. > > Our Media Chrome (library, not browser) implementation handles this > gracefully, some code here > > https://github.com/muxinc/media-chrome/blob/83c1a0f000bc8898971f030bcafa0d6df37cdc34/src/js/controller.js#L636-L636 > > The Vimeo player uses a variant of https://github.com/bdougherty/BigScreen, > a similar popular library is https://github.com/sindresorhus/screenfull > > Just thought to mention it but iOS never supported the generic fullscreen > API until very recent > https://twitter.com/jensimmons/status/1717937227190460797 > It always required the webkit prefixed API on the video element (not any > other element like a div etc ) > Y'all are aware of that? > On Wednesday, January 24, 2024 at 6:23:16 PM UTC-6 Thomas Guilbert wrote: > >> I opened a support ticket with Mux, and opened an issue for Clappr >> <https://github.com/clappr/clappr/issues/2136>. >> >> On Wed, Jan 24, 2024 at 3:40 PM Thomas Guilbert <tgui...@chromium.org> >> wrote: >> >>> I've created a new ChromeStatus entry >>> <https://chromestatus.com/feature/5111638103687168>, and requested the >>> privacy/security/debuggability gates for the deprecation trial. >>> >>> I audited a little more than 20 sites from the HTTP Archive. I've found >>> a few JS player libraries that primarily use the `webkitSupportsFullscreen` >>> and `webkitDisplayingFullscreen` APIs: Mux and Clappr, and one instance of >>> PlayerJS. >>> I found websites with a fullscreen button for Mux and PlayerJS, and they >>> behaved as expected on a build of Chrome without the APIs. The one site I >>> found using Clappr that had a fullscreen button did not work, both on the >>> custom build and the latest canary. >>> >>> It also seems like some version of the Vimeo CDN player uses >>> `webkitEnterFullscreen`: >>> https://f.vimeocdn.com/p/4.27.1/js/vendor.module.js*.* >>> >>> Thanks, >>> Thomas >>> >>> On Mon, Jan 22, 2024 at 5:31 PM Domenic Denicola <dom...@chromium.org> >>> wrote: >>> >>>> >>>> >>>> On Tue, Jan 23, 2024 at 7:55 AM Thomas Guilbert <tgui...@chromium.org> >>>> wrote: >>>> >>>>> Good point about the most used APIs being the boolean properties! The >>>>> APIs are now only aliases for the standard non-prefixed fullscreen APIs >>>>> (see >>>>> this code for the current implementation >>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/media/html_video_element.cc;l=418;drc=25705537e65f031d28c1a531046b11914055b7e6>), >>>>> and therefore aren't much of a burden to maintain. >>>>> >>>>> I opened a WebKit standards position here: >>>>> https://github.com/WebKit/standards-positions/issues/306 >>>>> >>>>> I unfortunately do not have access to edit the listed ChromeStatus >>>>> entry, and the current owner no longer works on Chromium. Should I create >>>>> a >>>>> new feature (titled "Deprecation of HTMLVideoElement-specific Prefixed >>>>> Fullscreen API")? I think the current ChromeStatus entry also covers this >>>>> API >>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/fullscreen/element_fullscreen.idl;l=19;drc=047c7dc4ee1ce908d7fea38ca063fa2f80f92c77> >>>>> which I am not trying to deprecate in this Intent. >>>>> >>>> >>>> Yeah, I think a new feature is a good idea. The old feature seems to be >>>> for the *addition* of the prefixed fullscreen API properties back in >>>> Chrome 15, whereas a *deprecation/removal* has a different set of >>>> fields, if I understand correctly. >>>> >>>> >>>>> >>>>> What's a reasonable sample size of HTTP Archive sites to audit? Should >>>>> this be a complement/precursor to the proposed Deprecation Trial, or would >>>>> this sampling be enough? >>>>> >>>> >>>> I recall +Philip Jägenstedt having done some computations in the past >>>> based on what would actually be statistically significant. But, I couldn't >>>> find them in this documentation >>>> <https://www.chromium.org/blink/platform-predictability/compat-tools/> (or >>>> the linked document >>>> <https://docs.google.com/document/d/1cpjWFoXBiuFYI4zb9I7wHs7uYZ0ntbOgLwH-mgqXdEM/edit#heading=h.1m1gg72jnnrt>). >>>> So, I'll just state that I would be happy with 20 sites. >>>> >>>> I think the deprecation trial is a great complement to have in any >>>> case, so I would treat this as a precursor. It's always safest to have the >>>> option for web developers to un-break their sites. The purpose of the HTTP >>>> Archive investigation is mostly to see if we can find major shared >>>> patterns, to say things like "all sites using this code will be broken" or >>>> "all sites using this code will be slightly worse, but basically fine", or >>>> even "all sites using this open-source library will be broken, but we can >>>> send them a PR and that will create a clear upgrade path". >>>> >>>> >>>>> >>>>> Thank you, >>>>> Thomas >>>>> >>>>> On Sun, Jan 21, 2024 at 7:56 PM Domenic Denicola <dom...@chromium.org> >>>>> wrote: >>>>> >>>>>> It would be very exciting to clean this up! I have some questions >>>>>> that might help clarify the cost-benefit analysis. >>>>>> >>>>>> On Sat, Jan 20, 2024 at 6:43 AM Thomas Guilbert <tgui...@chromium.org> >>>>>> wrote: >>>>>> >>>>>>> Contact emails >>>>>>> >>>>>>> tgui...@chromium.org >>>>>>> >>>>>>> Explainer >>>>>>> >>>>>>> None >>>>>>> >>>>>>> Specification >>>>>>> >>>>>>> https://fullscreen.spec.whatwg.org/#dom-document-fullscreenenabled >>>>>>> >>>>>>> Summary >>>>>>> There was an attempt in 2014 >>>>>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/Bxe7DnDVRZ0/m/5K61HQPrNK4J> >>>>>>> to deprecate and remove the HTMLVideoElement-specific Prefixed >>>>>>> Fullscreen >>>>>>> APIs. This meant removing the following APIs from HTMLVideoElement: >>>>>>> >>>>>>> readonly attribute boolean webkitSupportsFullscreen; >>>>>>> readonly attribute boolean webkitDisplayingFullscreen; >>>>>>> void webkitEnterFullscreen(); >>>>>>> void webkitExitFullscreen(); >>>>>>> // Note the different capitalization of the "S" in FullScreen. >>>>>>> void webkitEnterFullScreen(); >>>>>>> void webkitExitFullScreen(); >>>>>>> >>>>>>> >>>>>> How "expensive" is it to support these APIs? For example, if some of >>>>>> them are just straight-up aliases of standard APIs, then the benefit of >>>>>> removal might be low. Whereas if, for example, these prefixed "enter >>>>>> fullscreen" APIs have different behavior than the standardized >>>>>> requestFullscreen() API, then supporting the prefixed variants feels >>>>>> expensive, and getting rid of them is more worthwhile. >>>>>> >>>>>> >>>>>>> The overall usage of these APIs is low, and has trended downwards >>>>>>> over time. Here are the latest usage numbers, as a % of total page >>>>>>> loads: >>>>>>> >>>>>>> PrefixedVideoSupportsFullscreen: 0.025% >>>>>>> PrefixedVideoDisplayingFullscreen: 0.082% >>>>>>> PrefixedVideoEnterFullscreen: 0.001% >>>>>>> PrefixedVideoExitFullscreen: 0.010% >>>>>>> PrefixedVideoEnterFullScreen: 0.001% >>>>>>> PrefixedVideoExitFullScreen: 0.000% >>>>>>> >>>>>>> >>>>>>> >>>>>> It's notable that the highest counters are for the boolean >>>>>> properties. That makes this slightly less risky, because removing them >>>>>> will >>>>>> cause them to return `undefined`, so code like `if >>>>>> (videoEl.webkitSupportsFullscreen) { ... }` will just return false, >>>>>> instead >>>>>> of throwing an exception or similar. >>>>>> >>>>>> >>>>>>> There has been an unfortunate uptick in the past 2 years for the two >>>>>>> following APIs, which means that it's best to remove them now, before >>>>>>> they >>>>>>> see a wider adoption. These numbers might be going up because the >>>>>>> prefixed >>>>>>> APIs are also present on iOS. >>>>>>> >>>>>>> https://chromestatus.com/metrics/feature/timeline/popularity/166 >>>>>>> https://chromestatus.com/metrics/feature/timeline/popularity/167 >>>>>>> >>>>>> >>>>>> I was going to ask about if there are popular sites or libraries >>>>>> using these, but I found some discussion of that in the bug >>>>>> <https://bugs.chromium.org/p/chromium/issues/detail?id=346236#c74>. >>>>>> It seems like there's a hope that some sites already have fallbacks in >>>>>> place to the standardized APIs, but it's not quite clear. Maybe you could >>>>>> try running a build of Chromium with the prefixed APIs disabled on a >>>>>> random >>>>>> sampling of the HTTP Archive sites, and reporting back on if the user >>>>>> experience changes or new errors show up in the JS console? That could >>>>>> give >>>>>> us more confidence in the removal. >>>>>> >>>>>> >>>>>>> >>>>>>> There is an alternative set of APIs supported by all browsers that >>>>>>> web authors can use. >>>>>>> >>>>>>> The full history of the removal attempt is here: crbug.com/346236 >>>>>>> >>>>>>> >>>>>>> Goals for experimentation >>>>>>> >>>>>>> The primary goal of the deprecation trial is to reduce the amount of >>>>>>> broken user-visible experiences as the prefixed fullscreen APIs are >>>>>>> removed, and to give time to web authors to transition to the modern API >>>>>>> (which has been available for 5 years). >>>>>>> >>>>>>> >>>>>>> The un-prefixed fullscreen APIs have been available since Chrome M71. >>>>>>> >>>>>>> Experiment timeline >>>>>>> >>>>>>> TBD, with a proposed 3 months duration >>>>>>> >>>>>>> Blink component >>>>>>> >>>>>>> Blink>Fullscreen >>>>>>> Blink>Media>Video >>>>>>> >>>>>>> TAG review >>>>>>> >>>>>>> None >>>>>>> >>>>>>> TAG review status >>>>>>> >>>>>>> Not applicable >>>>>>> >>>>>>> Risks >>>>>>> Interoperability and Compatibility >>>>>>> >>>>>>> Web Compatibility: >>>>>>> >>>>>>> Removing non-standard APIs should overall help web compatibility, >>>>>>> and encourage web authors to use the unprefixed APIs. Some experiences >>>>>>> might be broken by this change, thus justifying this deprecation trial. >>>>>>> The >>>>>>> API has been deprecated for a significant amount of time however, and >>>>>>> usage >>>>>>> has gone down. >>>>>>> >>>>>>> This would only be an issue for websites that *only* support the >>>>>>> prefixed APIs. >>>>>>> >>>>>>> >>>>>>> Interoperability: >>>>>>> >>>>>>> >>>>>>> All browsers have shipped the new APIs, most of them using an >>>>>>> unprefixed version (Safari on iOS being the only remaining prefixed-only >>>>>>> API). See also >>>>>>> https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen#browser_compatibility >>>>>>> >>>>>> >>>>>> Based on the WPT results >>>>>> <https://wpt.fyi/results/fullscreen/api/historical.html?label=master&label=experimental&aligned&q=%2Ffullscreen%2Fapi%2Fhistorical.html>, >>>>>> Gecko supports none of the prefixed APIs, and WebKit supports all of >>>>>> them. >>>>>> I think this is worth noting in the ChromeStatus entry. (Although it's >>>>>> not >>>>>> an official signal, so leave the dropdown at "No signals".) >>>>>> >>>>>> Given this, filing a standards-positions issue on WebKit to get their >>>>>> take on the deprecation might be a good idea. Sometimes those discussions >>>>>> end up going in surprising directions; see e.g. this request for a >>>>>> position on the deprecation of mutation events >>>>>> <https://github.com/WebKit/standards-positions/issues/192>. >>>>>> >>>>>> (Gecko also has their own, smaller set of prefixed APIs. But it's not >>>>>> as relevant to this intent about the webkit-prefixed ones.) >>>>>> >>>>>> >>>>>>> >>>>>>> Gecko: >>>>>>> >>>>>>> >>>>>>> WebKit: >>>>>>> >>>>>>> Web developers: >>>>>>> >>>>>>> Other signals: >>>>>>> >>>>>>> Activation >>>>>>> >>>>>>> Impact on the Ads ecosystem: >>>>>>> >>>>>>> N/A >>>>>>> >>>>>>> >>>>>>> WebView application risks >>>>>>> >>>>>>> Does this intent deprecate or change behavior of existing APIs, such >>>>>>> that it has potentially high risk for Android WebView-based >>>>>>> applications? >>>>>>> >>>>>>> Potentially. The deprecation trial should give a heads up and >>>>>>> appropriate time for apps to switch over to the unprefixed APIs. >>>>>>> >>>>>>> >>>>>>> >>>>>>> Ongoing technical constraints >>>>>>> >>>>>>> None >>>>>>> >>>>>>> >>>>>>> Debuggability >>>>>>> >>>>>>> N/A >>>>>>> >>>>>>> Will this feature be supported on all six Blink platforms (Windows, >>>>>>> Mac, Linux, Chrome OS, Android, and Android WebView)? >>>>>>> >>>>>>> Yes - the prefixed API will be removed across all platforms. >>>>>>> >>>>>>> Is this feature fully tested by web-platform-tests >>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>> ? >>>>>>> >>>>>>> Yes >>>>>>> >>>>>>> WPTs testing the prefixes are removed: >>>>>>> https://github.com/web-platform-tests/wpt/blob/master/fullscreen/api/historical.html >>>>>>> >>>>>>> WPTs testing the new API: >>>>>>> https://github.com/web-platform-tests/wpt/tree/master/fullscreen/api >>>>>>> >>>>>>> >>>>>>> Flag name on chrome://flags >>>>>>> >>>>>>> None >>>>>>> >>>>>>> Finch feature name >>>>>>> >>>>>>> PrefixedVideoFullscreen >>>>>>> >>>>>>> Non-finch justification >>>>>>> >>>>>>> None >>>>>>> >>>>>>> Requires code in //chrome? >>>>>>> >>>>>>> False >>>>>>> >>>>>>> Launch bug >>>>>>> >>>>>>> None >>>>>>> >>>>>>> Estimated milestones >>>>>>> >>>>>>> DevTrial on desktop >>>>>>> >>>>>>> 123 >>>>>>> >>>>>>> DevTrial on Android >>>>>>> >>>>>>> 123 >>>>>>> >>>>>>> >>>>>>> Link to entry on the Chrome Platform Status >>>>>>> >>>>>>> https://chromestatus.com/feature/5259513871466496 >>>>>>> >>>>>>> -- >>>>>>> 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+...@chromium.org. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABrVPoa373%3Dnxuc%2BTe_h9e0WdS53_oAyUEa%2B4j0v2xWgJ2MFcw%40mail.gmail.com >>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABrVPoa373%3Dnxuc%2BTe_h9e0WdS53_oAyUEa%2B4j0v2xWgJ2MFcw%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/CAM0wra-h5kZb3dNL%2BX5aXgM-bh8CSzG9SZZWCmoHFPMWAGrALg%40mail.gmail.com.