On Wed, Feb 9, 2022 at 10:50 AM Yoav Weiss <yoavwe...@chromium.org> wrote:

>
>
> On Wednesday, February 9, 2022 at 2:49:55 AM UTC+1 Mike Taylor wrote:
>
>> Hey Xiaocheng,
>>
>> Thanks for working on improving interop! A few thoughts and questions
>> below.
>>
>> On 2/8/22 7:25 PM, Xiaocheng Hu wrote:
>>
>> Contact emails xiaoche...@chromium.org
>>
>> Explainer None
>>
>> Specification None. Not a standard feature.
>>
>> Summary
>>
>> Event.path is a non-standard API that returns the event's path, which is
>> an array of the objects on which listeners will be invoked. It is supported
>> by Blink only, causing web compatibility issues. Web developers should
>> switch to the equivalent standard API Event.composedPath(), which returns
>> the same result.
>>
>>
>> Blink component Blink>DOM
>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EDOM>
>>
>> TAG review
>>
>> TAG review status Not applicable
>>
>> Risks
>>
>>
>> Interoperability and Compatibility
>>
>> The removal of this API should improve interoperability, as it's
>> supported by Blink only. It still has 18% usage as of Feb 2022 (
>> https://chromestatus.com/metrics/feature/timeline/popularity/345), so we
>> will only deprecate it for now, and will not remove it before the usage
>> drops low enough. We expect low compatibility risks, since there is an
>> equivalent standard API (Event.composedPath()) by all browsers, and the
>> following polyfill should also keep existing sites functioning with minimum
>> changes:
>>
>> 18% is a _lot_ of usage. So much that I'm surprised there aren't dozens
>> of compat bugs reported against Firefox. In
>> https://bugzilla.mozilla.org/show_bug.cgi?id=1697590#c0 there are only 2
>> linked site bugs. And there's only 3 in
>> https://github.com/webcompat/web-bugs/issues?q=is%3Aissue+composedPath
>> (the last one being from 2019).
>>
>> I wonder how much of that 18% is feature detection and fallback codepaths
>> <https://github.com/search?l=JavaScript&q=composedPath+event.path&type=Code>
>> .
>>
>
> Yeah, that 18% is unreasonably high...
> I think it'd be good to add a non-IDL based counter that counts when both
> Event::path
> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/dom/events/event.cc;l=287;bpv=1;bpt=0>
>  and
> Event::composedPath
> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/dom/events/event.cc;l=293;bpv=1;bpt=0>
>  are
> accessed. (e.g. by adding 2 booleans or a bitmask on Event indicating when
> any of them was touched and triggering the counter when both have been)
> Then we can assume that counts feature-detection/fallback and subtract
> that counter from the 18%.
>

Based on past cases, I'm pretty sure most of the usage here is due to event
copying, where all of the properties of event instances are copied to a new
object. So I think we should basically ignore the 18% number and treat the
risk as unknown.

A use counter that tries to better measure the risk here would be nice, but
I actually don't see how to measure it. Consider this code:

function(event) {
  var path = event.path;
  if (!path) {
    path = event.composedPath()
  }
  doStuffWith(path);
}

This would never hit the composedPath() code path, and is indistinguishable
to code that only relies on event.path, from the point of view of use
counter instrumentation.

I think that httparchive analysis here is our best tool, and in fact that
*only* httparchive analysis could be enough to convince us that there's no
problem here, if we fail to find any breaking cases. But even then, we
should probably have a fairly long deprecation period.

If we go ahead and deprecate this, what do you think the deprecation
message should say about eventual removal?

Best regards,
Philip

-- 
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/CAARdPYf2oYbdG44_jand7F5yovDZ6SjUajaQJ1xHqEmSVJ_a%2Bw%40mail.gmail.com.

Reply via email to