I'm also happy to support a plan to deprecate and remove. The use counter that best represents worst-case user impact at https://chromestatus.com/metrics/feature/timeline/popularity/170 at ~0.001%. But that's only when fullscreen actually happens (on user interaction) and it's very hard to say what proportion of sites could *potentially* hit this code path, especially given the ubiquitous pattern of trying multiple API names that's been necessary forever with fullscreen, so that some sites will just fall back to a working API.
What timeline do you have in mind? On Thu, Jan 25, 2024 at 2:19 AM Domenic Denicola <dome...@chromium.org> wrote: > 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/CAARdPYfpL2LnSXXfSOMMDLWPRVygoz3BPoZgCLpicAhwWzm36w%40mail.gmail.com.