Title: [257875] trunk/Source
Revision
257875
Author
pvol...@apple.com
Date
2020-03-04 13:26:22 -0800 (Wed, 04 Mar 2020)

Log Message

[Cocoa] Add enable flag to disable direct mode for preferences
https://bugs.webkit.org/show_bug.cgi?id=208588

Reviewed by Brent Fulgham.

Source/WebKit:

Add an enable flag for this feature so it can be toggled, and turn it off.

No new tests, since this patch is reverting to previous behavior covered by existing tests.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
(WebKit::XPCServiceMain):
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions):
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
* WebProcess/com.apple.WebProcess.sb.in:

Source/WTF:

* wtf/PlatformEnable.h:

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (257874 => 257875)


--- trunk/Source/WTF/ChangeLog	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WTF/ChangeLog	2020-03-04 21:26:22 UTC (rev 257875)
@@ -1,3 +1,12 @@
+2020-03-04  Per Arne Vollan  <pvol...@apple.com>
+
+        [Cocoa] Add enable flag to disable direct mode for preferences
+        https://bugs.webkit.org/show_bug.cgi?id=208588
+
+        Reviewed by Brent Fulgham.
+
+        * wtf/PlatformEnable.h:
+
 2020-03-03  Megan Gardner  <megan_gard...@apple.com>
 
         Build Fix

Modified: trunk/Source/WTF/wtf/PlatformEnable.h (257874 => 257875)


--- trunk/Source/WTF/wtf/PlatformEnable.h	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WTF/wtf/PlatformEnable.h	2020-03-04 21:26:22 UTC (rev 257875)
@@ -871,3 +871,5 @@
 #if ENABLE(WEBGL2) && !ENABLE(WEBGL)
 #error "ENABLE(WEBGL2) requires ENABLE(WEBGL)"
 #endif
+
+#define ENABLE_CFPREFS_DIRECT_MODE 0

Modified: trunk/Source/WebKit/ChangeLog (257874 => 257875)


--- trunk/Source/WebKit/ChangeLog	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WebKit/ChangeLog	2020-03-04 21:26:22 UTC (rev 257875)
@@ -1,3 +1,28 @@
+2020-03-04  Per Arne Vollan  <pvol...@apple.com>
+
+        [Cocoa] Add enable flag to disable direct mode for preferences
+        https://bugs.webkit.org/show_bug.cgi?id=208588
+
+        Reviewed by Brent Fulgham.
+
+        Add an enable flag for this feature so it can be toggled, and turn it off.
+
+        No new tests, since this patch is reverting to previous behavior covered by existing tests.
+
+        * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
+        * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
+        (WebKit::XPCServiceMain):
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode const):
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.h:
+        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
+        (WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions):
+        (WebKit::WebProcessPool::platformInitializeWebProcess):
+        * WebProcess/cocoa/WebProcessCocoa.mm:
+        (WebKit::WebProcess::platformInitializeWebProcess):
+        * WebProcess/com.apple.WebProcess.sb.in:
+
 2020-03-04  Fujii Hironori  <hironori.fu...@sony.com>
 
         Unreviewed build fix for WinCairo

Modified: trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb (257874 => 257875)


--- trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb	2020-03-04 21:26:22 UTC (rev 257875)
@@ -846,7 +846,7 @@
 (allow mach-lookup
     (require-all
         (extension "com.apple.webkit.extension.mach")
-        (global-name "com.apple.iphone.axserver-systemwide" "com.apple.tccd" "com.apple.nehelper" "com.apple.nesessionmanager.content-filter" "com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI" "com.apple.diagnosticd" "com.apple.lsd.open" "com.apple.mobileassetd" "com.apple.mobileassetd.v2" "com.apple.frontboard.systemappservices" "com.apple.iconservices" "com.apple.webinspector" "com.apple.PowerManagement.control"
+        (global-name "com.apple.iphone.axserver-systemwide" "com.apple.tccd" "com.apple.nehelper" "com.apple.nesessionmanager.content-filter" "com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI" "com.apple.diagnosticd" "com.apple.lsd.open" "com.apple.mobileassetd" "com.apple.mobileassetd.v2" "com.apple.frontboard.systemappservices" "com.apple.iconservices" "com.apple.webinspector" "com.apple.PowerManagement.control" "com.apple.cfprefsd.daemon"
 
             ;;; FIXME(207716): The following should be removed when the GPU process is complete
             "com.apple.airplay.apsynccontroller.xpc" "com.apple.audio.AURemoteIOServer" "com.apple.audio.AudioComponentRegistrar"

Modified: trunk/Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm (257874 => 257875)


--- trunk/Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm	2020-03-04 21:26:22 UTC (rev 257875)
@@ -117,8 +117,10 @@
     });
 #endif
 
+#if ENABLE(CFPREFS_DIRECT_MODE)
     // Enable CF prefs direct mode to avoid connecting to the CF prefs daemon.
     _CFPrefsSetDirectModeEnabled(YES);
+#endif
 
     if (bootstrap) {
 #if PLATFORM(MAC)

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (257874 => 257875)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2020-03-04 21:26:22 UTC (rev 257875)
@@ -185,7 +185,10 @@
 #if PLATFORM(COCOA)
     // FIXME(207716): The following should be removed when the GPU process is complete.
     encoder << mediaExtensionHandles;
+#if !ENABLE(CFPREFS_DIRECT_MODE)
+    encoder << preferencesExtensionHandle;
 #endif
+#endif
 }
 
 bool WebProcessCreationParameters::decode(IPC::Decoder& decoder, WebProcessCreationParameters& parameters)
@@ -500,7 +503,15 @@
         return false;
     parameters.mediaExtensionHandles = WTFMove(*mediaExtensionHandles);
     // FIXME(207716): End region to remove.
+
+#if !ENABLE(CFPREFS_DIRECT_MODE)
+    Optional<Optional<SandboxExtension::Handle>> preferencesExtensionHandle;
+    decoder >> preferencesExtensionHandle;
+    if (!preferencesExtensionHandle)
+        return false;
+    parameters.preferencesExtensionHandle = WTFMove(*preferencesExtensionHandle);
 #endif
+#endif
 
     return true;
 }

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.h (257874 => 257875)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.h	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.h	2020-03-04 21:26:22 UTC (rev 257875)
@@ -226,7 +226,10 @@
 
 #if PLATFORM(COCOA)
     SandboxExtension::HandleArray mediaExtensionHandles; // FIXME(207716): Remove when GPU process is complete.
+#if !ENABLE(CFPREFS_DIRECT_MODE)
+    Optional<SandboxExtension::Handle> preferencesExtensionHandle;
 #endif
+#endif
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (257874 => 257875)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm	2020-03-04 21:26:22 UTC (rev 257875)
@@ -198,8 +198,10 @@
     m_resolvedPaths.containerTemporaryDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(WebProcessPool::containerTemporaryDirectory());
 #endif
 
+#if ENABLE(CFPREFS_DIRECT_MODE)
     // Start observing preference changes.
     [WKPreferenceObserver sharedInstance];
+#endif
 }
 
 #if PLATFORM(IOS)
@@ -440,6 +442,11 @@
         for (size_t i = 0, size = services.size(); i < size; ++i)
             SandboxExtension::createHandleForMachLookup(services[i], WTF::nullopt, parameters.mediaExtensionHandles[i]);
     }
+#if !ENABLE(CFPREFS_DIRECT_MODE)
+    SandboxExtension::Handle preferencesExtensionHandle;
+    SandboxExtension::createHandleForMachLookup("com.apple.cfprefsd.daemon", WTF::nullopt, preferencesExtensionHandle);
+    parameters.preferencesExtensionHandle = WTFMove(preferencesExtensionHandle);
+#endif
 }
 
 void WebProcessPool::platformInitializeNetworkProcess(NetworkProcessCreationParameters& parameters)

Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (257874 => 257875)


--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm	2020-03-04 21:26:22 UTC (rev 257875)
@@ -288,7 +288,12 @@
     // FIXME(207716): The following should be removed when the GPU process is complete.
     for (size_t i = 0, size = parameters.mediaExtensionHandles.size(); i < size; ++i)
         SandboxExtension::consumePermanently(parameters.mediaExtensionHandles[i]);
+
+#if !ENABLE(CFPREFS_DIRECT_MODE)
+    if (parameters.preferencesExtensionHandle)
+        SandboxExtension::consumePermanently(*parameters.preferencesExtensionHandle);
 #endif
+#endif
 }
 
 void WebProcess::platformSetWebsiteDataStoreParameters(WebProcessDataStoreParameters&& parameters)

Modified: trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in (257874 => 257875)


--- trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2020-03-04 21:17:31 UTC (rev 257874)
+++ trunk/Source/WebKit/WebProcess/com.apple.WebProcess.sb.in	2020-03-04 21:26:22 UTC (rev 257875)
@@ -845,6 +845,7 @@
             "com.apple.nesessionmanager"
 #endif
             "com.apple.webinspector"
+            "com.apple.cfprefsd.daemon"
 
             ;;; FIXME(207716): The following should be removed when the GPU process is complete
             "com.apple.audio.AudioComponentRegistrar" "com.apple.coremedia.endpoint.xpc" "com.apple.coremedia.endpointstream.xpc"
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to