Changeset 271452 in webkit
- Timestamp:
- Jan 13, 2021 1:05:36 PM (3 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 deleted
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r271451 r271452 1 2021-01-13 Fujii Hironori <Hironori.Fujii@sony.com> 2 3 Reimplement WebCore::isInWebProcess() family as cross-platform by using AuxiliaryProcessInitializationParameters.processType 4 https://bugs.webkit.org/show_bug.cgi?id=220529 5 6 Reviewed by Alex Christensen. 7 8 isInWebProcess(), isInGPUProcess() and isInNetworkProcess() can be 9 implemented as cross-platform. 10 11 * platform/RuntimeApplicationChecks.cpp: 12 (WebCore::auxiliaryProcessType): Added. 13 (WebCore::setAuxiliaryProcessType): Added. 14 (WebCore::checkAuxiliaryProcessType): Added. 15 * platform/RuntimeApplicationChecks.h: 16 (WebCore::isInWebProcess): 17 (WebCore::isInNetworkProcess): 18 (WebCore::isInGPUProcess): 19 * platform/SourcesGLib.txt: 20 * platform/cocoa/RuntimeApplicationChecksCocoa.mm: 21 (WebCore::isInWebProcess): Deleted. 22 (WebCore::isInGPUProcess): Deleted. 23 (WebCore::isInNetworkProcess): Deleted. 24 * platform/glib/RuntimeApplicationChecksGLib.cpp: Removed. 25 1 26 2021-01-13 Rob Buis <rbuis@igalia.com> 2 27 -
trunk/Source/WebCore/platform/RuntimeApplicationChecks.cpp
r239427 r271452 61 61 } 62 62 63 static Optional<AuxiliaryProcessType>& auxiliaryProcessType() 64 { 65 static Optional<AuxiliaryProcessType> auxiliaryProcessType; 66 return auxiliaryProcessType; 67 } 68 69 void setAuxiliaryProcessType(AuxiliaryProcessType type) 70 { 71 auxiliaryProcessType() = type; 72 } 73 74 bool checkAuxiliaryProcessType(AuxiliaryProcessType type) 75 { 76 auto currentType = auxiliaryProcessType(); 77 if (!currentType) 78 return false; 79 return *currentType == type; 80 } 81 63 82 } // namespace WebCore -
trunk/Source/WebCore/platform/RuntimeApplicationChecks.h
r271385 r271452 33 33 WEBCORE_EXPORT int presentingApplicationPID(); 34 34 35 #if PLATFORM(COCOA) || USE(GLIB) 36 bool isInWebProcess(); 37 bool isInGPUProcess(); 38 bool isInNetworkProcess(); 39 #else 40 inline bool isInWebProcess() { return false; } 41 inline bool isInGPUProcess() { return false; } 42 inline bool isInNetworkProcess() { return false; } 35 enum class AuxiliaryProcessType : uint8_t { 36 WebContent, 37 Network, 38 Plugin, 39 #if ENABLE(GPU_PROCESS) 40 GPU, 41 #endif 42 #if ENABLE(WEB_AUTHN) 43 WebAuthn, 44 #endif 45 }; 46 47 WEBCORE_EXPORT void setAuxiliaryProcessType(AuxiliaryProcessType); 48 WEBCORE_EXPORT bool checkAuxiliaryProcessType(AuxiliaryProcessType); 49 50 inline bool isInWebProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::WebContent); } 51 inline bool isInNetworkProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::Network); } 52 #if ENABLE(GPU_PROCESS) 53 inline bool isInGPUProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::GPU); } 43 54 #endif 44 55 -
trunk/Source/WebCore/platform/SourcesGLib.txt
r271353 r271452 28 28 platform/glib/KeyedEncoderGlib.cpp 29 29 platform/glib/LowPowerModeNotifierGLib.cpp 30 platform/glib/RuntimeApplicationChecksGLib.cpp31 30 platform/glib/SharedBufferGlib.cpp 32 31 platform/glib/UserAgentGLib.cpp -
trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm
r270587 r271452 91 91 } 92 92 93 bool isInWebProcess()94 {95 static bool mainBundleIsWebProcess = [[[NSBundle mainBundle] bundleIdentifier] hasPrefix:@"com.apple.WebKit.WebContent"];96 return mainBundleIsWebProcess;97 }98 99 bool isInGPUProcess()100 {101 static bool mainBundleIsGPUProcess = [[[NSBundle mainBundle] bundleIdentifier] hasPrefix:@"com.apple.WebKit.GPU"];102 return mainBundleIsGPUProcess;103 }104 105 bool isInNetworkProcess()106 {107 static bool mainBundleIsNetworkProcess = [[[NSBundle mainBundle] bundleIdentifier] hasPrefix:@"com.apple.WebKit.Networking"];108 return mainBundleIsNetworkProcess;109 }110 111 93 static bool applicationBundleIsEqualTo(const String& bundleIdentifierString) 112 94 { -
trunk/Source/WebKit/ChangeLog
r271448 r271452 1 2021-01-13 Fujii Hironori <Hironori.Fujii@sony.com> 2 3 Reimplement WebCore::isInWebProcess() family as cross-platform by using AuxiliaryProcessInitializationParameters.processType 4 https://bugs.webkit.org/show_bug.cgi?id=220529 5 6 Reviewed by Alex Christensen. 7 8 Replaced AuxiliaryProcess::ProcessType with WebCore::AuxiliaryProcessType. 9 10 * GPUProcess/GPUProcess.h: 11 * NetworkProcess/NetworkProcess.h: 12 * PluginProcess/PluginProcess.h: 13 * Shared/AuxiliaryProcess.cpp: 14 (WebKit::AuxiliaryProcess::initialize): 15 * Shared/AuxiliaryProcess.h: Removed ProcessType. 16 * Shared/AuxiliaryProcessMain.h: 17 (WebKit::AuxiliaryProcessMainBase::AuxiliaryProcessMainBase): 18 (WebKit::AuxiliaryProcessMain): 19 (WebKit::AuxiliaryProcessMainBase::takeInitializationParameters): Deleted. 20 * Shared/mac/AuxiliaryProcessMac.mm: 21 (WebKit::SandboxInfo::SandboxInfo): 22 (WebKit::processStorageClass): 23 (WebKit::sandboxDirectory): 24 (WebKit::applySandbox): 25 * WebAuthnProcess/WebAuthnProcess.h: 26 * WebProcess/WebProcess.h: 27 1 28 2021-01-13 John Wilander <wilander@apple.com> 2 29 -
trunk/Source/WebKit/GPUProcess/GPUProcess.h
r270720 r271452 53 53 explicit GPUProcess(AuxiliaryProcessInitializationParameters&&); 54 54 ~GPUProcess(); 55 static constexpr ProcessType processType =ProcessType::GPU;55 static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::GPU; 56 56 57 57 void removeGPUConnectionToWebProcess(GPUConnectionToWebProcess&); -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r271184 r271452 145 145 NetworkProcess(AuxiliaryProcessInitializationParameters&&); 146 146 ~NetworkProcess(); 147 static constexpr ProcessType processType =ProcessType::Network;147 static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::Network; 148 148 149 149 template <typename T> -
trunk/Source/WebKit/PluginProcess/PluginProcess.h
r240683 r271452 50 50 public: 51 51 static PluginProcess& singleton(); 52 static constexpr ProcessType processType =ProcessType::Plugin;52 static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::Plugin; 53 53 54 54 void removeWebProcessConnection(WebProcessConnection*); -
trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp
r263773 r271452 65 65 WTF::RefCountedBase::enableThreadingChecksGlobally(); 66 66 67 setAuxiliaryProcessType(parameters.processType); 68 67 69 RELEASE_ASSERT_WITH_MESSAGE(parameters.processIdentifier, "Unable to initialize child process without a WebCore process identifier"); 68 70 Process::setIdentifier(*parameters.processIdentifier); -
trunk/Source/WebKit/Shared/AuxiliaryProcess.h
r268605 r271452 30 30 #include "MessageSender.h" 31 31 #include <WebCore/ProcessIdentifier.h> 32 #include <WebCore/RuntimeApplicationChecks.h> 32 33 #include <WebCore/UserActivity.h> 33 34 #include <wtf/HashMap.h> … … 45 46 46 47 public: 47 enum class ProcessType : uint8_t {48 WebContent,49 Network,50 Plugin,51 #if ENABLE(GPU_PROCESS)52 GPU,53 #endif54 #if ENABLE(WEB_AUTHN)55 WebAuthn56 #endif57 };58 59 48 void initialize(const AuxiliaryProcessInitializationParameters&); 60 49 … … 178 167 IPC::Connection::Identifier connectionIdentifier; 179 168 HashMap<String, String> extraInitializationData; 180 AuxiliaryProcess::ProcessType processType;169 WebCore::AuxiliaryProcessType processType; 181 170 #if PLATFORM(COCOA) 182 171 OSObjectPtr<xpc_object_t> priorityBoostMessage; -
trunk/Source/WebKit/Shared/AuxiliaryProcessMain.h
r255067 r271452 40 40 virtual void platformFinalize() { } 41 41 42 AuxiliaryProcessInitializationParameters& initializationParameters() { return m_parameters; } 42 43 AuxiliaryProcessInitializationParameters&& takeInitializationParameters() { return WTFMove(m_parameters); } 43 44 … … 56 57 { 57 58 AuxiliaryProcessMainType auxiliaryMain; 59 60 auxiliaryMain.initializationParameters().processType = AuxiliaryProcessType::processType; 58 61 59 62 if (!auxiliaryMain.platformInitialize()) -
trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm
r271417 r271452 114 114 115 115 struct SandboxInfo { 116 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)116 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) 117 117 : parentDirectoryPath { parentDirectoryPath } 118 118 , directoryPath { directoryPath } … … 132 132 const SandboxParametersPtr& sandboxParameters; 133 133 const CString& header; 134 const AuxiliaryProcess::ProcessType& processType;134 const WebCore::AuxiliaryProcessType& processType; 135 135 const SandboxInitializationParameters& initializationParameters; 136 136 const String& profileOrProfilePath; … … 219 219 // These strings must match the last segment of the "com.apple.rootless.storage.<this part must match>" entry in each 220 220 // process's restricted entitlements file (ex. Configurations/Networking-OSX-restricted.entitlements). 221 constexpr const char* processStorageClass( AuxiliaryProcess::ProcessType type)221 constexpr const char* processStorageClass(WebCore::AuxiliaryProcessType type) 222 222 { 223 223 switch (type) { 224 case AuxiliaryProcess::ProcessType::WebContent:224 case WebCore::AuxiliaryProcessType::WebContent: 225 225 return "WebKitWebContentSandbox"; 226 case AuxiliaryProcess::ProcessType::Network:226 case WebCore::AuxiliaryProcessType::Network: 227 227 return "WebKitNetworkingSandbox"; 228 case AuxiliaryProcess::ProcessType::Plugin:228 case WebCore::AuxiliaryProcessType::Plugin: 229 229 return "WebKitPluginSandbox"; 230 230 #if ENABLE(GPU_PROCESS) 231 case AuxiliaryProcess::ProcessType::GPU:231 case WebCore::AuxiliaryProcessType::GPU: 232 232 return "WebKitGPUSandbox"; 233 233 #endif 234 234 #if ENABLE(WEB_AUTHN) 235 case AuxiliaryProcess::ProcessType::WebAuthn:235 case WebCore::AuxiliaryProcessType::WebAuthn: 236 236 return "WebKitWebAuthnSandbox"; 237 237 #endif … … 279 279 } 280 280 281 static String sandboxDirectory( AuxiliaryProcess::ProcessType processType, const String& parentDirectory)281 static String sandboxDirectory(WebCore::AuxiliaryProcessType processType, const String& parentDirectory) 282 282 { 283 283 StringBuilder directory; 284 284 directory.append(parentDirectory); 285 285 switch (processType) { 286 case AuxiliaryProcess::ProcessType::WebContent:286 case WebCore::AuxiliaryProcessType::WebContent: 287 287 directory.append("/com.apple.WebKit.WebContent.Sandbox"); 288 288 break; 289 case AuxiliaryProcess::ProcessType::Network:289 case WebCore::AuxiliaryProcessType::Network: 290 290 directory.append("/com.apple.WebKit.Networking.Sandbox"); 291 291 break; 292 case AuxiliaryProcess::ProcessType::Plugin:292 case WebCore::AuxiliaryProcessType::Plugin: 293 293 directory.append("/com.apple.WebKit.Plugin.Sandbox"); 294 294 break; 295 295 #if ENABLE(GPU_PROCESS) 296 case AuxiliaryProcess::ProcessType::GPU:296 case WebCore::AuxiliaryProcessType::GPU: 297 297 directory.append("/com.apple.WebKit.GPU.Sandbox"); 298 298 break; 299 299 #endif 300 300 #if ENABLE(WEB_AUTHN) 301 case AuxiliaryProcess::ProcessType::WebAuthn:301 case WebCore::AuxiliaryProcessType::WebAuthn: 302 302 directory.append("/com.apple.WebKit.WebAuthn.Sandbox"); 303 303 break; … … 582 582 // The plugin process's DARWIN_USER_TEMP_DIR and DARWIN_USER_CACHE_DIR sandbox parameters are randomized so 583 583 // so the compiled sandbox should not be cached because it won't be reused. 584 if (parameters.processType == AuxiliaryProcess::ProcessType::Plugin)584 if (parameters.processType == WebCore::AuxiliaryProcessType::Plugin) 585 585 return compileAndApplySandboxSlowCase(profileOrProfilePath, isProfilePath, sandboxInitializationParameters); 586 586 -
trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.h
r269168 r271452 50 50 explicit WebAuthnProcess(AuxiliaryProcessInitializationParameters&&); 51 51 ~WebAuthnProcess(); 52 static constexpr ProcessType processType =ProcessType::WebAuthn;52 static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::WebAuthn; 53 53 54 54 void removeWebAuthnConnectionToWebProcess(WebAuthnConnectionToWebProcess&); -
trunk/Source/WebKit/WebProcess/WebProcess.h
r271294 r271452 155 155 156 156 static WebProcess& singleton(); 157 static constexpr ProcessType processType =ProcessType::WebContent;157 static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::WebContent; 158 158 159 159 template <typename T>
Note: See TracChangeset
for help on using the changeset viewer.