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.

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?

Thank you,
Thomas

On Sun, Jan 21, 2024 at 7:56 PM Domenic Denicola <dome...@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 <tguilb...@chromium.org>
> wrote:
>
>> Contact emails
>>
>> tguilb...@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+unsubscr...@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/CABrVPoYaoWL2N6sfjawE-X7DE46BbuDqRK0DFzgO1ayS5Di8Vw%40mail.gmail.com.

Reply via email to