Bug 190223

Summary: radio / checkbox inputs should fire "click, input, change" events in order when clicked
Product: WebKit Reporter: Chris Dumez <cdumez>
Component: DOMAssignee: Chris Dumez <cdumez>
Status: RESOLVED FIXED    
Severity: Normal CC: achristensen, cdumez, commit-queue, darin, ggaren, rniwa, sam, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 190252    
Bug Blocks: 190891    
Attachments:
Description Flags
Patch none

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.