Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 674f7d1c60a7a5d386ffb4fc8e40621ecd5e0dc4
https://github.com/WebKit/WebKit/commit/674f7d1c60a7a5d386ffb4fc8e40621ecd5e0dc4
Author: Wenson Hsieh <[email protected]>
Date: 2024-02-02 (Fri, 02 Feb 2024)
Changed paths:
M Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.h
M Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.mm
M Tools/TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm
Log Message:
-----------
[iOS 17.4] Blink crashes on launch due to an unrecognized selector on
WKExtendedTextInputTraits
https://bugs.webkit.org/show_bug.cgi?id=268667
rdar://122025854
Reviewed by Tim Horton.
Maintain binary compatibility with third party apps that reach into
`WKContentView`'s internal text
input traits object, and expect it to implement all the API methods on
`UITextInputTraits`. This was
previously the case when async text input was disabled, because the internal
text input traits would
be a concrete `UITextInputTraits` instance which implements all of the optional
properties (as well
as all the properties on `UITextInputTraits_Private`).
We lost this when implementing our own `WKExtendedTextInputTraits` that
implements the new
`BEExtendedTextInputTraits` protocol from BrowserEngineKit, since this new
class only implements
the properties that we internally set in WebKit, along with the new extended
traits.
We should instead ensure binary compatibility when using
`WKExtendedTextInputTraits` by (at least)
implementing all of the optional properties on `UITextInputTraits` and
`WKExtendedTextInputTraits`,
and ensuring that they have default values that mostly* match the default
values described in
`<UIKit/UITextInputTraits.h>`.
Test: KeyboardInputTests.ImplementAllOptionalTextInputTraits
* Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.h:
* Source/WebKit/UIProcess/ios/WKExtendedTextInputTraits.mm:
(-[WKExtendedTextInputTraits init]):
(-[WKExtendedTextInputTraits setPasswordRules:]):
(-[WKExtendedTextInputTraits passwordRules]):
(-[WKExtendedTextInputTraits textContentType]):
* Tools/TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
Add a test that sanity checks all public properties on our text input traits
and verifies that the
default values are consistent with UIKit/BrowserEngineKit documentation.
* Note that this test intentionally leaves out `inlinePredictionType` and
`autocorrectionType`,
since those both have default values in WebKit that are `no`. It's unclear
if this is
intentional, but I'm leaving this behavior intact for now.
Canonical link: https://commits.webkit.org/274035@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes