Changeset 271294 in webkit


Ignore:
Timestamp:
Jan 8, 2021 7:22:28 AM (19 months ago)
Author:
youenn@apple.com
Message:

Service Worker is no longer inspectable
https://bugs.webkit.org/show_bug.cgi?id=220406
<rdar://problem/72883757>

Reviewed by Per Arne Vollan.

We were sending the sandbox extension later when enabling remote inspector.
But this is not soon enough for inspecting service workers.
For that reason, send the sandbox extension at process init time based on whether develop menu is on or not.

Manually tested by validating that Develop Menu can list running service workers.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::shouldEnableRemoteInspector):
(WebKit::WebProcessProxy::enableRemoteInspectorIfNeeded):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::enableRemoteWebInspector):

Location:
trunk/Source/WebKit
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r271292 r271294  
     12021-01-08  Youenn Fablet  <youenn@apple.com>
     2
     3        Service Worker is no longer inspectable
     4        https://bugs.webkit.org/show_bug.cgi?id=220406
     5        <rdar://problem/72883757>
     6
     7        Reviewed by Per Arne Vollan.
     8
     9        We were sending the sandbox extension later when enabling remote inspector.
     10        But this is not soon enough for inspecting service workers.
     11        For that reason, send the sandbox extension at process init time based on whether develop menu is on or not.
     12
     13        Manually tested by validating that Develop Menu can list running service workers.
     14
     15        * Shared/WebProcessCreationParameters.cpp:
     16        (WebKit::WebProcessCreationParameters::encode const):
     17        (WebKit::WebProcessCreationParameters::decode):
     18        * Shared/WebProcessCreationParameters.h:
     19        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
     20        (WebKit::WebProcessPool::platformInitializeWebProcess):
     21        * UIProcess/Cocoa/WebProcessProxyCocoa.mm:
     22        (WebKit::WebProcessProxy::shouldEnableRemoteInspector):
     23        (WebKit::WebProcessProxy::enableRemoteInspectorIfNeeded):
     24        * UIProcess/WebProcessProxy.h:
     25        * WebProcess/WebProcess.h:
     26        * WebProcess/WebProcess.messages.in:
     27        * WebProcess/cocoa/WebProcessCocoa.mm:
     28        (WebKit::WebProcess::platformInitializeWebProcess):
     29        (WebKit::WebProcess::enableRemoteWebInspector):
     30
    1312021-01-08  Chris Lord  <clord@igalia.com>
    232
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp

    r270392 r271294  
    5757    encoder << containerTemporaryDirectoryExtensionHandle;
    5858#endif
     59#if PLATFORM(COCOA) && ENABLE(REMOTE_INSPECTOR)
     60    encoder << enableRemoteWebInspectorExtensionHandle;
     61#endif
    5962    encoder << webCoreLoggingChannels;
    6063    encoder << webKitLoggingChannels;
     
    237240
    238241#endif
     242#if PLATFORM(COCOA) && ENABLE(REMOTE_INSPECTOR)
     243    Optional<SandboxExtension::Handle> enableRemoteWebInspectorExtensionHandle;
     244    decoder >> enableRemoteWebInspectorExtensionHandle;
     245    if (!enableRemoteWebInspectorExtensionHandle)
     246        return false;
     247    parameters.enableRemoteWebInspectorExtensionHandle = WTFMove(*enableRemoteWebInspectorExtensionHandle);
     248#endif
     249
    239250    if (!decoder.decode(parameters.webCoreLoggingChannels))
    240251        return false;
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.h

    r270392 r271294  
    8383    SandboxExtension::Handle containerTemporaryDirectoryExtensionHandle;
    8484#endif
     85#if PLATFORM(COCOA) && ENABLE(REMOTE_INSPECTOR)
     86    SandboxExtension::Handle enableRemoteWebInspectorExtensionHandle;
     87#endif
    8588#if ENABLE(MEDIA_STREAM)
    8689    SandboxExtension::Handle audioCaptureExtensionHandle;
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r271190 r271294  
    333333        SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.containerTemporaryDirectory, SandboxExtension::Type::ReadWrite, parameters.containerTemporaryDirectoryExtensionHandle);
    334334#endif
     335#if PLATFORM(COCOA) && ENABLE(REMOTE_INSPECTOR)
     336    if (WebProcessProxy::shouldEnableRemoteInspector()) {
     337        SandboxExtension::Handle enableRemoteWebInspectorExtensionHandle;
     338        if (SandboxExtension::createHandleForMachLookup("com.apple.webinspector"_s, WTF::nullopt, enableRemoteWebInspectorExtensionHandle))
     339            parameters.enableRemoteWebInspectorExtensionHandle = WTFMove(enableRemoteWebInspectorExtensionHandle);
     340    }
     341#endif
    335342
    336343    parameters.fontAllowList = m_fontAllowList;
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm

    r270638 r271294  
    210210
    211211#if ENABLE(REMOTE_INSPECTOR)
     212bool WebProcessProxy::shouldEnableRemoteInspector()
     213{
     214#if PLATFORM(IOS_FAMILY)
     215    return CFPreferencesGetAppIntegerValue(WIRRemoteInspectorEnabledKey, WIRRemoteInspectorDomainName, nullptr);
     216#else
     217    return CFPreferencesGetAppIntegerValue(CFSTR("ShowDevelopMenu"), CFSTR("com.apple.Safari.SandboxBroker"), nullptr);
     218#endif
     219}
     220
    212221void WebProcessProxy::enableRemoteInspectorIfNeeded()
    213222{
    214 #if PLATFORM(IOS_FAMILY)
    215     if (!CFPreferencesGetAppIntegerValue(WIRRemoteInspectorEnabledKey, WIRRemoteInspectorDomainName, nullptr))
    216         return;
    217 #else
    218     if (!CFPreferencesGetAppIntegerValue(CFSTR("ShowDevelopMenu"), CFSTR("com.apple.Safari.SandboxBroker"), nullptr))
    219         return;
    220 #endif
    221     SandboxExtension::Handle handle;
    222     auto auditToken = connection() ? connection()->getAuditToken() : WTF::nullopt;
    223     if (SandboxExtension::createHandleForMachLookup("com.apple.webinspector"_s, auditToken, handle))
    224         send(Messages::WebProcess::EnableRemoteWebInspector(handle), 0);
     223    if (!shouldEnableRemoteInspector())
     224        return;
     225    send(Messages::WebProcess::EnableRemoteWebInspector(), 0);
    225226}
    226227#endif
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.h

    r271205 r271294  
    408408    void pageIsBecomingInvisible(WebCore::PageIdentifier);
    409409
     410#if PLATFORM(COCOA) && ENABLE(REMOTE_INSPECTOR)
     411    static bool shouldEnableRemoteInspector();
     412#endif
     413
    410414protected:
    411415    WebProcessProxy(WebProcessPool&, WebsiteDataStore*, IsPrewarmed);
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r271190 r271294  
    319319    void setMediaMIMETypes(const Vector<String>);
    320320#if ENABLE(REMOTE_INSPECTOR)
    321     void enableRemoteWebInspector(const SandboxExtension::Handle&);
     321    void enableRemoteWebInspector();
    322322#endif
    323323    void unblockServicesRequiredByAccessibility(const SandboxExtension::HandleArray&);
  • trunk/Source/WebKit/WebProcess/WebProcess.messages.in

    r271190 r271294  
    134134    SetMediaMIMETypes(Vector<String> types)
    135135#if ENABLE(REMOTE_INSPECTOR)
    136     EnableRemoteWebInspector(WebKit::SandboxExtension::Handle handle);
     136    EnableRemoteWebInspector();
    137137#endif
    138138#endif
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r271214 r271294  
    261261    SandboxExtension::consumePermanently(parameters.containerTemporaryDirectoryExtensionHandle);
    262262#endif
     263#if PLATFORM(COCOA) && ENABLE(REMOTE_INSPECTOR)
     264    if (SandboxExtension::consumePermanently(parameters.enableRemoteWebInspectorExtensionHandle))
     265        Inspector::RemoteInspector::setNeedMachSandboxExtension(false);
     266#endif
    263267#endif
    264268
     
    992996
    993997#if ENABLE(REMOTE_INSPECTOR)
    994 void WebProcess::enableRemoteWebInspector(const SandboxExtension::Handle& handle)
    995 {
    996     SandboxExtension::consumePermanently(handle);
    997     Inspector::RemoteInspector::setNeedMachSandboxExtension(false);
     998void WebProcess::enableRemoteWebInspector()
     999{
    9981000    Inspector::RemoteInspector::singleton();
    9991001}
Note: See TracChangeset for help on using the changeset viewer.