Diff
Modified: trunk/Source/WebCore/ChangeLog (271451 => 271452)
--- trunk/Source/WebCore/ChangeLog 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebCore/ChangeLog 2021-01-13 21:05:36 UTC (rev 271452)
@@ -1,3 +1,28 @@
+2021-01-13 Fujii Hironori <[email protected]>
+
+ Reimplement WebCore::isInWebProcess() family as cross-platform by using AuxiliaryProcessInitializationParameters.processType
+ https://bugs.webkit.org/show_bug.cgi?id=220529
+
+ Reviewed by Alex Christensen.
+
+ isInWebProcess(), isInGPUProcess() and isInNetworkProcess() can be
+ implemented as cross-platform.
+
+ * platform/RuntimeApplicationChecks.cpp:
+ (WebCore::auxiliaryProcessType): Added.
+ (WebCore::setAuxiliaryProcessType): Added.
+ (WebCore::checkAuxiliaryProcessType): Added.
+ * platform/RuntimeApplicationChecks.h:
+ (WebCore::isInWebProcess):
+ (WebCore::isInNetworkProcess):
+ (WebCore::isInGPUProcess):
+ * platform/SourcesGLib.txt:
+ * platform/cocoa/RuntimeApplicationChecksCocoa.mm:
+ (WebCore::isInWebProcess): Deleted.
+ (WebCore::isInGPUProcess): Deleted.
+ (WebCore::isInNetworkProcess): Deleted.
+ * platform/glib/RuntimeApplicationChecksGLib.cpp: Removed.
+
2021-01-13 Rob Buis <[email protected]>
Null check selector.argumentList()
Modified: trunk/Source/WebCore/platform/RuntimeApplicationChecks.cpp (271451 => 271452)
--- trunk/Source/WebCore/platform/RuntimeApplicationChecks.cpp 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebCore/platform/RuntimeApplicationChecks.cpp 2021-01-13 21:05:36 UTC (rev 271452)
@@ -60,4 +60,23 @@
presentingApplicationPIDOverride() = pid;
}
+static Optional<AuxiliaryProcessType>& auxiliaryProcessType()
+{
+ static Optional<AuxiliaryProcessType> auxiliaryProcessType;
+ return auxiliaryProcessType;
+}
+
+void setAuxiliaryProcessType(AuxiliaryProcessType type)
+{
+ auxiliaryProcessType() = type;
+}
+
+bool checkAuxiliaryProcessType(AuxiliaryProcessType type)
+{
+ auto currentType = auxiliaryProcessType();
+ if (!currentType)
+ return false;
+ return *currentType == type;
+}
+
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/RuntimeApplicationChecks.h (271451 => 271452)
--- trunk/Source/WebCore/platform/RuntimeApplicationChecks.h 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebCore/platform/RuntimeApplicationChecks.h 2021-01-13 21:05:36 UTC (rev 271452)
@@ -32,16 +32,27 @@
WEBCORE_EXPORT void setPresentingApplicationPID(int);
WEBCORE_EXPORT int presentingApplicationPID();
-#if PLATFORM(COCOA) || USE(GLIB)
-bool isInWebProcess();
-bool isInGPUProcess();
-bool isInNetworkProcess();
-#else
-inline bool isInWebProcess() { return false; }
-inline bool isInGPUProcess() { return false; }
-inline bool isInNetworkProcess() { return false; }
+enum class AuxiliaryProcessType : uint8_t {
+ WebContent,
+ Network,
+ Plugin,
+#if ENABLE(GPU_PROCESS)
+ GPU,
#endif
+#if ENABLE(WEB_AUTHN)
+ WebAuthn,
+#endif
+};
+WEBCORE_EXPORT void setAuxiliaryProcessType(AuxiliaryProcessType);
+WEBCORE_EXPORT bool checkAuxiliaryProcessType(AuxiliaryProcessType);
+
+inline bool isInWebProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::WebContent); }
+inline bool isInNetworkProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::Network); }
+#if ENABLE(GPU_PROCESS)
+inline bool isInGPUProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::GPU); }
+#endif
+
#if PLATFORM(COCOA)
WEBCORE_EXPORT void setApplicationBundleIdentifier(const String&);
WEBCORE_EXPORT void setApplicationBundleIdentifierOverride(const String&);
Modified: trunk/Source/WebCore/platform/SourcesGLib.txt (271451 => 271452)
--- trunk/Source/WebCore/platform/SourcesGLib.txt 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebCore/platform/SourcesGLib.txt 2021-01-13 21:05:36 UTC (rev 271452)
@@ -27,7 +27,6 @@
platform/glib/KeyedDecoderGlib.cpp
platform/glib/KeyedEncoderGlib.cpp
platform/glib/LowPowerModeNotifierGLib.cpp
-platform/glib/RuntimeApplicationChecksGLib.cpp
platform/glib/SharedBufferGlib.cpp
platform/glib/UserAgentGLib.cpp
Modified: trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm (271451 => 271452)
--- trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm 2021-01-13 21:05:36 UTC (rev 271452)
@@ -90,24 +90,6 @@
#endif
}
-bool isInWebProcess()
-{
- static bool mainBundleIsWebProcess = [[[NSBundle mainBundle] bundleIdentifier] hasPrefix:@"com.apple.WebKit.WebContent"];
- return mainBundleIsWebProcess;
-}
-
-bool isInGPUProcess()
-{
- static bool mainBundleIsGPUProcess = [[[NSBundle mainBundle] bundleIdentifier] hasPrefix:@"com.apple.WebKit.GPU"];
- return mainBundleIsGPUProcess;
-}
-
-bool isInNetworkProcess()
-{
- static bool mainBundleIsNetworkProcess = [[[NSBundle mainBundle] bundleIdentifier] hasPrefix:@"com.apple.WebKit.Networking"];
- return mainBundleIsNetworkProcess;
-}
-
static bool applicationBundleIsEqualTo(const String& bundleIdentifierString)
{
return applicationBundleIdentifier() == bundleIdentifierString;
Deleted: trunk/Source/WebCore/platform/glib/RuntimeApplicationChecksGLib.cpp (271451 => 271452)
--- trunk/Source/WebCore/platform/glib/RuntimeApplicationChecksGLib.cpp 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebCore/platform/glib/RuntimeApplicationChecksGLib.cpp 2021-01-13 21:05:36 UTC (rev 271452)
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2021 Igalia S.L.
- *
- * 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 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 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.
- */
-
-#include "config.h"
-#include "RuntimeApplicationChecks.h"
-
-#include <mutex>
-#include <wtf/glib/GLibUtilities.h>
-
-namespace WebCore {
-
-#if PLATFORM(GTK)
-static const CString webProcessName = "WebKitWebProcess";
-static const CString networkProcessName = "WebKitNetworkProcess";
-#elif PLATFORM(WPE)
-static const CString webProcessName = "WPEWebProcess";
-static const CString networkProcessName = "WPENetworkProcess";
-#endif
-
-bool isInWebProcess()
-{
- static bool isWebProcess;
- static std::once_flag onceFlag;
- std::call_once(onceFlag, [] {
- isWebProcess = getCurrentExecutableName() == webProcessName;
- });
- return isWebProcess;
-}
-
-bool isInNetworkProcess()
-{
- static bool isNetworkProcess;
- static std::once_flag onceFlag;
- std::call_once(onceFlag, [] {
- isNetworkProcess = getCurrentExecutableName() == networkProcessName;
- });
- return isNetworkProcess;
-}
-
-} // namespace WebCore
Modified: trunk/Source/WebKit/ChangeLog (271451 => 271452)
--- trunk/Source/WebKit/ChangeLog 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/ChangeLog 2021-01-13 21:05:36 UTC (rev 271452)
@@ -1,3 +1,30 @@
+2021-01-13 Fujii Hironori <[email protected]>
+
+ Reimplement WebCore::isInWebProcess() family as cross-platform by using AuxiliaryProcessInitializationParameters.processType
+ https://bugs.webkit.org/show_bug.cgi?id=220529
+
+ Reviewed by Alex Christensen.
+
+ Replaced AuxiliaryProcess::ProcessType with WebCore::AuxiliaryProcessType.
+
+ * GPUProcess/GPUProcess.h:
+ * NetworkProcess/NetworkProcess.h:
+ * PluginProcess/PluginProcess.h:
+ * Shared/AuxiliaryProcess.cpp:
+ (WebKit::AuxiliaryProcess::initialize):
+ * Shared/AuxiliaryProcess.h: Removed ProcessType.
+ * Shared/AuxiliaryProcessMain.h:
+ (WebKit::AuxiliaryProcessMainBase::AuxiliaryProcessMainBase):
+ (WebKit::AuxiliaryProcessMain):
+ (WebKit::AuxiliaryProcessMainBase::takeInitializationParameters): Deleted.
+ * Shared/mac/AuxiliaryProcessMac.mm:
+ (WebKit::SandboxInfo::SandboxInfo):
+ (WebKit::processStorageClass):
+ (WebKit::sandboxDirectory):
+ (WebKit::applySandbox):
+ * WebAuthnProcess/WebAuthnProcess.h:
+ * WebProcess/WebProcess.h:
+
2021-01-13 John Wilander <[email protected]>
PCM: Experimental debug mode needs to be read from defaults differently on iOS
Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.h (271451 => 271452)
--- trunk/Source/WebKit/GPUProcess/GPUProcess.h 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.h 2021-01-13 21:05:36 UTC (rev 271452)
@@ -52,7 +52,7 @@
public:
explicit GPUProcess(AuxiliaryProcessInitializationParameters&&);
~GPUProcess();
- static constexpr ProcessType processType = ProcessType::GPU;
+ static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::GPU;
void removeGPUConnectionToWebProcess(GPUConnectionToWebProcess&);
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (271451 => 271452)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h 2021-01-13 21:05:36 UTC (rev 271452)
@@ -144,7 +144,7 @@
NetworkProcess(AuxiliaryProcessInitializationParameters&&);
~NetworkProcess();
- static constexpr ProcessType processType = ProcessType::Network;
+ static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::Network;
template <typename T>
T* supplement()
Modified: trunk/Source/WebKit/PluginProcess/PluginProcess.h (271451 => 271452)
--- trunk/Source/WebKit/PluginProcess/PluginProcess.h 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/PluginProcess/PluginProcess.h 2021-01-13 21:05:36 UTC (rev 271452)
@@ -49,7 +49,7 @@
public:
static PluginProcess& singleton();
- static constexpr ProcessType processType = ProcessType::Plugin;
+ static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::Plugin;
void removeWebProcessConnection(WebProcessConnection*);
Modified: trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp (271451 => 271452)
--- trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp 2021-01-13 21:05:36 UTC (rev 271452)
@@ -64,6 +64,8 @@
{
WTF::RefCountedBase::enableThreadingChecksGlobally();
+ setAuxiliaryProcessType(parameters.processType);
+
RELEASE_ASSERT_WITH_MESSAGE(parameters.processIdentifier, "Unable to initialize child process without a WebCore process identifier");
Process::setIdentifier(*parameters.processIdentifier);
Modified: trunk/Source/WebKit/Shared/AuxiliaryProcess.h (271451 => 271452)
--- trunk/Source/WebKit/Shared/AuxiliaryProcess.h 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/Shared/AuxiliaryProcess.h 2021-01-13 21:05:36 UTC (rev 271452)
@@ -29,6 +29,7 @@
#include "MessageReceiverMap.h"
#include "MessageSender.h"
#include <WebCore/ProcessIdentifier.h>
+#include <WebCore/RuntimeApplicationChecks.h>
#include <WebCore/UserActivity.h>
#include <wtf/HashMap.h>
#include <wtf/RunLoop.h>
@@ -44,18 +45,6 @@
WTF_MAKE_NONCOPYABLE(AuxiliaryProcess);
public:
- enum class ProcessType : uint8_t {
- WebContent,
- Network,
- Plugin,
-#if ENABLE(GPU_PROCESS)
- GPU,
-#endif
-#if ENABLE(WEB_AUTHN)
- WebAuthn
-#endif
- };
-
void initialize(const AuxiliaryProcessInitializationParameters&);
// disable and enable termination of the process. when disableTermination is called, the
@@ -177,7 +166,7 @@
Optional<WebCore::ProcessIdentifier> processIdentifier;
IPC::Connection::Identifier connectionIdentifier;
HashMap<String, String> extraInitializationData;
- AuxiliaryProcess::ProcessType processType;
+ WebCore::AuxiliaryProcessType processType;
#if PLATFORM(COCOA)
OSObjectPtr<xpc_object_t> priorityBoostMessage;
#endif
Modified: trunk/Source/WebKit/Shared/AuxiliaryProcessMain.h (271451 => 271452)
--- trunk/Source/WebKit/Shared/AuxiliaryProcessMain.h 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/Shared/AuxiliaryProcessMain.h 2021-01-13 21:05:36 UTC (rev 271452)
@@ -39,6 +39,7 @@
virtual bool parseCommandLine(int argc, char** argv);
virtual void platformFinalize() { }
+ AuxiliaryProcessInitializationParameters& initializationParameters() { return m_parameters; }
AuxiliaryProcessInitializationParameters&& takeInitializationParameters() { return WTFMove(m_parameters); }
protected:
@@ -56,6 +57,8 @@
{
AuxiliaryProcessMainType auxiliaryMain;
+ auxiliaryMain.initializationParameters().processType = AuxiliaryProcessType::processType;
+
if (!auxiliaryMain.platformInitialize())
return EXIT_FAILURE;
Modified: trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm (271451 => 271452)
--- trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm 2021-01-13 21:05:36 UTC (rev 271452)
@@ -113,7 +113,7 @@
// byte N
struct SandboxInfo {
- SandboxInfo(const String& parentDirectoryPath, const String& directoryPath, const String& filePath, const SandboxParametersPtr& sandboxParameters, const CString& header, const AuxiliaryProcess::ProcessType& processType, const SandboxInitializationParameters& initializationParameters, const String& profileOrProfilePath, bool isProfilePath)
+ SandboxInfo(const String& parentDirectoryPath, const String& directoryPath, const String& filePath, const SandboxParametersPtr& sandboxParameters, const CString& header, const WebCore::AuxiliaryProcessType& processType, const SandboxInitializationParameters& initializationParameters, const String& profileOrProfilePath, bool isProfilePath)
: parentDirectoryPath { parentDirectoryPath }
, directoryPath { directoryPath }
, filePath { filePath }
@@ -131,7 +131,7 @@
const String& filePath;
const SandboxParametersPtr& sandboxParameters;
const CString& header;
- const AuxiliaryProcess::ProcessType& processType;
+ const WebCore::AuxiliaryProcessType& processType;
const SandboxInitializationParameters& initializationParameters;
const String& profileOrProfilePath;
const bool isProfilePath;
@@ -218,21 +218,21 @@
#if USE(APPLE_INTERNAL_SDK)
// These strings must match the last segment of the "com.apple.rootless.storage.<this part must match>" entry in each
// process's restricted entitlements file (ex. Configurations/Networking-OSX-restricted.entitlements).
-constexpr const char* processStorageClass(AuxiliaryProcess::ProcessType type)
+constexpr const char* processStorageClass(WebCore::AuxiliaryProcessType type)
{
switch (type) {
- case AuxiliaryProcess::ProcessType::WebContent:
+ case WebCore::AuxiliaryProcessType::WebContent:
return "WebKitWebContentSandbox";
- case AuxiliaryProcess::ProcessType::Network:
+ case WebCore::AuxiliaryProcessType::Network:
return "WebKitNetworkingSandbox";
- case AuxiliaryProcess::ProcessType::Plugin:
+ case WebCore::AuxiliaryProcessType::Plugin:
return "WebKitPluginSandbox";
#if ENABLE(GPU_PROCESS)
- case AuxiliaryProcess::ProcessType::GPU:
+ case WebCore::AuxiliaryProcessType::GPU:
return "WebKitGPUSandbox";
#endif
#if ENABLE(WEB_AUTHN)
- case AuxiliaryProcess::ProcessType::WebAuthn:
+ case WebCore::AuxiliaryProcessType::WebAuthn:
return "WebKitWebAuthnSandbox";
#endif
}
@@ -278,27 +278,27 @@
return resolvedPath;
}
-static String sandboxDirectory(AuxiliaryProcess::ProcessType processType, const String& parentDirectory)
+static String sandboxDirectory(WebCore::AuxiliaryProcessType processType, const String& parentDirectory)
{
StringBuilder directory;
directory.append(parentDirectory);
switch (processType) {
- case AuxiliaryProcess::ProcessType::WebContent:
+ case WebCore::AuxiliaryProcessType::WebContent:
directory.append("/com.apple.WebKit.WebContent.Sandbox");
break;
- case AuxiliaryProcess::ProcessType::Network:
+ case WebCore::AuxiliaryProcessType::Network:
directory.append("/com.apple.WebKit.Networking.Sandbox");
break;
- case AuxiliaryProcess::ProcessType::Plugin:
+ case WebCore::AuxiliaryProcessType::Plugin:
directory.append("/com.apple.WebKit.Plugin.Sandbox");
break;
#if ENABLE(GPU_PROCESS)
- case AuxiliaryProcess::ProcessType::GPU:
+ case WebCore::AuxiliaryProcessType::GPU:
directory.append("/com.apple.WebKit.GPU.Sandbox");
break;
#endif
#if ENABLE(WEB_AUTHN)
- case AuxiliaryProcess::ProcessType::WebAuthn:
+ case WebCore::AuxiliaryProcessType::WebAuthn:
directory.append("/com.apple.WebKit.WebAuthn.Sandbox");
break;
#endif
@@ -581,7 +581,7 @@
#if USE(CACHE_COMPILED_SANDBOX)
// The plugin process's DARWIN_USER_TEMP_DIR and DARWIN_USER_CACHE_DIR sandbox parameters are randomized so
// so the compiled sandbox should not be cached because it won't be reused.
- if (parameters.processType == AuxiliaryProcess::ProcessType::Plugin)
+ if (parameters.processType == WebCore::AuxiliaryProcessType::Plugin)
return compileAndApplySandboxSlowCase(profileOrProfilePath, isProfilePath, sandboxInitializationParameters);
SandboxParametersPtr sandboxParameters { sandbox_create_params() };
Modified: trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.h (271451 => 271452)
--- trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.h 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.h 2021-01-13 21:05:36 UTC (rev 271452)
@@ -49,7 +49,7 @@
public:
explicit WebAuthnProcess(AuxiliaryProcessInitializationParameters&&);
~WebAuthnProcess();
- static constexpr ProcessType processType = ProcessType::WebAuthn;
+ static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::WebAuthn;
void removeWebAuthnConnectionToWebProcess(WebAuthnConnectionToWebProcess&);
Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (271451 => 271452)
--- trunk/Source/WebKit/WebProcess/WebProcess.h 2021-01-13 21:04:12 UTC (rev 271451)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h 2021-01-13 21:05:36 UTC (rev 271452)
@@ -154,7 +154,7 @@
using SubResourceDomain = WebCore::RegistrableDomain;
static WebProcess& singleton();
- static constexpr ProcessType processType = ProcessType::WebContent;
+ static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::WebContent;
template <typename T>
T* supplement()