[webkit-changes] [WebKit/WebKit] 81a368: Replace +[WKPreferences _experimentalFeatures] and...

Elliott Williams noreply at github.com
Tue Jan 10 15:18:00 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 81a368e50d6eb22af62d70a23ffa2b7d7ad3d7cc
      https://github.com/WebKit/WebKit/commit/81a368e50d6eb22af62d70a23ffa2b7d7ad3d7cc
  Author: Elliott Williams <emw at apple.com>
  Date:   2023-01-10 (Tue, 10 Jan 2023)

  Changed paths:
    M Source/WTF/Scripts/GeneratePreferences.rb
    M Source/WebKit/CMakeLists.txt
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources-output.xcfilelist
    M Source/WebKit/DerivedSources.make
    M Source/WebKit/Headers.cmake
    R Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb
    A Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesFeatures.cpp.erb
    R Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb
    M Source/WebKit/Shared/API/APIObject.h
    M Source/WebKit/Shared/API/c/WKBase.h
    M Source/WebKit/Shared/Cocoa/APIObject.mm
    M Source/WebKit/Sources.txt
    M Source/WebKit/SourcesCocoa.txt
    R Source/WebKit/UIProcess/API/APIExperimentalFeature.cpp
    R Source/WebKit/UIProcess/API/APIExperimentalFeature.h
    A Source/WebKit/UIProcess/API/APIFeature.cpp
    A Source/WebKit/UIProcess/API/APIFeature.h
    R Source/WebKit/UIProcess/API/APIInternalDebugFeature.cpp
    R Source/WebKit/UIProcess/API/APIInternalDebugFeature.h
    M Source/WebKit/UIProcess/API/C/WKAPICast.h
    R Source/WebKit/UIProcess/API/C/WKExperimentalFeature.cpp
    R Source/WebKit/UIProcess/API/C/WKExperimentalFeature.h
    A Source/WebKit/UIProcess/API/C/WKFeature.cpp
    A Source/WebKit/UIProcess/API/C/WKFeature.h
    R Source/WebKit/UIProcess/API/C/WKInternalDebugFeature.cpp
    R Source/WebKit/UIProcess/API/C/WKInternalDebugFeature.h
    M Source/WebKit/UIProcess/API/C/WKPreferences.cpp
    M Source/WebKit/UIProcess/API/C/WebKit2_C.h
    M Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.mm
    R Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeatureInternal.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKFeature.h
    A Source/WebKit/UIProcess/API/Cocoa/_WKFeature.mm
    A Source/WebKit/UIProcess/API/Cocoa/_WKFeatureInternal.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKInternalDebugFeature.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKInternalDebugFeature.mm
    R Source/WebKit/UIProcess/API/Cocoa/_WKInternalDebugFeatureInternal.h
    M Source/WebKit/UIProcess/WebPreferences.cpp
    M Source/WebKit/UIProcess/WebPreferences.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Tools/MiniBrowser/mac/AppDelegate.m
    M Tools/MiniBrowser/mac/SettingsController.m
    M Tools/MiniBrowser/win/WebKitBrowserWindow.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/CookieConsent.mm
    M Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm
    M Tools/TestWebKitAPI/Tests/WebKit/MediaSessionCoordinatorTest.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/ClipboardTests.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/FindInPageAPI.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/ImageAnalysisTests.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/Preferences.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/SiteIsolation.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewThemeColor.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebLocks.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/_WKWebAuthenticationPanel.mm
    M Tools/TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm
    M Tools/TestWebKitAPI/Tests/mac/DateInputTests.mm

  Log Message:
  -----------
  Replace +[WKPreferences _experimentalFeatures] and +[WKPreferences _internalDebugFeatures] with SPI for exposing all features
https://bugs.webkit.org/show_bug.cgi?id=250237
rdar://103648153

Reviewed by Brent Fulgham.

Add +[WKPreferences _features] and WebPreferences::features(), which
exposes the entire feature list, now that features are unified and distinguished by
status. Prepare to deprecate other ways to access the feature list from
WebKit.

Unify the internal and experimental feature classes into one class.
API::ExperimentalFeature and API::InternalDebugFeature are now
"API::Feature". In Cocoa SPI, _WKExperimentalFeature and
_WKInternalDebugFeature are now "_WKFeature", though the old classes
have been left around for compatibility.

Rename-only file changes omitted from this change list:

* Source/WTF/Scripts/GeneratePreferences.rb:
* Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesFeatures.cpp.erb:
  Renamed from Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb.
  Instead of generating separate "experimental" and "internal debug"
  vectors, it now generates one vector for WebPreferences::features().
* Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb: Removed.
* Source/WebKit/UIProcess/API/APIExperimentalFeature.h: Removed.
* Source/WebKit/UIProcess/API/APIFeature.cpp: Renamed from Source/WebKit/UIProcess/API/APIExperimentalFeature.cpp.
* Source/WebKit/UIProcess/API/APIFeature.h: Renamed from Source/WebKit/UIProcess/API/APIInternalDebugFeature.h.
* Source/WebKit/UIProcess/API/APIInternalDebugFeature.cpp: Removed.
* Source/WebKit/UIProcess/API/C/WKFeature.cpp: Renamed from Source/WebKit/UIProcess/API/C/WKExperimentalFeature.cpp.
* Source/WebKit/UIProcess/API/C/WKFeature.h: Renamed from Source/WebKit/UIProcess/API/C/WKExperimentalFeature.h.
* Source/WebKit/UIProcess/API/C/WKInternalDebugFeature.cpp: Removed.
* Source/WebKit/UIProcess/API/C/WKInternalDebugFeature.h: Removed.
* Source/WebKit/UIProcess/API/C/WKPreferences.cpp:
* Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm:
(+[WKPreferences _features]): Added.

  These methods used to be legacy ways to enable experimental features
  (before internal debug features were added). Repurpose them to work for
  *any* feature.
(-[WKPreferences _isEnabledForFeature:]):
(-[WKPreferences _setEnabled:forFeature:]):

  These are the legacy ways to access features. They should be deprecated
  in a future change, and internally they are refactored to use the above.
(+[WKPreferences _internalDebugFeatures]):
(-[WKPreferences _isEnabledForInternalDebugFeature:]):
(-[WKPreferences _setEnabled:forInternalDebugFeature:]):
(+[WKPreferences _experimentalFeatures]):
(-[WKPreferences _isEnabledForExperimentalFeature:]):
(-[WKPreferences _setEnabled:forExperimentalFeature:]):

* Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.h: Stub
  subclass of _WKFeature for binary compatibility.
* Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.mm:
(-[_WKExperimentalFeature dealloc]): Deleted.
(-[_WKExperimentalFeature description]): Deleted.
(-[_WKExperimentalFeature name]): Deleted.
(-[_WKExperimentalFeature status]): Deleted.
(-[_WKExperimentalFeature key]): Deleted.
(-[_WKExperimentalFeature details]): Deleted.
(-[_WKExperimentalFeature defaultValue]): Deleted.
(-[_WKExperimentalFeature isHidden]): Deleted.
(-[_WKExperimentalFeature _apiObject]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKFeature.h: Added.
* Source/WebKit/UIProcess/API/Cocoa/_WKFeature.mm: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeature.mm.
(-[_WKFeature _apiObject]):
* Source/WebKit/UIProcess/API/Cocoa/_WKFeatureInternal.h: Renamed from Source/WebKit/UIProcess/API/Cocoa/_WKExperimentalFeatureInternal.h.
* Source/WebKit/UIProcess/API/Cocoa/_WKInternalDebugFeature.h: Stub
  subclass of _WKFeature for binary compatibility.
* Source/WebKit/UIProcess/API/Cocoa/_WKInternalDebugFeature.mm:
(-[_WKInternalDebugFeature dealloc]): Deleted.
(-[_WKInternalDebugFeature description]): Deleted.
(-[_WKInternalDebugFeature name]): Deleted.
(-[_WKInternalDebugFeature status]): Deleted.
(-[_WKInternalDebugFeature key]): Deleted.
(-[_WKInternalDebugFeature details]): Deleted.
(-[_WKInternalDebugFeature defaultValue]): Deleted.
(-[_WKInternalDebugFeature isHidden]): Deleted.
(-[_WKInternalDebugFeature _apiObject]): Deleted.
* Source/WebKit/UIProcess/API/Cocoa/_WKInternalDebugFeatureInternal.h: Removed.

* Source/WebKit/UIProcess/WebPreferences.cpp:
(WebKit::WebPreferences::experimentalFeatures): This vector used to be
  produced by the source generator. Now, it's initialized once at runtime
  by filtering the list of features.
(WebKit::WebPreferences::internalDebugFeatures): Ditto.
* Source/WebKit/UIProcess/WebPreferences.h:

* Tools/MiniBrowser/mac/AppDelegate.m: Updated to use
  +[WKPreferences _features] and the corresponding setter/getter.
* Tools/MiniBrowser/mac/SettingsController.m: Ditto.
* Tools/MiniBrowser/win/WebKitBrowserWindow.cpp: Use updated C API.

TestWebKitAPI is largely changed over to use +[WKPreferences _features]
instead of one of the legacy interfaces. Other changes include:

* Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  This test used to turn on all "experimental" features to test whether
  some were disabled in Lockdown mode. Now, it turns on all testable and
  preview features, as those are closer to what LDM actually disables.

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




More information about the webkit-changes mailing list