Bug 190223 - radio / checkbox inputs should fire "click, input, change" events in order when clicked
Summary: radio / checkbox inputs should fire "click, input, change" events in order wh...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: DOM (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Chris Dumez
URL:
Keywords: InRadar
Depends on: 190252
Blocks: 190891
  Show dependency treegraph
 
Reported: 2018-10-02 15:42 PDT by Chris Dumez
Modified: 2018-10-26 19:52 PDT (History)
9 users (show)

See Also:


Attachments
Patch (16.11 KB, patch)
2018-10-02 15:49 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Dumez 2018-10-02 15:42:05 PDT
radio / checkbox inputs should fire "click, input, change" events in order when clicked:
- https://html.spec.whatwg.org/#radio-button-state-(type=radio)
- https://html.spec.whatwg.org/#checkbox-state-(type=checkbox)

Gecko and Blink already behave this way. However, WebKit has the following issues:
- the input event is not fired
- the click event is fired after the change event
Comment 1 Chris Dumez 2018-10-02 15:49:00 PDT
Created attachment 351448 [details]
Patch
Comment 2 WebKit Commit Bot 2018-10-02 17:28:29 PDT
Comment on attachment 351448 [details]
Patch

Clearing flags on attachment: 351448

Committed r236779: <https://trac.webkit.org/changeset/236779>
Comment 3 WebKit Commit Bot 2018-10-02 17:28:30 PDT
All reviewed patches have been landed.  Closing bug.
Comment 4 Radar WebKit Bug Importer 2018-10-02 17:29:31 PDT
<rdar://problem/44959765>
Comment 5 Darin Adler 2018-10-02 17:32:11 PDT
Comment on attachment 351448 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=351448&action=review

> Source/WebCore/html/BaseCheckableInputType.cpp:132
> +    element()->setTextAsOfLastFormControlChangeEvent(String());
> +    element()->dispatchInputEvent();
> +    element()->dispatchFormControlChangeEvent();

Seems like there is a null check missing here. What guarantees that detachFromElement() won’t be called as a result of dispatching the input event?
Comment 6 Chris Dumez 2018-10-03 09:45:42 PDT
Comment on attachment 351448 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=351448&action=review

>> Source/WebCore/html/BaseCheckableInputType.cpp:132
>> +    element()->dispatchFormControlChangeEvent();
> 
> Seems like there is a null check missing here. What guarantees that detachFromElement() won’t be called as a result of dispatching the input event?

You are right. I will follow-up.