[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