Diff
Modified: trunk/Source/WebCore/PAL/ChangeLog (274373 => 274374)
--- trunk/Source/WebCore/PAL/ChangeLog 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebCore/PAL/ChangeLog 2021-03-13 00:00:59 UTC (rev 274374)
@@ -1,3 +1,12 @@
+2021-03-12 Myles C. Maxfield <mmaxfi...@apple.com>
+
+ [macOS] MobileAsset fonts are broken in Reader mode in Safari
+ https://bugs.webkit.org/show_bug.cgi?id=223062
+
+ Reviewed by Simon Fraser.
+
+ * pal/spi/cf/CoreTextSPI.h:
+
2021-03-10 Devin Rousso <drou...@apple.com>
Add plumbing for `defaultPlaybackRate` to AVKit
Modified: trunk/Source/WebCore/PAL/pal/spi/cf/CoreTextSPI.h (274373 => 274374)
--- trunk/Source/WebCore/PAL/pal/spi/cf/CoreTextSPI.h 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebCore/PAL/pal/spi/cf/CoreTextSPI.h 2021-03-13 00:00:59 UTC (rev 274374)
@@ -130,6 +130,7 @@
CTFontDescriptorRef CTFontDescriptorCreateLastResort();
CFArrayRef CTFontManagerCreateFontDescriptorsFromData(CFDataRef);
+bool CTFontManagerEnableAllUserFonts(bool postFontChangeNotification);
void CTParagraphStyleSetCompositionLanguage(CTParagraphStyleRef, CTCompositionLanguage);
Modified: trunk/Source/WebKit/ChangeLog (274373 => 274374)
--- trunk/Source/WebKit/ChangeLog 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/ChangeLog 2021-03-13 00:00:59 UTC (rev 274374)
@@ -1,3 +1,83 @@
+2021-03-12 Myles C. Maxfield <mmaxfi...@apple.com>
+
+ [macOS] MobileAsset fonts are broken in Reader mode in Safari
+ https://bugs.webkit.org/show_bug.cgi?id=223062
+
+ Reviewed by Simon Fraser.
+
+ Here is an ASCII-art description of how various kinds of installed fonts work in WebKit:
+
+ +----------------------++-----------------------------------------+-----------------------------------------+
+ | || Safari | Normal WKWebViews |
+ +======================++=========================================+=========================================+
+ | Preinstalled Fonts || Just works | Just works |
+ +----------------------++-----------------------------------------+-----------------------------------------+
+ | MobileAsset Fonts || Needs access to mobileassetd | Needs access to mobileassetd but not |
+ | || (and fontd for any subsequent requests | fontd. |
+ | || after the first MobileAsset font is | |
+ | || used) | App calls _grantAccessToAssetServices() |
+ | || | to vend the sandbox extension |
+ | || App calls _grantAccessToAssetServices() | |
+ | || to vend the sandbox extension to | And then the app needs to use |
+ | || mobileassetd | InjectedBundle to activate the fonts in |
+ | || | the web process |
+ | || Web process also needs a call to | |
+ | || CTFontManagerEnableAllUserFonts() and a | |
+ | || sandbox extension to access fontd | |
+ | || | |
+ | || After this call is made, font requests | |
+ | || go through fontd (like for normal | |
+ | || WKWebViews) | |
+ | || | |
+ | || And then the app needs to use | |
+ | || InjectedBundle to activate the fonts in | |
+ | || the web process | |
+ +----------------------++-----------------------------------------+-----------------------------------------+
+ | User-installed Fonts || Intentionally doesn't work | Needs access to fontd. |
+ | || | |
+ | || | Just works (we already vend the sandbox |
+ | || | extension upon WKWebView creation) |
+ +----------------------++-----------------------------------------+-----------------------------------------+
+
+ The part that this patch fixes is the "Web process also needs a call to CTFontManagerEnableAllUserFonts()
+ and a sandbox extension to access fontd" under MobileAsset Fonts / Safari.
+
+ From looking at this chart, it becomes clear that a new message is necessary that does:
+ 1. Adds a sandbox extension so the web process can access fontd
+ 2. Calls CTFontManagerEnableAllUserFonts() to cause platform font routines to use fontd
+
+ So that's exactly what this patch does. It adds new WKWebView SPI,
+ _switchFromStaticFontRegistryToUserFontRegistry, which does these two things.
+
+ Even when we start using fontd, that doesn't allow user-installed fonts in WebKit in Safari, because we'll still
+ continue to use kCTFontUserInstalledAttribute / kCTFontFallbackOptionAttribute, just like we do in Big Sur.
+
+ Test: WebKit.MobileAssetSandboxCheck
+
+ * UIProcess/API/C/WKPreferencesRefPrivate.h: Correct the comment.
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _switchFromStaticFontRegistryToUserFontRegistry]):
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+ * UIProcess/Cocoa/WebPageProxyCocoa.mm:
+ (WebKit::WebPageProxy::switchFromStaticFontRegistryToUserFontRegistry):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::creationParameters):
+ (WebKit::customizedReaderConfiguration): Deleted.
+ (WebKit::disableStaticFontRegistry): Deleted.
+ * UIProcess/WebPageProxy.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::~WebPage):
+ * WebProcess/WebProcess.h:
+ * WebProcess/WebProcess.messages.in:
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ (WebKit::WebProcess::switchFromStaticFontRegistryToUserFontRegistry):
+ * WebProcess/glib/WebProcessGLib.cpp:
+ (WebKit::WebProcess::switchFromStaticFontRegistryToUserFontRegistry):
+ * WebProcess/playstation/WebProcessPlayStation.cpp:
+ (WebKit::WebProcess::switchFromStaticFontRegistryToUserFontRegistry):
+ * WebProcess/win/WebProcessWin.cpp:
+ (WebKit::WebProcess::switchFromStaticFontRegistryToUserFontRegistry):
+
2021-03-12 Youenn Fablet <you...@apple.com>
Enable video capture in GPUProcess by default on iOS
Modified: trunk/Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h (274373 => 274374)
--- trunk/Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h 2021-03-13 00:00:59 UTC (rev 274374)
@@ -547,7 +547,7 @@
WK_EXPORT void WKPreferencesSetCSSOMViewScrollingAPIEnabled(WKPreferencesRef, bool);
WK_EXPORT bool WKPreferencesGetCSSOMViewScrollingAPIEnabled(WKPreferencesRef);
-// Defaults to false.
+// Defaults to true.
WK_EXPORT void WKPreferencesSetShouldAllowUserInstalledFonts(WKPreferencesRef, bool flag);
WK_EXPORT bool WKPreferencesGetShouldAllowUserInstalledFonts(WKPreferencesRef);
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (274373 => 274374)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2021-03-13 00:00:59 UTC (rev 274374)
@@ -2239,6 +2239,12 @@
_page->revokeAccessToAssetServices();
}
+- (void)_switchFromStaticFontRegistryToUserFontRegistry
+{
+ if (_page)
+ _page->switchFromStaticFontRegistryToUserFontRegistry();
+}
+
- (NSArray *)_certificateChain
{
if (WebKit::WebFrameProxy* mainFrame = _page->mainFrame())
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (274373 => 274374)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h 2021-03-13 00:00:59 UTC (rev 274374)
@@ -451,6 +451,16 @@
- (void)_grantAccessToAssetServices WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(14.0));
- (void)_revokeAccessToAssetServices WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(14.0));
+/*! @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
+ fontd to look up fonts instead of using the in-process registry, and the web
+ process's sandbox will automatically be extended to allow access to fontd. This
+ method represents a one-time, web-process-wide switch from using the in-process
+ font registry to using fontd, including granting the relevant sandbox extension.
+*/
+- (void)_switchFromStaticFontRegistryToUserFontRegistry WK_API_AVAILABLE(macos(WK_MAC_TBA));
+
@end
#if TARGET_OS_IPHONE
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (274373 => 274374)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm 2021-03-13 00:00:59 UTC (rev 274374)
@@ -642,6 +642,18 @@
process().send(Messages::WebProcess::RevokeAccessToAssetServices(), 0);
}
+void WebPageProxy::switchFromStaticFontRegistryToUserFontRegistry()
+{
+ process().send(Messages::WebProcess::SwitchFromStaticFontRegistryToUserFontRegistry(fontdMachExtensionHandle()), 0);
+}
+
+SandboxExtension::Handle WebPageProxy::fontdMachExtensionHandle()
+{
+ SandboxExtension::Handle fontMachExtensionHandle;
+ SandboxExtension::createHandleForMachLookup("com.apple.fonts"_s, WTF::nullopt, fontMachExtensionHandle);
+ return fontMachExtensionHandle;
+}
+
} // namespace WebKit
#if USE(APPLE_INTERNAL_SDK)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (274373 => 274374)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-03-13 00:00:59 UTC (rev 274374)
@@ -7758,35 +7758,6 @@
}
#endif
-#if HAVE(STATIC_FONT_REGISTRY)
-static bool customizedReaderConfiguration()
-{
- auto configuration = adoptCF(CFPreferencesCopyAppValue(CFSTR("ReaderConfiguration"), kCFPreferencesCurrentApplication));
- if (!configuration || CFGetTypeID(configuration.get()) != CFDictionaryGetTypeID())
- return false;
- auto fontFamilyNameForLanguageTag = CFDictionaryGetValue(static_cast<CFDictionaryRef>(configuration.get()), CFSTR("fontFamilyNameForLanguageTag"));
- if (!fontFamilyNameForLanguageTag || CFGetTypeID(fontFamilyNameForLanguageTag) != CFDictionaryGetTypeID())
- return false;
- auto fontFamilyNameForLanguageTagDictionary = static_cast<CFDictionaryRef>(fontFamilyNameForLanguageTag);
- auto count = CFDictionaryGetCount(fontFamilyNameForLanguageTagDictionary);
- Vector<CFTypeRef> fontFamilyValues(count);
- CFDictionaryGetKeysAndValues(fontFamilyNameForLanguageTagDictionary, nullptr, fontFamilyValues.data());
-
- for (auto font : fontFamilyValues) {
- if (!font || CFGetTypeID(font) != CFStringGetTypeID())
- continue;
- if (String(static_cast<CFStringRef>(font)) != "System")
- return true;
- }
- return false;
-}
-
-static bool disableStaticFontRegistry()
-{
- return CFPreferencesGetAppBooleanValue(CFSTR("WebKitDisableStaticFontRegistry"), kCFPreferencesCurrentApplication, nullptr);
-}
-#endif // HAVE(STATIC_FONT_REGISTRY)
-
WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& process, DrawingAreaProxy& drawingArea, RefPtr<API::WebsitePolicies>&& websitePolicies)
{
WebPageCreationParameters parameters;
@@ -7892,13 +7863,8 @@
}
#endif
#if HAVE(STATIC_FONT_REGISTRY)
- if (disableStaticFontRegistry()
- || preferences().shouldAllowUserInstalledFonts()
- || (WebCore::MacApplication::isSafari() && customizedReaderConfiguration())) {
- SandboxExtension::Handle fontMachExtensionHandle;
- SandboxExtension::createHandleForMachLookup("com.apple.fonts"_s, WTF::nullopt, fontMachExtensionHandle);
- parameters.fontMachExtensionHandle = WTFMove(fontMachExtensionHandle);
- }
+ if (preferences().shouldAllowUserInstalledFonts())
+ parameters.fontMachExtensionHandle = fontdMachExtensionHandle();
#endif
#if HAVE(APP_ACCENT_COLORS)
parameters.accentColor = pageClient().accentColor();
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (274373 => 274374)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-03-13 00:00:59 UTC (rev 274374)
@@ -1776,6 +1776,7 @@
void grantAccessToAssetServices();
void revokeAccessToAssetServices();
+ void switchFromStaticFontRegistryToUserFontRegistry();
#if PLATFORM(COCOA)
void grantAccessToPreferenceService();
@@ -2414,6 +2415,8 @@
static SandboxExtension::HandleArray createNetworkExtensionsSandboxExtensions(WebProcessProxy&);
+ static SandboxExtension::Handle fontdMachExtensionHandle();
+
const Identifier m_identifier;
WebCore::PageIdentifier m_webPageID;
WeakPtr<PageClient> m_pageClient;
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (274373 => 274374)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2021-03-13 00:00:59 UTC (rev 274374)
@@ -1013,7 +1013,7 @@
completionHandler(WTF::nullopt);
}
#endif
-
+
#if HAVE(STATIC_FONT_REGISTRY)
if (m_fontExtension)
m_fontExtension->revoke();
Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (274373 => 274374)
--- trunk/Source/WebKit/WebProcess/WebProcess.h 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h 2021-03-13 00:00:59 UTC (rev 274374)
@@ -341,6 +341,7 @@
void grantAccessToAssetServices(WebKit::SandboxExtension::Handle&& mobileAssetV2Handle);
void revokeAccessToAssetServices();
+ void switchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle&& fontMachExtensionHandle);
#if PLATFORM(MAC)
void updatePageScreenProperties();
@@ -701,6 +702,7 @@
#endif
RefPtr<SandboxExtension> m_assetServiceV2Extension;
+ RefPtr<SandboxExtension> m_fontMachExtension;
#if PLATFORM(COCOA)
HashCountedSet<String> m_pendingPasteboardWriteCounts;
Modified: trunk/Source/WebKit/WebProcess/WebProcess.messages.in (274373 => 274374)
--- trunk/Source/WebKit/WebProcess/WebProcess.messages.in 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/WebProcess/WebProcess.messages.in 2021-03-13 00:00:59 UTC (rev 274374)
@@ -168,6 +168,7 @@
GrantAccessToAssetServices(WebKit::SandboxExtension::Handle mobileAssetV2Handle)
RevokeAccessToAssetServices()
+ SwitchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle fontMachExtensionHandle)
#if PLATFORM(COCOA)
UnblockServicesRequiredByAccessibility(WebKit::SandboxExtension::HandleArray handleArray)
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (274373 => 274374)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2021-03-13 00:00:59 UTC (rev 274374)
@@ -135,6 +135,7 @@
#import "WebSwitchingGPUClient.h"
#import <WebCore/GraphicsContextGLOpenGLManager.h>
#import <WebCore/ScrollbarThemeMac.h>
+#import <pal/spi/cf/CoreTextSPI.h>
#import <pal/spi/mac/HIServicesSPI.h>
#import <pal/spi/mac/NSScrollerImpSPI.h>
#endif
@@ -1160,6 +1161,17 @@
m_assetServiceV2Extension = nullptr;
}
+void WebProcess::switchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle&& fontMachExtensionHandle)
+{
+ if (m_fontMachExtension)
+ return;
+ m_fontMachExtension = SandboxExtension::create(WTFMove(fontMachExtensionHandle));
+ m_fontMachExtension->consume();
+#if HAVE(STATIC_FONT_REGISTRY)
+ CTFontManagerEnableAllUserFonts(true);
+#endif
+}
+
void WebProcess::setScreenProperties(const ScreenProperties& properties)
{
WebCore::setScreenProperties(properties);
Modified: trunk/Source/WebKit/WebProcess/glib/WebProcessGLib.cpp (274373 => 274374)
--- trunk/Source/WebKit/WebProcess/glib/WebProcessGLib.cpp 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/WebProcess/glib/WebProcessGLib.cpp 2021-03-13 00:00:59 UTC (rev 274374)
@@ -136,4 +136,8 @@
{
}
+void WebProcess::switchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle&&)
+{
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit/WebProcess/playstation/WebProcessPlayStation.cpp (274373 => 274374)
--- trunk/Source/WebKit/WebProcess/playstation/WebProcessPlayStation.cpp 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/WebProcess/playstation/WebProcessPlayStation.cpp 2021-03-13 00:00:59 UTC (rev 274374)
@@ -52,4 +52,8 @@
{
}
+void WebProcess::switchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle&&)
+{
+}
+
} // namespace WebKit
Modified: trunk/Source/WebKit/WebProcess/win/WebProcessWin.cpp (274373 => 274374)
--- trunk/Source/WebKit/WebProcess/win/WebProcessWin.cpp 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Source/WebKit/WebProcess/win/WebProcessWin.cpp 2021-03-13 00:00:59 UTC (rev 274374)
@@ -59,4 +59,8 @@
{
}
+void WebProcess::switchFromStaticFontRegistryToUserFontRegistry(WebKit::SandboxExtension::Handle&&)
+{
+}
+
} // namespace WebKit
Modified: trunk/Tools/ChangeLog (274373 => 274374)
--- trunk/Tools/ChangeLog 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Tools/ChangeLog 2021-03-13 00:00:59 UTC (rev 274374)
@@ -1,3 +1,14 @@
+2021-03-12 Myles C. Maxfield <mmaxfi...@apple.com>
+
+ [macOS] MobileAsset fonts are broken in Reader mode in Safari
+ https://bugs.webkit.org/show_bug.cgi?id=223062
+
+ Reviewed by Simon Fraser.
+
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/WebKit/FontRegistrySandboxCheck.mm: Copied from Source/WebKit/WebProcess/playstation/WebProcessPlayStation.cpp.
+ (TEST):
+
2021-03-12 Youenn Fablet <you...@apple.com>
Enable video capture in GPUProcess by default on iOS
Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (274373 => 274374)
--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2021-03-12 23:52:47 UTC (rev 274373)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2021-03-13 00:00:59 UTC (rev 274374)
@@ -111,6 +111,7 @@
1C734B5320788C4800F430EA /* SystemColors.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C734B5220788C4800F430EA /* SystemColors.mm */; };
1C79201C234BDD9B001EAF23 /* CopyRTF.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C79201B234BDD9B001EAF23 /* CopyRTF.mm */; };
1C7FEB20207C0F2E00D23278 /* BackgroundColor.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C7FEB1F207C0F2D00D23278 /* BackgroundColor.mm */; };
+ 1C81802725FB09E200608B3E /* FontRegistrySandboxCheck.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C81802625FB09E200608B3E /* FontRegistrySandboxCheck.mm */; };
1C90420C2326E03C00BEF91E /* SelectionByWord.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1C90420B2326E03C00BEF91E /* SelectionByWord.mm */; };
1C9EB8411E380DA1005C6442 /* ComplexTextController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C9EB8401E380DA1005C6442 /* ComplexTextController.cpp */; };
1CACADA1230620AE0007D54C /* WKWebViewOpaque.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CACADA0230620AD0007D54C /* WKWebViewOpaque.mm */; };
@@ -1814,6 +1815,7 @@
1C734B5220788C4800F430EA /* SystemColors.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SystemColors.mm; sourceTree = "<group>"; };
1C79201B234BDD9B001EAF23 /* CopyRTF.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CopyRTF.mm; sourceTree = "<group>"; };
1C7FEB1F207C0F2D00D23278 /* BackgroundColor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BackgroundColor.mm; sourceTree = "<group>"; };
+ 1C81802625FB09E200608B3E /* FontRegistrySandboxCheck.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FontRegistrySandboxCheck.mm; sourceTree = "<group>"; };
1C90420B2326E03C00BEF91E /* SelectionByWord.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SelectionByWord.mm; sourceTree = "<group>"; };
1C9EB8401E380DA1005C6442 /* ComplexTextController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComplexTextController.cpp; sourceTree = "<group>"; };
1CACADA0230620AD0007D54C /* WKWebViewOpaque.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewOpaque.mm; sourceTree = "<group>"; };
@@ -3217,6 +3219,7 @@
C15CBB2F23F1FF1A00300CC7 /* BacklightLevelNotification.mm */,
C1692DC923D10DAE006E88F7 /* Battery.mm */,
C13D82D82416F13200A62793 /* EnableAccessibility.mm */,
+ 1C81802625FB09E200608B3E /* FontRegistrySandboxCheck.mm */,
E394AE6E23F2303E005B4936 /* GrantAccessToMobileAssets.mm */,
E34A6D182412DE390012AB6E /* GrantAccessToPreferencesService.mm */,
E35B908123F60DD0000011FF /* LocalizedDeviceModel.mm */,
@@ -5317,6 +5320,7 @@
F4BC0B142146C849002A0478 /* FocusPreservationTests.mm in Sources */,
2E92B8FA2164A0C1005B64F0 /* FontAttributes.mm in Sources */,
F456AB1C213EDBA300CB2CEF /* FontManagerTests.mm in Sources */,
+ 1C81802725FB09E200608B3E /* FontRegistrySandboxCheck.mm in Sources */,
1CF59AE321E68932006E37EC /* ForceLightAppearanceInBundle.mm in Sources */,
7CCE7EF51A411AE600447C4C /* ForceRepaint.cpp in Sources */,
F4FA282A24CD012700618A46 /* FormValidation.mm in Sources */,
Copied: trunk/Tools/TestWebKitAPI/Tests/WebKit/FontRegistrySandboxCheck.mm (from rev 274373, trunk/Source/WebKit/WebProcess/playstation/WebProcessPlayStation.cpp) (0 => 274374)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit/FontRegistrySandboxCheck.mm (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/FontRegistrySandboxCheck.mm 2021-03-13 00:00:59 UTC (rev 274374)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+
+#if WK_HAVE_C_SPI
+
+#import "PlatformUtilities.h"
+#import "TestWKWebView.h"
+#import <WebKit/WKPreferencesPrivate.h>
+#import <WebKit/WKWebViewPrivate.h>
+
+TEST(WebKit, FontdSandboxCheck)
+{
+ auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]);
+ configuration.get().preferences._shouldAllowUserInstalledFonts = NO;
+ auto context = adoptWK(TestWebKitAPI::Util::createContextForInjectedBundleTest("InternalsInjectedBundleTest"));
+ configuration.get().processPool = (WKProcessPool *)context.get();
+ auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 300, 300) configuration:configuration.get() addToWindow:YES]);
+
+ auto sandboxAccess = [&] {
+ return [webView stringByEvaluatingJavaScript:@"window.internals.hasSandboxMachLookupAccessToXPCServiceName('com.apple.WebKit.WebContent', 'com.apple.fonts')"].boolValue;
+ };
+
+#if HAVE(STATIC_FONT_REGISTRY)
+ ASSERT_FALSE(sandboxAccess());
+#endif
+
+ [webView _switchFromStaticFontRegistryToUserFontRegistry];
+
+ ASSERT_TRUE(sandboxAccess());
+}
+
+#endif // WK_HAVE_C_SPI