Changeset 271452 in webkit


Ignore:
Timestamp:
Jan 13, 2021 1:05:36 PM (3 years ago)
Author:
Fujii Hironori
Message:

Reimplement WebCore::isInWebProcess() family as cross-platform by using AuxiliaryProcessInitializationParameters.processType
https://bugs.webkit.org/show_bug.cgi?id=220529

Reviewed by Alex Christensen.

Source/WebCore:

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.

Source/WebKit:

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:
Location:
trunk/Source
Files:
1 deleted
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r271451 r271452  
     12021-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
    1262021-01-13  Rob Buis  <rbuis@igalia.com>
    227
  • trunk/Source/WebCore/platform/RuntimeApplicationChecks.cpp

    r239427 r271452  
    6161}
    6262
     63static Optional<AuxiliaryProcessType>& auxiliaryProcessType()
     64{
     65    static Optional<AuxiliaryProcessType> auxiliaryProcessType;
     66    return auxiliaryProcessType;
     67}
     68
     69void setAuxiliaryProcessType(AuxiliaryProcessType type)
     70{
     71    auxiliaryProcessType() = type;
     72}
     73
     74bool checkAuxiliaryProcessType(AuxiliaryProcessType type)
     75{
     76    auto currentType = auxiliaryProcessType();
     77    if (!currentType)
     78        return false;
     79    return *currentType == type;
     80}
     81
    6382} // namespace WebCore
  • trunk/Source/WebCore/platform/RuntimeApplicationChecks.h

    r271385 r271452  
    3333WEBCORE_EXPORT int presentingApplicationPID();
    3434
    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; }
     35enum 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
     47WEBCORE_EXPORT void setAuxiliaryProcessType(AuxiliaryProcessType);
     48WEBCORE_EXPORT bool checkAuxiliaryProcessType(AuxiliaryProcessType);
     49
     50inline bool isInWebProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::WebContent); }
     51inline bool isInNetworkProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::Network); }
     52#if ENABLE(GPU_PROCESS)
     53inline bool isInGPUProcess() { return checkAuxiliaryProcessType(AuxiliaryProcessType::GPU); }
    4354#endif
    4455
  • trunk/Source/WebCore/platform/SourcesGLib.txt

    r271353 r271452  
    2828platform/glib/KeyedEncoderGlib.cpp
    2929platform/glib/LowPowerModeNotifierGLib.cpp
    30 platform/glib/RuntimeApplicationChecksGLib.cpp
    3130platform/glib/SharedBufferGlib.cpp
    3231platform/glib/UserAgentGLib.cpp
  • trunk/Source/WebCore/platform/cocoa/RuntimeApplicationChecksCocoa.mm

    r270587 r271452  
    9191}
    9292
    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 
    11193static bool applicationBundleIsEqualTo(const String& bundleIdentifierString)
    11294{
  • trunk/Source/WebKit/ChangeLog

    r271448 r271452  
     12021-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
    1282021-01-13  John Wilander  <wilander@apple.com>
    229
  • trunk/Source/WebKit/GPUProcess/GPUProcess.h

    r270720 r271452  
    5353    explicit GPUProcess(AuxiliaryProcessInitializationParameters&&);
    5454    ~GPUProcess();
    55     static constexpr ProcessType processType = ProcessType::GPU;
     55    static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::GPU;
    5656
    5757    void removeGPUConnectionToWebProcess(GPUConnectionToWebProcess&);
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r271184 r271452  
    145145    NetworkProcess(AuxiliaryProcessInitializationParameters&&);
    146146    ~NetworkProcess();
    147     static constexpr ProcessType processType = ProcessType::Network;
     147    static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::Network;
    148148
    149149    template <typename T>
  • trunk/Source/WebKit/PluginProcess/PluginProcess.h

    r240683 r271452  
    5050public:
    5151    static PluginProcess& singleton();
    52     static constexpr ProcessType processType = ProcessType::Plugin;
     52    static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::Plugin;
    5353
    5454    void removeWebProcessConnection(WebProcessConnection*);
  • trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp

    r263773 r271452  
    6565    WTF::RefCountedBase::enableThreadingChecksGlobally();
    6666
     67    setAuxiliaryProcessType(parameters.processType);
     68
    6769    RELEASE_ASSERT_WITH_MESSAGE(parameters.processIdentifier, "Unable to initialize child process without a WebCore process identifier");
    6870    Process::setIdentifier(*parameters.processIdentifier);
  • trunk/Source/WebKit/Shared/AuxiliaryProcess.h

    r268605 r271452  
    3030#include "MessageSender.h"
    3131#include <WebCore/ProcessIdentifier.h>
     32#include <WebCore/RuntimeApplicationChecks.h>
    3233#include <WebCore/UserActivity.h>
    3334#include <wtf/HashMap.h>
     
    4546
    4647public:
    47     enum class ProcessType : uint8_t {
    48         WebContent,
    49         Network,
    50         Plugin,
    51 #if ENABLE(GPU_PROCESS)
    52         GPU,
    53 #endif
    54 #if ENABLE(WEB_AUTHN)
    55         WebAuthn
    56 #endif
    57     };
    58 
    5948    void initialize(const AuxiliaryProcessInitializationParameters&);
    6049
     
    178167    IPC::Connection::Identifier connectionIdentifier;
    179168    HashMap<String, String> extraInitializationData;
    180     AuxiliaryProcess::ProcessType processType;
     169    WebCore::AuxiliaryProcessType processType;
    181170#if PLATFORM(COCOA)
    182171    OSObjectPtr<xpc_object_t> priorityBoostMessage;
  • trunk/Source/WebKit/Shared/AuxiliaryProcessMain.h

    r255067 r271452  
    4040    virtual void platformFinalize() { }
    4141
     42    AuxiliaryProcessInitializationParameters& initializationParameters() { return m_parameters; }
    4243    AuxiliaryProcessInitializationParameters&& takeInitializationParameters() { return WTFMove(m_parameters); }
    4344
     
    5657{
    5758    AuxiliaryProcessMainType auxiliaryMain;
     59
     60    auxiliaryMain.initializationParameters().processType = AuxiliaryProcessType::processType;
    5861
    5962    if (!auxiliaryMain.platformInitialize())
  • trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm

    r271417 r271452  
    114114
    115115struct 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)
    117117        : parentDirectoryPath { parentDirectoryPath }
    118118        , directoryPath { directoryPath }
     
    132132    const SandboxParametersPtr& sandboxParameters;
    133133    const CString& header;
    134     const AuxiliaryProcess::ProcessType& processType;
     134    const WebCore::AuxiliaryProcessType& processType;
    135135    const SandboxInitializationParameters& initializationParameters;
    136136    const String& profileOrProfilePath;
     
    219219// These strings must match the last segment of the "com.apple.rootless.storage.<this part must match>" entry in each
    220220// process's restricted entitlements file (ex. Configurations/Networking-OSX-restricted.entitlements).
    221 constexpr const char* processStorageClass(AuxiliaryProcess::ProcessType type)
     221constexpr const char* processStorageClass(WebCore::AuxiliaryProcessType type)
    222222{
    223223    switch (type) {
    224     case AuxiliaryProcess::ProcessType::WebContent:
     224    case WebCore::AuxiliaryProcessType::WebContent:
    225225        return "WebKitWebContentSandbox";
    226     case AuxiliaryProcess::ProcessType::Network:
     226    case WebCore::AuxiliaryProcessType::Network:
    227227        return "WebKitNetworkingSandbox";
    228     case AuxiliaryProcess::ProcessType::Plugin:
     228    case WebCore::AuxiliaryProcessType::Plugin:
    229229        return "WebKitPluginSandbox";
    230230#if ENABLE(GPU_PROCESS)
    231     case AuxiliaryProcess::ProcessType::GPU:
     231    case WebCore::AuxiliaryProcessType::GPU:
    232232        return "WebKitGPUSandbox";
    233233#endif
    234234#if ENABLE(WEB_AUTHN)
    235     case AuxiliaryProcess::ProcessType::WebAuthn:
     235    case WebCore::AuxiliaryProcessType::WebAuthn:
    236236        return "WebKitWebAuthnSandbox";
    237237#endif
     
    279279}
    280280
    281 static String sandboxDirectory(AuxiliaryProcess::ProcessType processType, const String& parentDirectory)
     281static String sandboxDirectory(WebCore::AuxiliaryProcessType processType, const String& parentDirectory)
    282282{
    283283    StringBuilder directory;
    284284    directory.append(parentDirectory);
    285285    switch (processType) {
    286     case AuxiliaryProcess::ProcessType::WebContent:
     286    case WebCore::AuxiliaryProcessType::WebContent:
    287287        directory.append("/com.apple.WebKit.WebContent.Sandbox");
    288288        break;
    289     case AuxiliaryProcess::ProcessType::Network:
     289    case WebCore::AuxiliaryProcessType::Network:
    290290        directory.append("/com.apple.WebKit.Networking.Sandbox");
    291291        break;
    292     case AuxiliaryProcess::ProcessType::Plugin:
     292    case WebCore::AuxiliaryProcessType::Plugin:
    293293        directory.append("/com.apple.WebKit.Plugin.Sandbox");
    294294        break;
    295295#if ENABLE(GPU_PROCESS)
    296     case AuxiliaryProcess::ProcessType::GPU:
     296    case WebCore::AuxiliaryProcessType::GPU:
    297297        directory.append("/com.apple.WebKit.GPU.Sandbox");
    298298        break;
    299299#endif
    300300#if ENABLE(WEB_AUTHN)
    301     case AuxiliaryProcess::ProcessType::WebAuthn:
     301    case WebCore::AuxiliaryProcessType::WebAuthn:
    302302        directory.append("/com.apple.WebKit.WebAuthn.Sandbox");
    303303        break;
     
    582582    // The plugin process's DARWIN_USER_TEMP_DIR and DARWIN_USER_CACHE_DIR sandbox parameters are randomized so
    583583    // 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)
    585585        return compileAndApplySandboxSlowCase(profileOrProfilePath, isProfilePath, sandboxInitializationParameters);
    586586
  • trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.h

    r269168 r271452  
    5050    explicit WebAuthnProcess(AuxiliaryProcessInitializationParameters&&);
    5151    ~WebAuthnProcess();
    52     static constexpr ProcessType processType = ProcessType::WebAuthn;
     52    static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::WebAuthn;
    5353
    5454    void removeWebAuthnConnectionToWebProcess(WebAuthnConnectionToWebProcess&);
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r271294 r271452  
    155155
    156156    static WebProcess& singleton();
    157     static constexpr ProcessType processType = ProcessType::WebContent;
     157    static constexpr WebCore::AuxiliaryProcessType processType = WebCore::AuxiliaryProcessType::WebContent;
    158158
    159159    template <typename T>
Note: See TracChangeset for help on using the changeset viewer.