[webkit-changes] [WebKit/WebKit] 081776: [iOS] Various tests in editing/selection/ios fail ...

Wenson Hsieh noreply at github.com
Mon Mar 13 13:48:19 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0817760f7266b906787bf6779391ff6a2fcc882c
      https://github.com/WebKit/WebKit/commit/0817760f7266b906787bf6779391ff6a2fcc882c
  Author: Wenson Hsieh <wenson_hsieh at apple.com>
  Date:   2023-03-13 (Mon, 13 Mar 2023)

  Changed paths:
    M LayoutTests/editing/selection/ios/do-not-hide-selection-in-visible-container.html
    M LayoutTests/editing/selection/ios/do-not-show-selection-in-empty-borderless-subframe.html
    M LayoutTests/editing/selection/ios/do-not-zoom-to-focused-hidden-contenteditable.html
    M LayoutTests/editing/selection/ios/hide-selection-in-hidden-contenteditable.html
    M LayoutTests/editing/selection/ios/hide-selection-in-tiny-contenteditable.html
    M LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html
    M Source/WebKit/Platform/spi/ios/UIKitSPI.h
    M Tools/WebKitTestRunner/ios/TestControllerIOS.mm

  Log Message:
  -----------
  [iOS] Various tests in editing/selection/ios fail with out-of-process keyboard enabled
https://bugs.webkit.org/show_bug.cgi?id=253800
rdar://106007933

Reviewed by Ryosuke Niwa.

Apply several mitigations to keep these iOS-specific tests passing, when OOP keyboard is enabled.
See below for more details.

* LayoutTests/editing/selection/ios/do-not-hide-selection-in-visible-container.html:
* LayoutTests/editing/selection/ios/do-not-show-selection-in-empty-borderless-subframe.html:
* LayoutTests/editing/selection/ios/do-not-zoom-to-focused-hidden-contenteditable.html:

Adjust various tests to wait for the keyboard to hide before either ending, or attempting to show
the keyboard again by focusing another element. While this is generally good test hygiene, when OOPK
is enabled, failure to ensure this causes the keyboard hiding/showing notifications to be batched
together when the keyboard is shown before it even starts to dismiss; this breaks any subsequent
attempt to wait for the keyboard to appear when focusing, which waits for the notification to be
posted.

* LayoutTests/editing/selection/ios/hide-selection-in-hidden-contenteditable.html:
* LayoutTests/editing/selection/ios/hide-selection-in-tiny-contenteditable.html:
* LayoutTests/editing/selection/ios/persist-selection-after-tapping-on-element-with-mousedown-handler.html:
* Source/WebKit/Platform/spi/ios/UIKitSPI.h:
* Tools/WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::handleKeyboardWillHideNotification):
(WTR::TestController::platformResetStateToConsistentValues):

Additionally fix logic that dismisses the keyboard (and waits for it to finish disappearing) between
tests to work with OOPK. With OOPK enabled, this will fail because we currently expect the
notification for `WillHide` to be dispatched during the call to `-resignFirstResponder`, such that
we only wait for the `DidHide` notification afterwards. However, since `WillHide` itself is delayed,
we end up skipping waiting altogether.

To fix this, we add another phase to wait for `WillHide` before waiting for `DidHide`. Note that
this is still compatible with OOPK disabled, since the flag will already be unset underneath the
call to `-resignFirstResponder`, causing us to effectively skip waiting.

Canonical link: https://commits.webkit.org/261588@main




More information about the webkit-changes mailing list