Diff
Modified: trunk/Source/WTF/wtf/PlatformHave.h (294396 => 294397)
--- trunk/Source/WTF/wtf/PlatformHave.h 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WTF/wtf/PlatformHave.h 2022-05-18 15:45:53 UTC (rev 294397)
@@ -1179,3 +1179,7 @@
#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 120000) || (PLATFORM(MACCATALYST) && __IPHONE_OS_VERSION_MIN_REQUIRED < 150000)
#define HAVE_SYSTEM_HTTP_CONTENT_FILTERING 1
#endif
+
+#if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 160000)
+#define HAVE_DDRESULT_DISABLE_URL_SCHEME_CHECKING 1
+#endif
Modified: trunk/Source/WebCore/PAL/pal/cocoa/DataDetectorsCoreSoftLink.h (294396 => 294397)
--- trunk/Source/WebCore/PAL/pal/cocoa/DataDetectorsCoreSoftLink.h 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebCore/PAL/pal/cocoa/DataDetectorsCoreSoftLink.h 2022-05-18 15:45:53 UTC (rev 294397)
@@ -68,5 +68,5 @@
SOFT_LINK_FUNCTION_FOR_HEADER(PAL, DataDetectorsCore, DDScanQueryCreate, DDScanQueryRef, (CFAllocatorRef allocator), (allocator))
SOFT_LINK_FUNCTION_FOR_HEADER(PAL, DataDetectorsCore, DDScanQueryCreateFromString, DDScanQueryRef, (CFAllocatorRef allocator, CFStringRef string, CFRange range), (allocator, string, range))
SOFT_LINK_FUNCTION_FOR_HEADER(PAL, DataDetectorsCore, DDScannerCopyResultsWithOptions, CFArrayRef, (DDScannerRef scanner, DDScannerCopyResultsOptions options), (scanner, options))
-
+SOFT_LINK_FUNCTION_MAY_FAIL_FOR_HEADER(PAL, DataDetectorsCore, DDResultDisableURLSchemeChecking, void, (), ())
#endif // ENABLE(DATA_DETECTION)
Modified: trunk/Source/WebCore/PAL/pal/cocoa/DataDetectorsCoreSoftLink.mm (294396 => 294397)
--- trunk/Source/WebCore/PAL/pal/cocoa/DataDetectorsCoreSoftLink.mm 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebCore/PAL/pal/cocoa/DataDetectorsCoreSoftLink.mm 2022-05-18 15:45:53 UTC (rev 294397)
@@ -69,4 +69,5 @@
SOFT_LINK_FUNCTION_FOR_SOURCE(PAL, DataDetectorsCore, DDScanQueryCreate, DDScanQueryRef, (CFAllocatorRef allocator), (allocator))
SOFT_LINK_FUNCTION_FOR_SOURCE(PAL, DataDetectorsCore, DDScanQueryCreateFromString, DDScanQueryRef, (CFAllocatorRef allocator, CFStringRef string, CFRange range), (allocator, string, range))
SOFT_LINK_FUNCTION_FOR_SOURCE(PAL, DataDetectorsCore, DDScannerCopyResultsWithOptions, CFArrayRef, (DDScannerRef scanner, DDScannerCopyResultsOptions options), (scanner, options))
+SOFT_LINK_FUNCTION_MAY_FAIL_FOR_SOURCE_WITH_EXPORT(PAL, DataDetectorsCore, DDResultDisableURLSchemeChecking, void, (), (), PAL_EXPORT)
#endif // ENABLE(DATA_DETECTION)
Modified: trunk/Source/WebCore/PAL/pal/spi/cocoa/DataDetectorsCoreSPI.h (294396 => 294397)
--- trunk/Source/WebCore/PAL/pal/spi/cocoa/DataDetectorsCoreSPI.h 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebCore/PAL/pal/spi/cocoa/DataDetectorsCoreSPI.h 2022-05-18 15:45:53 UTC (rev 294397)
@@ -147,7 +147,7 @@
bool DDResultHasProperties(DDResultRef, CFIndex propertySet);
CFArrayRef DDResultGetSubResults(DDResultRef);
DDQueryRange DDResultGetQueryRangeForURLification(DDResultRef);
-
+void DDResultDisableURLSchemeChecking();
WTF_EXTERN_C_END
#endif
Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in (294396 => 294397)
--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in 2022-05-18 15:45:53 UTC (rev 294397)
@@ -1062,11 +1062,7 @@
(require-all
(extension "com.apple.webkit.extension.mach")
(global-name
- "com.apple.iconservices"
- "com.apple.lsd.open"
- )
- )
-)
+ "com.apple.iconservices")))
(allow iokit-open
(require-all
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (294396 => 294397)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp 2022-05-18 15:45:53 UTC (rev 294397)
@@ -167,7 +167,6 @@
#endif
#if PLATFORM(IOS_FAMILY)
- encoder << dynamicMachExtensionHandles;
encoder << dynamicIOKitExtensionHandles;
#endif
@@ -459,12 +458,6 @@
#endif
#if PLATFORM(IOS_FAMILY)
- std::optional<Vector<SandboxExtension::Handle>> dynamicMachExtensionHandles;
- decoder >> dynamicMachExtensionHandles;
- if (!dynamicMachExtensionHandles)
- return false;
- parameters.dynamicMachExtensionHandles = WTFMove(*dynamicMachExtensionHandles);
-
std::optional<Vector<SandboxExtension::Handle>> dynamicIOKitExtensionHandles;
decoder >> dynamicIOKitExtensionHandles;
if (!dynamicIOKitExtensionHandles)
Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (294396 => 294397)
--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h 2022-05-18 15:45:53 UTC (rev 294397)
@@ -208,7 +208,6 @@
#endif
#if PLATFORM(IOS_FAMILY)
- Vector<SandboxExtension::Handle> dynamicMachExtensionHandles;
Vector<SandboxExtension::Handle> dynamicIOKitExtensionHandles;
#endif
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (294396 => 294397)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2022-05-18 15:45:53 UTC (rev 294397)
@@ -2585,6 +2585,13 @@
_page->revokeAccessToAssetServices();
}
+- (void)_disableURLSchemeCheckInDataDetectors
+{
+ THROW_IF_SUSPENDED;
+ if (_page)
+ _page->disableURLSchemeCheckInDataDetectors();
+}
+
- (void)_switchFromStaticFontRegistryToUserFontRegistry
{
THROW_IF_SUSPENDED;
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (294396 => 294397)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h 2022-05-18 15:45:53 UTC (rev 294397)
@@ -407,6 +407,8 @@
- (void)_grantAccessToAssetServices WK_API_AVAILABLE(macos(12.0), ios(14.0));
- (void)_revokeAccessToAssetServices WK_API_AVAILABLE(macos(12.0), ios(14.0));
+- (void)_disableURLSchemeCheckInDataDetectors WK_API_AVAILABLE(ios(WK_IOS_TBA));
+
/*! @abstract If the WKWebView was created with _shouldAllowUserInstalledFonts = NO,
the web process will automatically use an in-process font registry, and its sandbox
will be restricted to forbid access to fontd. Otherwise, the web process will use
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (294396 => 294397)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm 2022-05-18 15:45:53 UTC (rev 294397)
@@ -852,6 +852,11 @@
process().send(Messages::WebProcess::RevokeAccessToAssetServices(), 0);
}
+void WebPageProxy::disableURLSchemeCheckInDataDetectors() const
+{
+ process().send(Messages::WebProcess::DisableURLSchemeCheckInDataDetectors(), 0);
+}
+
void WebPageProxy::switchFromStaticFontRegistryToUserFontRegistry()
{
process().send(Messages::WebProcess::SwitchFromStaticFontRegistryToUserFontRegistry(fontdMachExtensionHandle(SandboxExtension::MachBootstrapOptions::EnableMachBootstrap)), 0);
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (294396 => 294397)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2022-05-18 15:45:53 UTC (rev 294397)
@@ -287,17 +287,6 @@
m_resolvedPaths.uiProcessBundleResourcePath = resolvePathForSandboxExtension(String { [[NSBundle mainBundle] resourcePath] });
}
-#if PLATFORM(IOS_FAMILY)
-static const Vector<ASCIILiteral>& nonBrowserServices()
-{
- ASSERT(isMainRunLoop());
- static NeverDestroyed services = Vector<ASCIILiteral> {
- "com.apple.lsd.open"_s,
- };
- return services;
-}
-#endif
-
void WebProcessPool::platformInitializeWebProcess(const WebProcessProxy& process, WebProcessCreationParameters& parameters)
{
parameters.mediaMIMETypes = process.mediaMIMETypes();
@@ -398,9 +387,6 @@
#endif
#if PLATFORM(IOS_FAMILY)
- if (!isFullWebBrowser())
- parameters.dynamicMachExtensionHandles = SandboxExtension::createHandlesForMachLookup(nonBrowserServices(), std::nullopt);
-
if (WebCore::deviceHasAGXCompilerService())
parameters.dynamicIOKitExtensionHandles = SandboxExtension::createHandlesForIOKitClassExtensions(WebCore::agxCompilerClasses(), std::nullopt);
#endif
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (294396 => 294397)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2022-05-18 15:45:53 UTC (rev 294397)
@@ -1920,6 +1920,8 @@
void revokeAccessToAssetServices();
void switchFromStaticFontRegistryToUserFontRegistry();
+ void disableURLSchemeCheckInDataDetectors() const;
+
void setIsTakingSnapshotsForApplicationSuspension(bool);
void setNeedsDOMWindowResizeEvent();
Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (294396 => 294397)
--- trunk/Source/WebKit/WebProcess/WebProcess.h 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h 2022-05-18 15:45:53 UTC (rev 294397)
@@ -367,6 +367,8 @@
void revokeAccessToAssetServices();
void switchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle&& fontMachExtensionHandle);
+ void disableURLSchemeCheckInDataDetectors() const;
+
#if PLATFORM(MAC)
void updatePageScreenProperties();
#endif
Modified: trunk/Source/WebKit/WebProcess/WebProcess.messages.in (294396 => 294397)
--- trunk/Source/WebKit/WebProcess/WebProcess.messages.in 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/WebProcess/WebProcess.messages.in 2022-05-18 15:45:53 UTC (rev 294397)
@@ -168,6 +168,7 @@
SwitchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle fontMachExtensionHandle)
#if PLATFORM(COCOA)
+ DisableURLSchemeCheckInDataDetectors()
UnblockServicesRequiredByAccessibility(Vector<WebKit::SandboxExtension::Handle> handleArray)
#if ENABLE(CFPREFS_DIRECT_MODE)
NotifyPreferencesChanged(String domain, String key, std::optional<String> encodedValue)
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (294396 => 294397)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2022-05-18 14:55:24 UTC (rev 294396)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2022-05-18 15:45:53 UTC (rev 294397)
@@ -27,6 +27,7 @@
#import "WebProcess.h"
#import "AccessibilitySupportSPI.h"
+#import "DefaultWebBrowserChecks.h"
#import "LegacyCustomProtocolManager.h"
#import "LogInitialization.h"
#import "Logging.h"
@@ -93,6 +94,7 @@
#import <pal/spi/cg/CoreGraphicsSPI.h>
#import <pal/spi/cocoa/AVFoundationSPI.h>
#import <pal/spi/cocoa/CoreServicesSPI.h>
+#import <pal/spi/cocoa/DataDetectorsCoreSPI.h>
#import <pal/spi/cocoa/LaunchServicesSPI.h>
#import <pal/spi/cocoa/NSAccessibilitySPI.h>
#import <pal/spi/cocoa/QuartzCoreSPI.h>
@@ -157,6 +159,7 @@
#import <pal/cf/AudioToolboxSoftLink.h>
#import <pal/cf/VideoToolboxSoftLink.h>
#import <pal/cocoa/AVFoundationSoftLink.h>
+#import <pal/cocoa/DataDetectorsCoreSoftLink.h>
#import <pal/cocoa/MediaToolboxSoftLink.h>
#if USE(APPLE_INTERNAL_SDK)
@@ -410,7 +413,6 @@
#endif
#if PLATFORM(IOS_FAMILY)
- SandboxExtension::consumePermanently(parameters.dynamicMachExtensionHandles);
SandboxExtension::consumePermanently(parameters.dynamicIOKitExtensionHandles);
#endif
@@ -446,6 +448,9 @@
WebCore::IOSurface::setBytesPerRowAlignment(parameters.bytesPerRowIOSurfaceAlignment);
accessibilityPreferencesDidChange(parameters.accessibilityPreferences);
+
+ if (!isParentProcessAFullWebBrowser(*this))
+ disableURLSchemeCheckInDataDetectors();
}
void WebProcess::platformSetWebsiteDataStoreParameters(WebProcessDataStoreParameters&& parameters)
@@ -1164,6 +1169,14 @@
m_assetServiceV2Extension = nullptr;
}
+void WebProcess::disableURLSchemeCheckInDataDetectors() const
+{
+#if HAVE(DDRESULT_DISABLE_URL_SCHEME_CHECKING)
+ if (PAL::canLoad_DataDetectorsCore_DDResultDisableURLSchemeChecking())
+ PAL::softLinkDataDetectorsCoreDDResultDisableURLSchemeChecking();
+#endif
+}
+
void WebProcess::switchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle&& fontMachExtensionHandle)
{
SandboxExtension::consumePermanently(fontMachExtensionHandle);