[webkit-changes] [WebKit/WebKit] cb1214: [iOS] <select> UI is not updated if options are ch...
Aditya Keerthi
noreply at github.com
Sat Dec 9 07:48:35 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cb12141f93d167c38953a9b7071439f7225d08e9
https://github.com/WebKit/WebKit/commit/cb12141f93d167c38953a9b7071439f7225d08e9
Author: Aditya Keerthi <akeerthi at apple.com>
Date: 2023-12-09 (Sat, 09 Dec 2023)
Changed paths:
A LayoutTests/fast/forms/ios/select-option-removed-update-expected.txt
A LayoutTests/fast/forms/ios/select-option-removed-update.html
M LayoutTests/resources/ui-helper.js
M Source/WebCore/html/HTMLSelectElement.cpp
M Source/WebCore/page/ChromeClient.h
M Source/WebKit/UIProcess/PageClient.h
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.messages.in
M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
M Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm
M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
M Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm
M Source/WebKit/UIProcess/ios/forms/WKFormColorControl.mm
M Source/WebKit/UIProcess/ios/forms/WKFormPeripheral.h
M Source/WebKit/UIProcess/ios/forms/WKFormPeripheralBase.h
M Source/WebKit/UIProcess/ios/forms/WKFormPeripheralBase.mm
M Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm
M Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
Log Message:
-----------
[iOS] <select> UI is not updated if options are changed
https://bugs.webkit.org/show_bug.cgi?id=235911
rdar://88292987
Reviewed by Wenson Hsieh.
On iOS, <select> UI is driven by `FocusedElementInformation`, which is sent to
the UI process each time a control is focused. However, if the control is already
focused, there are currently no mechanisms for changes to element information to
be sent to the UI process. Consequently, any changes to options while a <select>
element is focused are not reflected in the UI process.
Fix by adding a general mechanism to update `FocusedElementInformation` for
controls that are already focused, and adopt it for <select> option changes.
In the future, this mechanism could be used for updates to other control types.
* LayoutTests/fast/forms/ios/select-option-removed-update-expected.txt: Added.
* LayoutTests/fast/forms/ios/select-option-removed-update.html: Added.
* LayoutTests/resources/ui-helper.js:
* Source/WebCore/html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::setRecalcListItems):
* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::focusedSelectElementDidChangeOptions):
* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::updateFocusedElementInformation):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _updateFocusedElementInformation:]):
Ensure updates are made only if they are referencing the same element.
* Source/WebKit/UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm:
(-[WKDataListSuggestionsPickerView controlUpdateEditing]):
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::updateFocusedElementInformation):
* Source/WebKit/UIProcess/ios/forms/WKDateTimeInputControl.mm:
(-[WKDateTimePicker controlUpdateEditing]):
* Source/WebKit/UIProcess/ios/forms/WKFormColorControl.mm:
(-[WKColorPicker controlUpdateEditing]):
* Source/WebKit/UIProcess/ios/forms/WKFormPeripheral.h:
* Source/WebKit/UIProcess/ios/forms/WKFormPeripheralBase.h:
* Source/WebKit/UIProcess/ios/forms/WKFormPeripheralBase.mm:
(-[WKFormPeripheralBase updateEditing]):
* Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:
(-[WKMultipleSelectPicker controlUpdateEditing]):
(-[WKSelectSinglePicker controlUpdateEditing]):
(-[WKSelectPicker controlUpdateEditing]):
(-[WKSelectMultiplePicker controlUpdateEditing]):
* Source/WebKit/UIProcess/ios/forms/WKFormSelectPopover.mm:
(-[WKSelectPopover controlUpdateEditing]):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::focusedSelectElementDidChangeOptions):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::focusedSelectElementDidChangeOptions):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
Canonical link: https://commits.webkit.org/271805@main
More information about the webkit-changes
mailing list