Changeset 263313 in webkit


Ignore:
Timestamp:
Jun 19, 2020, 8:50:10 PM (5 years ago)
Author:
Chris Dumez
Message:

[Cocoa] Delay issuing ManagedSession & Network Extension sandbox extensions until a load is actually issued
https://bugs.webkit.org/show_bug.cgi?id=213414
<rdar://problem/64548684>

Reviewed by Per Arne Vollan.

Source/WebCore:

setHasConsumedSandboxExtensions() can now get called several times, every time a WebPage is created.
Once a sandbox extension has been consumed, there is no going back so return early if the state is
already "Consumed".

  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::setHasConsumedSandboxExtensions):

  • platform/cocoa/ParentalControlsContentFilter.mm:

(WebCore::ParentalControlsContentFilter::setHasConsumedSandboxExtension):

Source/WebKit:

Delay issuing ManagedSession & Network Extension sandbox extensions until a load is actually issued.
This is a Safari launch time optimization since the checks needed to decide whether or not to issue
the extensions are expensive and there is no reason to issue them as soon as the process launches
(especially in the case of a prewarmed process).

  • Shared/Cocoa/LoadParametersCocoa.mm:

(WebKit::LoadParameters::platformEncode const):
(WebKit::LoadParameters::platformDecode):

  • Shared/LoadParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

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

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

(WebKit::WebPageProxy::addPlatformLoadParameters):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::addPlatformLoadParameters):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadDataWithNavigationShared):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessProxy.h:

(WebKit::WebProcessProxy::hasNetworkExtensionSandboxAccess const):
(WebKit::WebProcessProxy::markHasNetworkExtensionSandboxAccess):
(WebKit::WebProcessProxy::hasManagedSessionSandboxAccess const):
(WebKit::WebProcessProxy::markHasManagedSessionSandboxAccess):

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

Location:
trunk/Source
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r263311 r263313  
     12020-06-19  Chris Dumez  <cdumez@apple.com>
     2
     3        [Cocoa] Delay issuing ManagedSession & Network Extension sandbox extensions until a load is actually issued
     4        https://bugs.webkit.org/show_bug.cgi?id=213414
     5        <rdar://problem/64548684>
     6
     7        Reviewed by Per Arne Vollan.
     8
     9        setHasConsumedSandboxExtensions() can now get called several times, every time a WebPage is created.
     10        Once a sandbox extension has been consumed, there is no going back so return early if the state is
     11        already "Consumed".
     12
     13        * platform/cocoa/NetworkExtensionContentFilter.mm:
     14        (WebCore::NetworkExtensionContentFilter::setHasConsumedSandboxExtensions):
     15        * platform/cocoa/ParentalControlsContentFilter.mm:
     16        (WebCore::ParentalControlsContentFilter::setHasConsumedSandboxExtension):
     17
    1182020-06-19  Zalan Bujtas  <zalan@apple.com>
    219
  • trunk/Source/WebCore/platform/cocoa/NetworkExtensionContentFilter.mm

    r261149 r263313  
    229229void NetworkExtensionContentFilter::setHasConsumedSandboxExtensions(bool hasConsumedSandboxExtensions)
    230230{
     231    if (m_sandboxExtensionsState == SandboxExtensionsState::Consumed)
     232        return;
     233
    231234    m_sandboxExtensionsState = (hasConsumedSandboxExtensions ? SandboxExtensionsState::Consumed : SandboxExtensionsState::NotConsumed);
    232235}
  • trunk/Source/WebCore/platform/cocoa/ParentalControlsContentFilter.mm

    r254983 r263313  
    151151void ParentalControlsContentFilter::setHasConsumedSandboxExtension(bool hasConsumedSandboxExtension)
    152152{
     153    if (m_sandboxExtensionState == SandboxExtensionState::Consumed)
     154        return;
     155
    153156    m_sandboxExtensionState = (hasConsumedSandboxExtension ? SandboxExtensionState::Consumed : SandboxExtensionState::NotConsumed);
    154157}
  • trunk/Source/WebKit/ChangeLog

    r263307 r263313  
     12020-06-19  Chris Dumez  <cdumez@apple.com>
     2
     3        [Cocoa] Delay issuing ManagedSession & Network Extension sandbox extensions until a load is actually issued
     4        https://bugs.webkit.org/show_bug.cgi?id=213414
     5        <rdar://problem/64548684>
     6
     7        Reviewed by Per Arne Vollan.
     8
     9        Delay issuing ManagedSession & Network Extension sandbox extensions until a load is actually issued.
     10        This is a Safari launch time optimization since the checks needed to decide whether or not to issue
     11        the extensions are expensive and there is no reason to issue them as soon as the process launches
     12        (especially in the case of a prewarmed process).
     13
     14        * Shared/Cocoa/LoadParametersCocoa.mm:
     15        (WebKit::LoadParameters::platformEncode const):
     16        (WebKit::LoadParameters::platformDecode):
     17        * Shared/LoadParameters.h:
     18        * Shared/WebProcessCreationParameters.cpp:
     19        (WebKit::WebProcessCreationParameters::encode const):
     20        (WebKit::WebProcessCreationParameters::decode):
     21        * Shared/WebProcessCreationParameters.h:
     22        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
     23        (WebKit::WebPageProxy::addPlatformLoadParameters):
     24        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
     25        (WebKit::WebProcessPool::platformInitializeWebProcess):
     26        * UIProcess/WebPageProxy.cpp:
     27        (WebKit::WebPageProxy::addPlatformLoadParameters):
     28        (WebKit::WebPageProxy::loadRequestWithNavigationShared):
     29        (WebKit::WebPageProxy::loadFile):
     30        (WebKit::WebPageProxy::loadDataWithNavigationShared):
     31        (WebKit::WebPageProxy::loadAlternateHTML):
     32        (WebKit::WebPageProxy::loadWebArchiveData):
     33        * UIProcess/WebPageProxy.h:
     34        * UIProcess/WebProcessProxy.h:
     35        (WebKit::WebProcessProxy::hasNetworkExtensionSandboxAccess const):
     36        (WebKit::WebProcessProxy::markHasNetworkExtensionSandboxAccess):
     37        (WebKit::WebProcessProxy::hasManagedSessionSandboxAccess const):
     38        (WebKit::WebProcessProxy::markHasManagedSessionSandboxAccess):
     39        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
     40        (WebKit::WebPage::platformDidReceiveLoadParameters):
     41        * WebProcess/cocoa/WebProcessCocoa.mm:
     42        (WebKit::WebProcess::platformInitializeWebProcess):
     43
    1442020-06-19  Ryan Haddad  <ryanhaddad@apple.com>
    245
  • trunk/Source/WebKit/Shared/Cocoa/LoadParametersCocoa.mm

    r260366 r263313  
    3737{
    3838    IPC::encode(encoder, dataDetectionContext.get());
     39
     40    encoder << neHelperExtensionHandle;
     41    encoder << neSessionManagerExtensionHandle;
     42#if PLATFORM(IOS)
     43    encoder << contentFilterExtensionHandle;
     44    encoder << frontboardServiceExtensionHandle;
     45#endif
    3946}
    4047
    41 bool LoadParameters::platformDecode(IPC::Decoder& decoder, LoadParameters& data)
     48bool LoadParameters::platformDecode(IPC::Decoder& decoder, LoadParameters& parameters)
    4249{
    43     if (!IPC::decode(decoder, data.dataDetectionContext))
     50    if (!IPC::decode(decoder, parameters.dataDetectionContext))
    4451        return false;
     52
     53    Optional<Optional<SandboxExtension::Handle>> neHelperExtensionHandle;
     54    decoder >> neHelperExtensionHandle;
     55    if (!neHelperExtensionHandle)
     56        return false;
     57    parameters.neHelperExtensionHandle = WTFMove(*neHelperExtensionHandle);
     58
     59    Optional<Optional<SandboxExtension::Handle>> neSessionManagerExtensionHandle;
     60    decoder >> neSessionManagerExtensionHandle;
     61    if (!neSessionManagerExtensionHandle)
     62        return false;
     63    parameters.neSessionManagerExtensionHandle = WTFMove(*neSessionManagerExtensionHandle);
     64
     65#if PLATFORM(IOS)
     66    Optional<Optional<SandboxExtension::Handle>> contentFilterExtensionHandle;
     67    decoder >> contentFilterExtensionHandle;
     68    if (!contentFilterExtensionHandle)
     69        return false;
     70    parameters.contentFilterExtensionHandle = WTFMove(*contentFilterExtensionHandle);
     71
     72    Optional<Optional<SandboxExtension::Handle>> frontboardServiceExtensionHandle;
     73    decoder >> frontboardServiceExtensionHandle;
     74    if (!frontboardServiceExtensionHandle)
     75        return false;
     76    parameters.frontboardServiceExtensionHandle = WTFMove(*frontboardServiceExtensionHandle);
     77#endif
    4578
    4679    return true;
  • trunk/Source/WebKit/Shared/LoadParameters.h

    r261506 r263313  
    7575#if PLATFORM(COCOA)
    7676    RetainPtr<NSDictionary> dataDetectionContext;
     77    Optional<SandboxExtension::Handle> neHelperExtensionHandle;
     78    Optional<SandboxExtension::Handle> neSessionManagerExtensionHandle;
     79#endif
     80#if PLATFORM(IOS)
     81    Optional<SandboxExtension::Handle> contentFilterExtensionHandle;
     82    Optional<SandboxExtension::Handle> frontboardServiceExtensionHandle;
    7783#endif
    7884};
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp

    r263307 r263313  
    158158#if PLATFORM(IOS)
    159159    encoder << compilerServiceExtensionHandle;
    160     encoder << contentFilterExtensionHandle;
    161     encoder << frontboardServiceExtensionHandle;
    162160#endif
    163161
     
    169167
    170168#if PLATFORM(COCOA)
    171     encoder << neHelperExtensionHandle;
    172     encoder << neSessionManagerExtensionHandle;
    173169    encoder << mapDBExtensionHandle;
    174170    encoder << systemHasBattery;
     
    422418        return false;
    423419    parameters.compilerServiceExtensionHandle = WTFMove(*compilerServiceExtensionHandle);
    424 
    425     Optional<Optional<SandboxExtension::Handle>> contentFilterExtensionHandle;
    426     decoder >> contentFilterExtensionHandle;
    427     if (!contentFilterExtensionHandle)
    428         return false;
    429     parameters.contentFilterExtensionHandle = WTFMove(*contentFilterExtensionHandle);
    430 
    431     Optional<Optional<SandboxExtension::Handle>> frontboardServiceExtensionHandle;
    432     decoder >> frontboardServiceExtensionHandle;
    433     if (!frontboardServiceExtensionHandle)
    434         return false;
    435     parameters.frontboardServiceExtensionHandle = WTFMove(*frontboardServiceExtensionHandle);
    436420#endif
    437421
     
    457441
    458442#if PLATFORM(COCOA)
    459     Optional<Optional<SandboxExtension::Handle>> neHelperExtensionHandle;
    460     decoder >> neHelperExtensionHandle;
    461     if (!neHelperExtensionHandle)
    462         return false;
    463     parameters.neHelperExtensionHandle = WTFMove(*neHelperExtensionHandle);
    464 
    465     Optional<Optional<SandboxExtension::Handle>> neSessionManagerExtensionHandle;
    466     decoder >> neSessionManagerExtensionHandle;
    467     if (!neSessionManagerExtensionHandle)
    468         return false;
    469     parameters.neSessionManagerExtensionHandle = WTFMove(*neSessionManagerExtensionHandle);
    470 
    471443    Optional<Optional<SandboxExtension::Handle>> mapDBExtensionHandle;
    472444    decoder >> mapDBExtensionHandle;
  • trunk/Source/WebKit/Shared/WebProcessCreationParameters.h

    r263307 r263313  
    202202#if PLATFORM(IOS)
    203203    Optional<SandboxExtension::Handle> compilerServiceExtensionHandle;
    204     Optional<SandboxExtension::Handle> contentFilterExtensionHandle;
    205     Optional<SandboxExtension::Handle> frontboardServiceExtensionHandle;
    206204#endif
    207205
     
    213211
    214212#if PLATFORM(COCOA)
    215     Optional<SandboxExtension::Handle> neHelperExtensionHandle;
    216     Optional<SandboxExtension::Handle> neSessionManagerExtensionHandle;
    217213    Optional<SandboxExtension::Handle> mapDBExtensionHandle;
    218214    bool systemHasBattery { false };
  • trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm

    r261981 r263313  
    4848#import <WebCore/TextAlternativeWithRange.h>
    4949#import <WebCore/ValidationBubble.h>
     50#import <pal/spi/cocoa/NEFilterSourceSPI.h>
    5051#import <wtf/BlockPtr.h>
     52#import <wtf/SoftLinking.h>
    5153#import <wtf/cf/TypeCastsCF.h>
    5254
     
    5456#import "MediaUsageManagerCocoa.h"
    5557#endif
     58
     59#if PLATFORM(IOS)
     60#import <pal/spi/cocoa/WebFilterEvaluatorSPI.h>
     61
     62SOFT_LINK_PRIVATE_FRAMEWORK(WebContentAnalysis);
     63SOFT_LINK_CLASS(WebContentAnalysis, WebFilterEvaluator);
     64#endif
     65
     66SOFT_LINK_FRAMEWORK_OPTIONAL(NetworkExtension);
     67SOFT_LINK_CLASS_OPTIONAL(NetworkExtension, NEFilterSource);
    5668
    5769#define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, process().connection())
     
    130142#endif
    131143
    132 void WebPageProxy::addPlatformLoadParameters(LoadParameters& loadParameters)
     144void WebPageProxy::addPlatformLoadParameters(WebProcessProxy& process, LoadParameters& loadParameters)
    133145{
    134146    loadParameters.dataDetectionContext = m_uiClient->dataDetectionContext();
     147
     148    if (!process.hasNetworkExtensionSandboxAccess() && [getNEFilterSourceClass() filterRequired]) {
     149        SandboxExtension::Handle helperHandle;
     150        SandboxExtension::createHandleForMachLookup("com.apple.nehelper"_s, WTF::nullopt, helperHandle);
     151        loadParameters.neHelperExtensionHandle = WTFMove(helperHandle);
     152        SandboxExtension::Handle managerHandle;
     153#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500
     154        SandboxExtension::createHandleForMachLookup("com.apple.nesessionmanager"_s, WTF::nullopt, managerHandle);
     155#else
     156        SandboxExtension::createHandleForMachLookup("com.apple.nesessionmanager.content-filter"_s, WTF::nullopt, managerHandle);
     157#endif
     158        loadParameters.neSessionManagerExtensionHandle = WTFMove(managerHandle);
     159
     160        process.markHasNetworkExtensionSandboxAccess();
     161    }
     162
     163#if PLATFORM(IOS)
     164    if (!process.hasManagedSessionSandboxAccess() && [getWebFilterEvaluatorClass() isManagedSession]) {
     165        SandboxExtension::Handle handle;
     166        SandboxExtension::createHandleForMachLookup("com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI"_s, WTF::nullopt, handle);
     167        loadParameters.contentFilterExtensionHandle = WTFMove(handle);
     168
     169        SandboxExtension::Handle frontboardServiceExtensionHandle;
     170        if (SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices"_s, WTF::nullopt, frontboardServiceExtensionHandle))
     171            loadParameters.frontboardServiceExtensionHandle = WTFMove(frontboardServiceExtensionHandle);
     172
     173        process.markHasManagedSessionSandboxAccess();
     174    }
     175#endif
    135176}
    136177
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r263307 r263313  
    8080#else
    8181#import "UIKitSPI.h"
    82 #import <pal/ios/ManagedConfigurationSoftLink.h>
    83 #import <pal/spi/ios/ManagedConfigurationSPI.h>
    8482#endif
    8583
    8684#if PLATFORM(IOS_FAMILY)
    8785#import <pal/spi/ios/MobileGestaltSPI.h>
    88 #endif
    89 
    90 #if PLATFORM(IOS)
    91 #import <pal/spi/cocoa/WebFilterEvaluatorSPI.h>
    92 
    93 SOFT_LINK_PRIVATE_FRAMEWORK(WebContentAnalysis);
    94 SOFT_LINK_CLASS(WebContentAnalysis, WebFilterEvaluator);
    9586#endif
    9687
    9788#if PLATFORM(COCOA)
    9889#import <WebCore/SystemBattery.h>
    99 #import <pal/spi/cocoa/NEFilterSourceSPI.h>
    100 
    101 SOFT_LINK_FRAMEWORK_OPTIONAL(NetworkExtension);
    102 SOFT_LINK_CLASS_OPTIONAL(NetworkExtension, NEFilterSource);
    10390#endif
    10491
     
    409396   
    410397#if PLATFORM(COCOA)
    411     if ([getNEFilterSourceClass() filterRequired]) {
    412         SandboxExtension::Handle helperHandle;
    413         SandboxExtension::createHandleForMachLookup("com.apple.nehelper"_s, WTF::nullopt, helperHandle);
    414         parameters.neHelperExtensionHandle = WTFMove(helperHandle);
    415         SandboxExtension::Handle managerHandle;
    416 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500
    417         SandboxExtension::createHandleForMachLookup("com.apple.nesessionmanager"_s, WTF::nullopt, managerHandle);
    418 #else
    419         SandboxExtension::createHandleForMachLookup("com.apple.nesessionmanager.content-filter"_s, WTF::nullopt, managerHandle);
    420 #endif
    421         parameters.neSessionManagerExtensionHandle = WTFMove(managerHandle);
    422     }
    423398    parameters.systemHasBattery = systemHasBattery();
    424399
     
    426401    if (SandboxExtension::createHandleForMachLookup("com.apple.lsd.mapdb"_s, WTF::nullopt, mapDBHandle, SandboxExtension::Flags::NoReport))
    427402        parameters.mapDBExtensionHandle = WTFMove(mapDBHandle);
    428 #endif
    429    
    430 #if PLATFORM(IOS)
    431     if ([getWebFilterEvaluatorClass() isManagedSession]) {
    432         SandboxExtension::Handle handle;
    433         SandboxExtension::createHandleForMachLookup("com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI"_s, WTF::nullopt, handle);
    434         parameters.contentFilterExtensionHandle = WTFMove(handle);
    435 
    436         SandboxExtension::Handle frontboardServiceExtensionHandle;
    437         if (SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices"_s, WTF::nullopt, frontboardServiceExtensionHandle))
    438             parameters.frontboardServiceExtensionHandle = WTFMove(frontboardServiceExtensionHandle);
    439     }
    440403#endif
    441404
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r263288 r263313  
    12671267
    12681268#if !PLATFORM(COCOA)
    1269 void WebPageProxy::addPlatformLoadParameters(LoadParameters&)
     1269void WebPageProxy::addPlatformLoadParameters(WebProcessProxy&, LoadParameters&)
    12701270{
    12711271}
     
    13241324    maybeInitializeSandboxExtensionHandle(process, url, m_pageLoadState.resourceDirectoryURL(), loadParameters.sandboxExtensionHandle);
    13251325
    1326     addPlatformLoadParameters(loadParameters);
     1326    addPlatformLoadParameters(process, loadParameters);
    13271327
    13281328    preconnectTo(url);
     
    13861386    const bool checkAssumedReadAccessToResourceURL = false;
    13871387    maybeInitializeSandboxExtensionHandle(m_process, fileURL, resourceDirectoryURL, loadParameters.sandboxExtensionHandle, checkAssumedReadAccessToResourceURL);
    1388     addPlatformLoadParameters(loadParameters);
     1388    addPlatformLoadParameters(m_process, loadParameters);
    13891389
    13901390#if HAVE(SANDBOX_ISSUE_READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN)
     
    14461446    loadParameters.shouldOpenExternalURLsPolicy = shouldOpenExternalURLsPolicy;
    14471447    loadParameters.isNavigatingToAppBoundDomain = isNavigatingToAppBoundDomain;
    1448     addPlatformLoadParameters(loadParameters);
     1448    addPlatformLoadParameters(process, loadParameters);
    14491449
    14501450    process->assumeReadAccessToBaseURL(*this, baseURL);
     
    14881488    loadParameters.provisionalLoadErrorURLString = m_failingProvisionalLoadURL;
    14891489    loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get());
    1490     addPlatformLoadParameters(loadParameters);
     1490    addPlatformLoadParameters(process(), loadParameters);
    14911491
    14921492    m_process->assumeReadAccessToBaseURL(*this, baseURL.string());
     
    15171517    loadParameters.encodingName = "utf-16"_s;
    15181518    loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get());
    1519     addPlatformLoadParameters(loadParameters);
     1519    addPlatformLoadParameters(process(), loadParameters);
    15201520
    15211521    send(Messages::WebPage::LoadData(loadParameters));
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r263057 r263313  
    604604    void closePage();
    605605
    606     void addPlatformLoadParameters(LoadParameters&);
     606    void addPlatformLoadParameters(WebProcessProxy&, LoadParameters&);
    607607    RefPtr<API::Navigation> loadRequest(WebCore::ResourceRequest&&, WebCore::ShouldOpenExternalURLsPolicy = WebCore::ShouldOpenExternalURLsPolicy::ShouldAllowExternalSchemes, API::Object* userData = nullptr);
    608608    RefPtr<API::Navigation> loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr);
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.h

    r263208 r263313  
    389389    bool hasSleepDisabler() const;
    390390
     391#if PLATFORM(COCOA)
     392    bool hasNetworkExtensionSandboxAccess() const { return m_hasNetworkExtensionSandboxAccess; }
     393    void markHasNetworkExtensionSandboxAccess() { m_hasNetworkExtensionSandboxAccess = true; }
     394#endif
     395#if PLATFORM(IOS)
     396    bool hasManagedSessionSandboxAccess() const { return m_hasManagedSessionSandboxAccess; }
     397    void markHasManagedSessionSandboxAccess() { m_hasManagedSessionSandboxAccess = true; }
     398#endif
     399
    391400protected:
    392401    WebProcessProxy(WebProcessPool&, WebsiteDataStore*, IsPrewarmed);
     
    579588    bool m_hasIssuedAttachmentElementRelatedSandboxExtensions { false };
    580589#endif
     590#if PLATFORM(COCOA)
     591    bool m_hasNetworkExtensionSandboxAccess { false };
     592#endif
     593#if PLATFORM(IOS)
     594    bool m_hasManagedSessionSandboxAccess { false };
     595#endif
    581596    Optional<UseLazyStop> m_shouldStartResponsivenessTimerWhenLaunched;
    582597
  • trunk/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm

    r261848 r263313  
    4646#import <WebCore/HTMLUListElement.h>
    4747#import <WebCore/HitTestResult.h>
     48#import <WebCore/NetworkExtensionContentFilter.h>
    4849#import <WebCore/NodeRenderStyle.h>
    4950#import <WebCore/PaymentCoordinator.h>
     
    5253#import <WebCore/RenderElement.h>
    5354
     55#if PLATFORM(IOS)
     56#import <WebCore/ParentalControlsContentFilter.h>
     57#endif
     58
    5459#if PLATFORM(COCOA)
    5560
    5661namespace WebKit {
    5762
    58 void WebPage::platformDidReceiveLoadParameters(const LoadParameters& loadParameters)
    59 {
    60     m_dataDetectionContext = loadParameters.dataDetectionContext;
     63void WebPage::platformDidReceiveLoadParameters(const LoadParameters& parameters)
     64{
     65    m_dataDetectionContext = parameters.dataDetectionContext;
     66
     67    if (parameters.neHelperExtensionHandle)
     68        SandboxExtension::consumePermanently(*parameters.neHelperExtensionHandle);
     69    if (parameters.neSessionManagerExtensionHandle)
     70        SandboxExtension::consumePermanently(*parameters.neSessionManagerExtensionHandle);
     71    NetworkExtensionContentFilter::setHasConsumedSandboxExtensions(parameters.neHelperExtensionHandle.hasValue() && parameters.neSessionManagerExtensionHandle.hasValue());
     72
     73#if PLATFORM(IOS)
     74    if (parameters.contentFilterExtensionHandle)
     75        SandboxExtension::consumePermanently(*parameters.contentFilterExtensionHandle);
     76    ParentalControlsContentFilter::setHasConsumedSandboxExtension(parameters.contentFilterExtensionHandle.hasValue());
     77
     78    if (parameters.frontboardServiceExtensionHandle)
     79        SandboxExtension::consumePermanently(*parameters.frontboardServiceExtensionHandle);
     80#endif
    6181}
    6282
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r263307 r263313  
    6464#import <WebCore/MemoryRelease.h>
    6565#import <WebCore/NSScrollerImpDetails.h>
    66 #import <WebCore/NetworkExtensionContentFilter.h>
    6766#import <WebCore/PerformanceLogging.h>
    6867#import <WebCore/PictureInPictureSupport.h>
     
    9594#endif
    9695
    97 #if PLATFORM(IOS)
    98 #import <WebCore/ParentalControlsContentFilter.h>
    99 #endif
    100 
    10196#if PLATFORM(IOS_FAMILY)
    10297#import "UIKitSPI.h"
     
    273268    if (parameters.compilerServiceExtensionHandle)
    274269        SandboxExtension::consumePermanently(*parameters.compilerServiceExtensionHandle);
    275 
    276     if (parameters.contentFilterExtensionHandle)
    277         SandboxExtension::consumePermanently(*parameters.contentFilterExtensionHandle);
    278     ParentalControlsContentFilter::setHasConsumedSandboxExtension(parameters.contentFilterExtensionHandle.hasValue());
    279 
    280     if (parameters.frontboardServiceExtensionHandle)
    281         SandboxExtension::consumePermanently(*parameters.frontboardServiceExtensionHandle);
    282270#endif
    283271
     
    288276#endif
    289277   
    290     if (parameters.neHelperExtensionHandle)
    291         SandboxExtension::consumePermanently(*parameters.neHelperExtensionHandle);
    292     if (parameters.neSessionManagerExtensionHandle)
    293         SandboxExtension::consumePermanently(*parameters.neSessionManagerExtensionHandle);
    294     NetworkExtensionContentFilter::setHasConsumedSandboxExtensions(parameters.neHelperExtensionHandle.hasValue() && parameters.neSessionManagerExtensionHandle.hasValue());
    295 
    296278    setSystemHasBattery(parameters.systemHasBattery);
    297279
Note: See TracChangeset for help on using the changeset viewer.