- 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"