> I assume cancelling the mousedown (but not the mousemove) still prevents
selection and drag-and-drop in all browsers, is that right? That's the
pattern I'd expect is most common. Also, what's the behavior of pointermove
for mice today and after this change?

I just confirmed <https://codepen.io/mustaqahmed/full/wvNYGEP> that Chrome
(and Firefox and Safari too) already prevents both selection and
drag-and-drop when mousedown or pointerdown is cancelled.  So sites
canceling all the mouse events will work fine.

> We have landed a metric which specifically checks for cases where the
mousemove is preventDefaulted but a selection starts (i.e. selectstart
wasn't prevented, there was no user-select: none, and so the selection does
change). Right now this is a UMA but we could also add UKM and get sites
from this. Mustaq WDYT about adding UKM for this and running the 1% finch
trial?

Adding UKM and running a 1% finch trial sounds good.

Perhaps we can run a Canary/Dev/Beta trial even now (on M121)?



On Wed, Dec 6, 2023 at 12:34 PM Robert Flack <fla...@chromium.org> wrote:

> On Wed, Dec 6, 2023 at 12:18 PM Rick Byers <rby...@chromium.org> wrote:
>
>> API owners met and discussed this one briefly today. There was agreement
>> that more work needs to be done to demonstrate the compat risk is low
>> enough to ship this breaking change. A few points:
>>
>>    - If you'd like to do a finch trial to gather data (up to stable 1%)
>>    we're supportive of that.
>>    - Mike Taylor argued that you're not likely to learn too much useful
>>    from a finch trial since people seem not to report bugs for things that
>>    fail for a seemingly random 1% of their users, and perhaps the idea of
>>    surveying a few sites would be more effective at finding real breakage. Of
>>    course UKM + Finch might be a good way to find URLs to test.
>>
>> We have landed a metric which specifically checks for cases where the
> mousemove is preventDefaulted but a selection starts (i.e. selectstart
> wasn't prevented, there was no user-select: none, and so the selection does
> change). Right now this is a UMA but we could also add UKM and get sites
> from this. Mustaq WDYT about adding UKM for this and running the 1% finch
> trial?
>
>>
>>    - Mike also argued that in his experience, he'd expect sites like
>>    mapping apps to have engine-specific conditional code around their event
>>    handling, so that increases the risk.
>>    - Philip and I discussed that if there is evidence of real breakage
>>    we can't accept, we should propose changing the spec here - it seems like
>>    it would be very reasonable if cancelling the first mousemove event in a
>>    sequence canceled text selection (just like cancelling the first touchmove
>>    prevents scrolling). But if we have reasonable evidence that it's
>>    non-breaking, we're happy to just align with WebKit and Gecko for improved
>>    interoperability.
>>
>> Agreed, though it may be breaking for other engines to change behavior
> too though, right? E.g. we are in a similar situation with
> overscroll-behavior on the root element (crbug.com/954423
> <https://bugs.chromium.org/p/chromium/issues/detail?id=954423&q=overscroll-behavior%20root&can=2>)
> where changing either behavior to the other will have compat risk.
>
>>
>>    - All agreed we're willing to take some risk here to achieve interop
>>    quickly and don't want to impose too much of a burden of proof, especially
>>    since the severity of breakage is likely low. We just need some more
>>    evidence that the risk is manageable.
>>
>> Perhaps the most pragmatic path would be something like:
>>
>>    1. Survey at least 5 sites with mouse drag involving DOM and explain
>>    why they're unimpacted (cancelling mousedown? cancelling selectionstart? 
>> or
>>    just user-select: none?). If you find one that is indeed broken, revisit
>>    plan.
>>    2. Work with the enterprise team on release notes & plan - i.e.
>>    either finch roll out with commitment to killswitch if we get reports of
>>    enterprise breakage, or add a policy knob opt-out
>>    3. Go for 100% but be prepared to killswitch if there are non-trivial
>>    reports of breakage, then revisit with either a migration plan (outreach,
>>    blog post) or proposed spec change
>>
>> WDYT?
>>
>
> This sounds reasonable. I think running the 1% experiment with the
> targeted metric (cases where selection now happens when it didn't used to)
> should help us gain confidence.
>
> Rick
>>
>> On Tue, Dec 5, 2023 at 3:42 PM Rick Byers <rby...@chromium.org> wrote:
>>
>>> Hey Mustaq,
>>> Thanks for pushing to get this long-time interop issue addressed! I
>>> assume cancelling the mousedown (but not the mousemove) still prevents
>>> selection and drag-and-drop in all browsers, is that right? That's the
>>> pattern I'd expect is most common. Also, what's the behavior of pointermove
>>> for mice today and after this change?
>>>
>>> What's your plan for if the UseCounter comes back high? FWIW, I'm
>>> betting that it will. First I expect it'll be common for sites to
>>> cancel all the mouse events. If my understanding above is correct, then
>>> perhaps you want to exclude those from your UseCounter since the behavior
>>> won't change in those cases? But secondly, given past history with some
>>> major sites, I suspect there might be a long tail of sites that are lightly
>>> broken here. Maybe worth doing a finch-based rollout to mitigate the risk?
>>> I'd support going up to stable 1% now to see if we learn of any issues. I'm
>>> particularly worried about enterprise (LOB) apps which are often
>>> chromium-only. We'll see what Enterprise review says on the launch, but
>>> they might want
>>> <https://www.chromium.org/developers/enterprise-changes/> a mention in
>>> the release notes and a policy opt-out. Then again perhaps since the
>>> breakage is likely to be rare and cosmetic, just doing a finch-based
>>> roll-out (and hitting a finch killswitch on reports of any issues) should
>>> be enough to mitigate the risk.
>>>
>>> You might also consider enabling UKM support
>>> <https://source.chromium.org/chromium/chromium/src/+/main:components/page_load_metrics/browser/observers/use_counter/ukm_features.cc?q=ukm_features&ss=chromium>
>>>  for
>>> your UseCounter to get some sample URLs, though again I'd worry you might
>>> get lots of hits but not be able to easily reproduce any obvious breakage.
>>> Alternately it might be most useful to just spot check 5-10 major sites
>>> which have mouse dragging behavior with DOM (not just canvas) and catalog
>>> how they avoid getting unintended selection (eg. do they cancel selectstart
>>> or use user-select: none). I think mapping sites are an obvious example,
>>> gmail has some message dragging behavior I think, not sure what else.
>>>
>>> Rick
>>>
>>> On Mon, Dec 4, 2023 at 2:35 PM Mustaq Ahmed <mus...@chromium.org> wrote:
>>>
>>>> Contact emailsmus...@chromium.org, fla...@chromium.org
>>>>
>>>> ExplainerNone
>>>>
>>>> Specificationhttps://w3c.github.io/uievents/#event-type-mousemove
>>>>
>>>> Summary
>>>>
>>>> Canceling mousemove will not prevent text selection or drag-and-drop.
>>>> Chrome allowed cancelling mousemove events to prevent other APIs like text
>>>> selection (and even drag-and-drop in the past). This does not match other
>>>> major browsers; nor does it conform to the UI Event spec:
>>>> https://w3c.github.io/uievents/#event-type-mousemove Through this
>>>> feature, the default-action of mousemove becomes none. Text selection and
>>>> drag-and-drop can still be prevented through cancelling selectstart and
>>>> dragstart events respectively, which are spec compliant and fully
>>>> interoperable.
>>>>
>>>>
>>>> Blink componentBlink>Input
>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EInput>
>>>>
>>>> TAG reviewNone
>>>>
>>>> TAG review statusNot applicable
>>>>
>>>> Risks
>>>>
>>>>
>>>> Interoperability and Compatibility
>>>>
>>>> This feature will make Chrome fully interoperable. Chrome is currently
>>>> failing the corresponding WPT (a part of Interop 2023) while both Mozilla
>>>> and WebKit have started passing the WPT recently. There is a bit of compat
>>>> risk. We attempted it twice in the past but had to revert for two different
>>>> reasons: in 2014 we faced a text-selection regression
>>>> https://crbug.com/485892 on an app that no longer shows the problem
>>>> (because app event handling changed), then in 2018 we faced a drag-and-drop
>>>> regression https://crbug.com/878392 that is irrelevant now (because
>>>> Chrome drag-and-drop changed). For our current attempt the risk from
>>>> text-selection remains, and we need to expose the feature to be able to
>>>> assess the risk. We have added a use-counter and turned on the feature as
>>>> "experimental" on M121 to observe field data before shipping it.
>>>>
>>>>
>>>> *Gecko*: Shipped/Shipping (
>>>> https://bugzilla.mozilla.org/show_bug.cgi?id=1823663)
>>>>
>>>> *WebKit*: Shipped/Shipping (
>>>> https://bugs.webkit.org/show_bug.cgi?id=262878)
>>>>
>>>> *Web developers*: Positive (https://crbug.com/346473#c6)
>>>>
>>>> *Other signals*:
>>>>
>>>> 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?
>>>>
>>>> None
>>>>
>>>>
>>>> Debuggability
>>>>
>>>> None
>>>>
>>>>
>>>> Will this feature be supported on all six Blink platforms (Windows,
>>>> Mac, Linux, ChromeOS, Android, and Android WebView)?No
>>>>
>>>> Is this feature fully tested by web-platform-tests
>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>> ?Yes
>>>>
>>>>
>>>> https://wpt.fyi/results/uievents/mouse/mousemove_prevent_default_action.tentative.html?label=experimental&label=master&aligned
>>>>
>>>>
>>>> Flag name on chrome://flagsNone
>>>>
>>>> Finch feature nameMouseDragOnCancelledMouseMove
>>>>
>>>> Requires code in //chrome?False
>>>>
>>>> Tracking bughttps://crbug.com/346473
>>>>
>>>> MeasurementWe have added the use-counter
>>>> kMouseDragOnCancelledMouseMove to track possible regressions in the wild.
>>>>
>>>> Sample links
>>>> https://codepen.io/mustaqahmed/full/wvNYGEP
>>>>
>>>> Estimated milestones
>>>> Shipping on desktop 122
>>>> Shipping on Android 122
>>>> Shipping on WebView 122
>>>>
>>>> Anticipated spec changes
>>>>
>>>> Open questions about a feature may be a source of future web compat or
>>>> interop issues. Please list open issues (e.g. links to known github issues
>>>> in the project for the feature specification) whose resolution may
>>>> introduce web compat/interop risk (e.g., changing to naming or structure of
>>>> the API in a non-backward-compatible way).
>>>> None.
>>>>
>>>> Link to entry on the Chrome Platform Status
>>>> https://chromestatus.com/feature/5145305056280576
>>>>
>>>> This intent message was generated by Chrome Platform Status
>>>> <https://chromestatus.com/>.
>>>>
>>>> --
>>>> 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/CAB0cuO7reN%2B6Wb_N99jNm_aJY7fhhQ1ncCrh_J_%2BFCLdASm0eg%40mail.gmail.com
>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAB0cuO7reN%2B6Wb_N99jNm_aJY7fhhQ1ncCrh_J_%2BFCLdASm0eg%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/CAB0cuO4nctrQWmhyfa-0WOJ-f4FAPmjfrEjpfjadxHVo4XbYOg%40mail.gmail.com.

Reply via email to