[webkit-changes] [WebKit/WebKit] 20a50d: Form submission metadata should be limited to arra...

Alex Christensen noreply at github.com
Fri Mar 17 20:43:21 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 20a50d56ae71b374b35a4a30d8b26b6680c6146d
      https://github.com/WebKit/WebKit/commit/20a50d56ae71b374b35a4a30d8b26b6680c6146d
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2023-03-17 (Fri, 17 Mar 2023)

  Changed paths:
    M Source/WebKit/Shared/API/APIObject.h
    M Source/WebKit/Shared/Cocoa/APIObject.mm
    M Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp
    M Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h
    M Source/WebKit/UIProcess/API/C/WKContextConfigurationRef.cpp
    M Source/WebKit/UIProcess/API/C/WKContextConfigurationRef.h
    M Source/WebKit/UIProcess/API/Cocoa/WKProcessGroup.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm
    M Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
    M Source/WebKit/UIProcess/WebProcessPool.h
    M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
    M Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegate.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegatePlugIn.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKInputDelegate.mm
    M Tools/TestWebKitAPI/WKWebViewConfigurationExtras.h
    M Tools/TestWebKitAPI/WKWebViewConfigurationExtras.mm

  Log Message:
  -----------
  Form submission metadata should be limited to arrays, dictionaries, strings, data, and numbers
https://bugs.webkit.org/show_bug.cgi?id=253753
rdar://106585542

Reviewed by Chris Dumez.

Instead of encoding any object using NSSecureCoding then decoding it and returning it to the API client,
restrict the NSObject types to NSString, NSData, NSNumber, NSArray, and NSDictionary, which we convert
to API::Object for serialization, then convert back to those types on the other side.

Also make FormClient.m_controller and FormClient.m_webView WeakObjCPtr smart pointers instead of raw pointers.

Also deprecate _WKProcessPoolConfiguration.customClassesForParameterCoder because it doesn't do anything any more.

* Source/WebKit/Shared/API/APIObject.h:
* Source/WebKit/Shared/Cocoa/APIObject.mm:
(API::Object::toNSObject):
(API::Object::fromNSObject):
* Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:
* Source/WebKit/UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCopyCustomClassesForParameterCoder):
(WKContextConfigurationSetCustomClassesForParameterCoder):
* Source/WebKit/UIProcess/API/C/WKContextConfigurationRef.h:
* Source/WebKit/UIProcess/API/Cocoa/WKProcessGroup.mm:
(-[WKProcessGroup initWithInjectedBundleURL:andCustomClassesForParameterCoder:]):
(toStringVector): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setInputDelegate:]):
* Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration customClassesForParameterCoder]):
(-[_WKProcessPoolConfiguration setCustomClassesForParameterCoder:]):
* Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitialize):
(WebKit::WebProcessPool::initializeClassesForParameterCoding): Deleted.
(WebKit::WebProcessPool::allowedClassesForParameterCoding const): Deleted.
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::elementDidFocus):
* Source/WebKit/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegate.mm:
(TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/BundleFormDelegatePlugIn.mm:
(-[BundleFormDelegatePlugInWithUserInfo webProcessPlugIn:didCreateBrowserContextController:]):
(-[BundleFormDelegatePlugInWithUserInfo _webProcessPlugInBrowserContextController:willSubmitForm:toFrame:fromFrame:withValues:]):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKProcessPoolConfiguration.mm:
(TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKInputDelegate.mm:
(-[InputDelegate _webView:willSubmitFormValues:userObject:submissionHandler:]):
(TEST):
* Tools/TestWebKitAPI/WKWebViewConfigurationExtras.h:
* Tools/TestWebKitAPI/WKWebViewConfigurationExtras.mm:
(+[WKWebViewConfiguration _test_configurationWithTestPlugInClassName:configureJSCForTesting:]):
(+[WKWebViewConfiguration _test_configurationWithTestPlugInClassName:configureJSCForTesting:andCustomParameterClasses:]): Deleted.

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




More information about the webkit-changes mailing list