⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 281032 in webkit


Ignore:
Timestamp:
Aug 13, 2021, 1:53:03 PM (5 years ago)
Author:
commit-queue@webkit.org
Message:

SandboxExtension::Handle creation should return std::optional instead of bool
https://bugs.webkit.org/show_bug.cgi?id=228875

Patch by Alex Christensen <achristensen@webkit.org> on 2021-08-13
Reviewed by Youenn Fablet.

This modernizes the code somewhat.
This makes it easier to write code that realizes that handle creation can fail.
This is a step towards removing the unnecessary abstraction HandleArray.

  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::encode const):

  • Platform/IPC/FormDataReference.h:

(IPC::FormDataReference::encode const):

  • Shared/Cocoa/SandboxExtensionCocoa.mm:

(WebKit::SandboxExtension::createHandleWithoutResolvingPath):
(WebKit::SandboxExtension::createHandle):
(WebKit::createHandlesForResources):
(WebKit::SandboxExtension::createReadOnlyHandlesForFiles):
(WebKit::SandboxExtension::createHandleForReadWriteDirectory):
(WebKit::SandboxExtension::createHandleForTemporaryFile):
(WebKit::SandboxExtension::createHandleForGenericExtension):
(WebKit::SandboxExtension::createHandleForMachLookup):
(WebKit::SandboxExtension::createHandlesForMachLookup):
(WebKit::SandboxExtension::createHandleForReadByAuditToken):
(WebKit::SandboxExtension::createHandleForIOKitClassExtension):
(WebKit::SandboxExtension::createHandlesForIOKitClassExtensions):

  • Shared/SandboxExtension.h:

(WebKit::SandboxExtension::createHandle):
(WebKit::SandboxExtension::createHandleWithoutResolvingPath):
(WebKit::SandboxExtension::createHandleForReadWriteDirectory):
(WebKit::SandboxExtension::createHandleForTemporaryFile):
(WebKit::SandboxExtension::createHandleForGenericExtension):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::addPlatformLoadParameters):
(WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): Deleted.
(WebKit::WebPageProxy::scrollingUpdatesDisabledForTesting): Deleted.
(WebKit::WebPageProxy::startDrag): Deleted.
(WebKit::WebPageProxy::setPromisedDataForImage): Deleted.
(WebKit::WebPageProxy::setDragCaretRect): Deleted.
(WebKit::WebPageProxy::platformRegisterAttachment): Deleted.
(WebKit::WebPageProxy::platformCloneAttachment): Deleted.
(WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
(WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): Deleted.
(WebKit::WebPageProxy::insertDictatedTextAsync): Deleted.
(WebKit::WebPageProxy::platformDictationAlternatives): Deleted.
(WebKit::WebPageProxy::errorForUnpermittedAppBoundDomainNavigation): Deleted.
(WebKit::WebPageProxy::paymentCoordinatorConnection): Deleted.
(WebKit::WebPageProxy::paymentCoordinatorBoundInterfaceIdentifier): Deleted.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Deleted.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Deleted.
(WebKit::WebPageProxy::paymentCoordinatorAddMessageReceiver): Deleted.
(WebKit::WebPageProxy::paymentCoordinatorRemoveMessageReceiver): Deleted.
(WebKit::WebPageProxy::didStartSpeaking): Deleted.
(WebKit::WebPageProxy::didFinishSpeaking): Deleted.
(WebKit::WebPageProxy::didPauseSpeaking): Deleted.
(WebKit::WebPageProxy::didResumeSpeaking): Deleted.
(WebKit::WebPageProxy::speakingErrorOccurred): Deleted.
(WebKit::WebPageProxy::boundaryEventOccurred): Deleted.
(WebKit::WebPageProxy::voicesDidChange): Deleted.
(WebKit::WebPageProxy::didCreateContextInWebProcessForVisibilityPropagation): Deleted.
(WebKit::WebPageProxy::didCreateContextInGPUProcessForVisibilityPropagation): Deleted.
(WebKit::WebPageProxy::grantAccessToPreferenceService): Deleted.
(WebKit::WebPageProxy::mediaUsageManager): Deleted.
(WebKit::WebPageProxy::addMediaUsageManagerSession): Deleted.
(WebKit::WebPageProxy::updateMediaUsageManagerSessionState): Deleted.
(WebKit::WebPageProxy::removeMediaUsageManagerSession): Deleted.
(WebKit::convertPlatformImageToBitmap): Deleted.
(WebKit::WebPageProxy::requestThumbnailWithOperation): Deleted.
(WebKit::WebPageProxy::requestThumbnailWithFileWrapper): Deleted.
(WebKit::WebPageProxy::requestThumbnailWithPath): Deleted.
(WebKit::WebPageProxy::scheduleActivityStateUpdate): Deleted.
(WebKit::WebPageProxy::addActivityStateUpdateCompletionHandler): Deleted.
(WebKit::WebPageProxy::createAppHighlightInSelectedRange): Deleted.
(WebKit::WebPageProxy::restoreAppHighlightsAndScrollToIndex): Deleted.
(WebKit::WebPageProxy::setAppHighlightsVisibility): Deleted.
(WebKit::WebPageProxy::appHighlightsVisibility): Deleted.
(WebKit::WebPageProxy::appHighlightsOverlayRect): Deleted.
(WebKit::WebPageProxy::setUpHighlightsObserver): Deleted.
(WebKit::WebPageProxy::createNetworkExtensionsSandboxExtensions): Deleted.
(WebKit::WebPageProxy::canHandleContextMenuTranslation const): Deleted.
(WebKit::WebPageProxy::handleContextMenuTranslation): Deleted.
(WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo): Deleted.
(WebKit::WebPageProxy::setLastNavigationWasAppInitiated): Deleted.
(WebKit::WebPageProxy::lastNavigationWasAppInitiated): Deleted.
(WebKit::WebPageProxy::grantAccessToAssetServices): Deleted.
(WebKit::WebPageProxy::revokeAccessToAssetServices): Deleted.
(WebKit::WebPageProxy::switchFromStaticFontRegistryToUserFontRegistry): Deleted.
(WebKit::WebPageProxy::fontdMachExtensionHandle): Deleted.
(WebKit::WebPageProxy::contentsOfUserInterfaceItem): Deleted.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Deleted.
(WebKit::WebProcessPool::platformInvalidateContext): Deleted.
(WebKit::WebProcessPool::parentBundleDirectory): Deleted.
(WebKit::WebProcessPool::networkingCachesDirectory): Deleted.
(WebKit::WebProcessPool::webContentCachesDirectory): Deleted.
(WebKit::WebProcessPool::containerTemporaryDirectory): Deleted.
(WebKit::WebProcessPool::setJavaScriptConfigurationFileEnabledFromDefaults): Deleted.
(WebKit::WebProcessPool::omitPDFSupport): Deleted.
(WebKit::WebProcessPool::processSuppressionEnabled const): Deleted.
(WebKit::WebProcessPool::displayBrightness): Deleted.
(WebKit::WebProcessPool::backlightLevelDidChangeCallback): Deleted.
(WebKit::WebProcessPool::accessibilityPreferencesChangedCallback): Deleted.
(WebKit::WebProcessPool::mediaAccessibilityPreferencesChangedCallback): Deleted.
(WebKit::WebProcessPool::colorPreferencesDidChangeCallback): Deleted.
(WebKit::WebProcessPool::remoteWebInspectorEnabledCallback): Deleted.
(WebKit::WebProcessPool::startObservingPreferenceChanges): Deleted.
(WebKit::WebProcessPool::registerNotificationObservers): Deleted.
(WebKit::WebProcessPool::unregisterNotificationObservers): Deleted.
(WebKit::WebProcessPool::isURLKnownHSTSHost const): Deleted.
(WebKit::WebProcessPool::nominalFramesPerSecondForDisplay): Deleted.
(WebKit::WebProcessPool::startDisplayLink): Deleted.
(WebKit::WebProcessPool::stopDisplayLink): Deleted.
(WebKit::WebProcessPool::stopDisplayLinks): Deleted.
(WebKit::WebProcessPool::setDisplayLinkPreferredFramesPerSecond): Deleted.
(WebKit::WebProcessPool::setDisplayLinkForDisplayWantsFullSpeedUpdates): Deleted.
(WebKit::WebProcessPool::setCookieStoragePartitioningEnabled): Deleted.
(WebKit::WebProcessPool::clearPermanentCredentialsForProtectionSpace): Deleted.
(WebKit::networkProcessLatencyQOS): Deleted.
(WebKit::networkProcessThroughputQOS): Deleted.
(WebKit::webProcessLatencyQOS): Deleted.
(WebKit::webProcessThroughputQOS): Deleted.
(WebKit::WebProcessPool::applicationIsAboutToSuspend): Deleted.
(WebKit::WebProcessPool::notifyProcessPoolsApplicationIsAboutToSuspend): Deleted.
(WebKit::WebProcessPool::initializeClassesForParameterCoding): Deleted.
(WebKit::WebProcessPool::allowedClassesForParameterCoding const): Deleted.
(WebKit::WebProcessPool::notifyPreferencesChanged): Deleted.
(WebKit::webProcessPoolHighDynamicRangeDidChangeCallback): Deleted.
(WebKit::WebProcessPool::registerHighDynamicRangeChangeCallback): Deleted.
(WebKit::WebProcessPool::systemWillSleep): Deleted.
(WebKit::WebProcessPool::systemDidWake): Deleted.

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::publishProgress):
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::GPUProcessProxy):
(WebKit::addCameraSandboxExtensions):
(WebKit::addMicrophoneSandboxExtension):
(WebKit::addTCCDSandboxExtension):
(WebKit::gpuProcessSessionParameters):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
(WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):

  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp:

(WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::addSource):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest):

  • UIProcess/UserMediaProcessManager.cpp:

(WebKit::UserMediaProcessManager::willCreateMediaStream):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
(WebKit::WebPageProxy::didChooseFilesForOpenPanelWithDisplayStringAndIcon):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::webProcessDataStoreParameters):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::processDidFinishLaunching):
(WebKit::WebProcessPool::resumeDownload):
(WebKit::WebProcessPool::startMemorySampler):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::platformSetNetworkParameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • WebProcess/FileAPI/BlobRegistryProxy.cpp:

(WebKit::BlobRegistryProxy::registerFileBlobURL):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::load):

Location:
trunk/Source/WebKit
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r281012 r281032  
     12021-08-13  Alex Christensen  <achristensen@webkit.org>
     2
     3        SandboxExtension::Handle creation should return std::optional instead of bool
     4        https://bugs.webkit.org/show_bug.cgi?id=228875
     5
     6        Reviewed by Youenn Fablet.
     7
     8        This modernizes the code somewhat.
     9        This makes it easier to write code that realizes that handle creation can fail.
     10        This is a step towards removing the unnecessary abstraction HandleArray.
     11
     12        * NetworkProcess/NetworkResourceLoadParameters.cpp:
     13        (WebKit::NetworkResourceLoadParameters::encode const):
     14        * Platform/IPC/FormDataReference.h:
     15        (IPC::FormDataReference::encode const):
     16        * Shared/Cocoa/SandboxExtensionCocoa.mm:
     17        (WebKit::SandboxExtension::createHandleWithoutResolvingPath):
     18        (WebKit::SandboxExtension::createHandle):
     19        (WebKit::createHandlesForResources):
     20        (WebKit::SandboxExtension::createReadOnlyHandlesForFiles):
     21        (WebKit::SandboxExtension::createHandleForReadWriteDirectory):
     22        (WebKit::SandboxExtension::createHandleForTemporaryFile):
     23        (WebKit::SandboxExtension::createHandleForGenericExtension):
     24        (WebKit::SandboxExtension::createHandleForMachLookup):
     25        (WebKit::SandboxExtension::createHandlesForMachLookup):
     26        (WebKit::SandboxExtension::createHandleForReadByAuditToken):
     27        (WebKit::SandboxExtension::createHandleForIOKitClassExtension):
     28        (WebKit::SandboxExtension::createHandlesForIOKitClassExtensions):
     29        * Shared/SandboxExtension.h:
     30        (WebKit::SandboxExtension::createHandle):
     31        (WebKit::SandboxExtension::createHandleWithoutResolvingPath):
     32        (WebKit::SandboxExtension::createHandleForReadWriteDirectory):
     33        (WebKit::SandboxExtension::createHandleForTemporaryFile):
     34        (WebKit::SandboxExtension::createHandleForGenericExtension):
     35        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
     36        (WebKit::WebPageProxy::addPlatformLoadParameters):
     37        (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): Deleted.
     38        (WebKit::WebPageProxy::scrollingUpdatesDisabledForTesting): Deleted.
     39        (WebKit::WebPageProxy::startDrag): Deleted.
     40        (WebKit::WebPageProxy::setPromisedDataForImage): Deleted.
     41        (WebKit::WebPageProxy::setDragCaretRect): Deleted.
     42        (WebKit::WebPageProxy::platformRegisterAttachment): Deleted.
     43        (WebKit::WebPageProxy::platformCloneAttachment): Deleted.
     44        (WebKit::WebPageProxy::performDictionaryLookupAtLocation): Deleted.
     45        (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): Deleted.
     46        (WebKit::WebPageProxy::insertDictatedTextAsync): Deleted.
     47        (WebKit::WebPageProxy::platformDictationAlternatives): Deleted.
     48        (WebKit::WebPageProxy::errorForUnpermittedAppBoundDomainNavigation): Deleted.
     49        (WebKit::WebPageProxy::paymentCoordinatorConnection): Deleted.
     50        (WebKit::WebPageProxy::paymentCoordinatorBoundInterfaceIdentifier): Deleted.
     51        (WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Deleted.
     52        (WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Deleted.
     53        (WebKit::WebPageProxy::paymentCoordinatorAddMessageReceiver): Deleted.
     54        (WebKit::WebPageProxy::paymentCoordinatorRemoveMessageReceiver): Deleted.
     55        (WebKit::WebPageProxy::didStartSpeaking): Deleted.
     56        (WebKit::WebPageProxy::didFinishSpeaking): Deleted.
     57        (WebKit::WebPageProxy::didPauseSpeaking): Deleted.
     58        (WebKit::WebPageProxy::didResumeSpeaking): Deleted.
     59        (WebKit::WebPageProxy::speakingErrorOccurred): Deleted.
     60        (WebKit::WebPageProxy::boundaryEventOccurred): Deleted.
     61        (WebKit::WebPageProxy::voicesDidChange): Deleted.
     62        (WebKit::WebPageProxy::didCreateContextInWebProcessForVisibilityPropagation): Deleted.
     63        (WebKit::WebPageProxy::didCreateContextInGPUProcessForVisibilityPropagation): Deleted.
     64        (WebKit::WebPageProxy::grantAccessToPreferenceService): Deleted.
     65        (WebKit::WebPageProxy::mediaUsageManager): Deleted.
     66        (WebKit::WebPageProxy::addMediaUsageManagerSession): Deleted.
     67        (WebKit::WebPageProxy::updateMediaUsageManagerSessionState): Deleted.
     68        (WebKit::WebPageProxy::removeMediaUsageManagerSession): Deleted.
     69        (WebKit::convertPlatformImageToBitmap): Deleted.
     70        (WebKit::WebPageProxy::requestThumbnailWithOperation): Deleted.
     71        (WebKit::WebPageProxy::requestThumbnailWithFileWrapper): Deleted.
     72        (WebKit::WebPageProxy::requestThumbnailWithPath): Deleted.
     73        (WebKit::WebPageProxy::scheduleActivityStateUpdate): Deleted.
     74        (WebKit::WebPageProxy::addActivityStateUpdateCompletionHandler): Deleted.
     75        (WebKit::WebPageProxy::createAppHighlightInSelectedRange): Deleted.
     76        (WebKit::WebPageProxy::restoreAppHighlightsAndScrollToIndex): Deleted.
     77        (WebKit::WebPageProxy::setAppHighlightsVisibility): Deleted.
     78        (WebKit::WebPageProxy::appHighlightsVisibility): Deleted.
     79        (WebKit::WebPageProxy::appHighlightsOverlayRect): Deleted.
     80        (WebKit::WebPageProxy::setUpHighlightsObserver): Deleted.
     81        (WebKit::WebPageProxy::createNetworkExtensionsSandboxExtensions): Deleted.
     82        (WebKit::WebPageProxy::canHandleContextMenuTranslation const): Deleted.
     83        (WebKit::WebPageProxy::handleContextMenuTranslation): Deleted.
     84        (WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo): Deleted.
     85        (WebKit::WebPageProxy::setLastNavigationWasAppInitiated): Deleted.
     86        (WebKit::WebPageProxy::lastNavigationWasAppInitiated): Deleted.
     87        (WebKit::WebPageProxy::grantAccessToAssetServices): Deleted.
     88        (WebKit::WebPageProxy::revokeAccessToAssetServices): Deleted.
     89        (WebKit::WebPageProxy::switchFromStaticFontRegistryToUserFontRegistry): Deleted.
     90        (WebKit::WebPageProxy::fontdMachExtensionHandle): Deleted.
     91        (WebKit::WebPageProxy::contentsOfUserInterfaceItem): Deleted.
     92        * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
     93        (WebKit::WebPasteboardProxy::getPasteboardPathnamesForType):
     94        * UIProcess/Cocoa/WebProcessPoolCocoa.mm:
     95        (WebKit::WebProcessPool::platformInitializeWebProcess):
     96        (WebKit::WebProcessPool::platformInitializeNetworkProcess): Deleted.
     97        (WebKit::WebProcessPool::platformInvalidateContext): Deleted.
     98        (WebKit::WebProcessPool::parentBundleDirectory): Deleted.
     99        (WebKit::WebProcessPool::networkingCachesDirectory): Deleted.
     100        (WebKit::WebProcessPool::webContentCachesDirectory): Deleted.
     101        (WebKit::WebProcessPool::containerTemporaryDirectory): Deleted.
     102        (WebKit::WebProcessPool::setJavaScriptConfigurationFileEnabledFromDefaults): Deleted.
     103        (WebKit::WebProcessPool::omitPDFSupport): Deleted.
     104        (WebKit::WebProcessPool::processSuppressionEnabled const): Deleted.
     105        (WebKit::WebProcessPool::displayBrightness): Deleted.
     106        (WebKit::WebProcessPool::backlightLevelDidChangeCallback): Deleted.
     107        (WebKit::WebProcessPool::accessibilityPreferencesChangedCallback): Deleted.
     108        (WebKit::WebProcessPool::mediaAccessibilityPreferencesChangedCallback): Deleted.
     109        (WebKit::WebProcessPool::colorPreferencesDidChangeCallback): Deleted.
     110        (WebKit::WebProcessPool::remoteWebInspectorEnabledCallback): Deleted.
     111        (WebKit::WebProcessPool::startObservingPreferenceChanges): Deleted.
     112        (WebKit::WebProcessPool::registerNotificationObservers): Deleted.
     113        (WebKit::WebProcessPool::unregisterNotificationObservers): Deleted.
     114        (WebKit::WebProcessPool::isURLKnownHSTSHost const): Deleted.
     115        (WebKit::WebProcessPool::nominalFramesPerSecondForDisplay): Deleted.
     116        (WebKit::WebProcessPool::startDisplayLink): Deleted.
     117        (WebKit::WebProcessPool::stopDisplayLink): Deleted.
     118        (WebKit::WebProcessPool::stopDisplayLinks): Deleted.
     119        (WebKit::WebProcessPool::setDisplayLinkPreferredFramesPerSecond): Deleted.
     120        (WebKit::WebProcessPool::setDisplayLinkForDisplayWantsFullSpeedUpdates): Deleted.
     121        (WebKit::WebProcessPool::setCookieStoragePartitioningEnabled): Deleted.
     122        (WebKit::WebProcessPool::clearPermanentCredentialsForProtectionSpace): Deleted.
     123        (WebKit::networkProcessLatencyQOS): Deleted.
     124        (WebKit::networkProcessThroughputQOS): Deleted.
     125        (WebKit::webProcessLatencyQOS): Deleted.
     126        (WebKit::webProcessThroughputQOS): Deleted.
     127        (WebKit::WebProcessPool::applicationIsAboutToSuspend): Deleted.
     128        (WebKit::WebProcessPool::notifyProcessPoolsApplicationIsAboutToSuspend): Deleted.
     129        (WebKit::WebProcessPool::initializeClassesForParameterCoding): Deleted.
     130        (WebKit::WebProcessPool::allowedClassesForParameterCoding const): Deleted.
     131        (WebKit::WebProcessPool::notifyPreferencesChanged): Deleted.
     132        (WebKit::webProcessPoolHighDynamicRangeDidChangeCallback): Deleted.
     133        (WebKit::WebProcessPool::registerHighDynamicRangeChangeCallback): Deleted.
     134        (WebKit::WebProcessPool::systemWillSleep): Deleted.
     135        (WebKit::WebProcessPool::systemDidWake): Deleted.
     136        * UIProcess/Downloads/DownloadProxy.cpp:
     137        (WebKit::DownloadProxy::publishProgress):
     138        (WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
     139        * UIProcess/GPU/GPUProcessProxy.cpp:
     140        (WebKit::GPUProcessProxy::GPUProcessProxy):
     141        (WebKit::addCameraSandboxExtensions):
     142        (WebKit::addMicrophoneSandboxExtension):
     143        (WebKit::addTCCDSandboxExtension):
     144        (WebKit::gpuProcessSessionParameters):
     145        * UIProcess/Network/NetworkProcessProxy.cpp:
     146        (WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
     147        (WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):
     148        * UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp:
     149        (WebKit::SpeechRecognitionRemoteRealtimeMediaSourceManager::addSource):
     150        * UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
     151        (WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest):
     152        * UIProcess/UserMediaProcessManager.cpp:
     153        (WebKit::UserMediaProcessManager::willCreateMediaStream):
     154        * UIProcess/WebPageProxy.cpp:
     155        (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):
     156        (WebKit::WebPageProxy::didChooseFilesForOpenPanelWithDisplayStringAndIcon):
     157        * UIProcess/WebProcessPool.cpp:
     158        (WebKit::WebProcessPool::webProcessDataStoreParameters):
     159        (WebKit::WebProcessPool::initializeNewWebProcess):
     160        (WebKit::WebProcessPool::processDidFinishLaunching):
     161        (WebKit::WebProcessPool::resumeDownload):
     162        (WebKit::WebProcessPool::startMemorySampler):
     163        * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
     164        (WebKit::WebsiteDataStore::platformSetNetworkParameters):
     165        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
     166        (WebKit::WebsiteDataStore::parameters):
     167        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
     168        (WebKit::BlobRegistryProxy::registerFileBlobURL):
     169        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
     170        (WebKit::MediaPlayerPrivateRemote::load):
     171
    11722021-08-13  Youenn Fablet  <youenn@apple.com>
    2173
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp

    r280953 r281032  
    6666            if (auto* fileData = WTF::get_if<FormDataElement::EncodedFileData>(element.data)) {
    6767                const String& path = fileData->filename;
    68                 SandboxExtension::createHandle(path, SandboxExtension::Type::ReadOnly, requestBodySandboxExtensions[extensionIndex++]);
     68                if (auto handle = SandboxExtension::createHandle(path, SandboxExtension::Type::ReadOnly))
     69                    requestBodySandboxExtensions[extensionIndex++] = WTFMove(*handle);
    6970            }
    7071        }
     
    7576        SandboxExtension::Handle requestSandboxExtension;
    7677#if HAVE(AUDIT_TOKEN)
    77         if (networkProcessAuditToken)
    78             SandboxExtension::createHandleForReadByAuditToken(request.url().fileSystemPath(), *networkProcessAuditToken, requestSandboxExtension);
    79         else
    80 #endif
    81             SandboxExtension::createHandle(request.url().fileSystemPath(), SandboxExtension::Type::ReadOnly, requestSandboxExtension);
     78        if (networkProcessAuditToken) {
     79            if (auto handle = SandboxExtension::createHandleForReadByAuditToken(request.url().fileSystemPath(), *networkProcessAuditToken))
     80                requestSandboxExtension = WTFMove(*handle);
     81        } else
     82#endif
     83        {
     84            if (auto handle = SandboxExtension::createHandle(request.url().fileSystemPath(), SandboxExtension::Type::ReadOnly))
     85                requestSandboxExtension = WTFMove(*handle);
     86        }
    8287
    8388        encoder << requestSandboxExtension;
  • trunk/Source/WebKit/Platform/IPC/FormDataReference.h

    r278253 r281032  
    6262            if (auto* fileData = WTF::get_if<WebCore::FormDataElement::EncodedFileData>(element.data)) {
    6363                const String& path = fileData->filename;
    64                 WebKit::SandboxExtension::createHandle(path, WebKit::SandboxExtension::Type::ReadOnly, sandboxExtensionHandles[extensionIndex++]);
     64                if (auto handle = WebKit::SandboxExtension::createHandle(path, WebKit::SandboxExtension::Type::ReadOnly))
     65                    sandboxExtensionHandles[extensionIndex++] = WTFMove(*handle);
    6566            }
    6667        }
  • trunk/Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm

    r278253 r281032  
    277277}
    278278
    279 bool SandboxExtension::createHandleWithoutResolvingPath(const String& path, Type type, Handle& handle)
    280 {
     279auto SandboxExtension::createHandleWithoutResolvingPath(const String& path, Type type) -> std::optional<Handle>
     280{
     281    Handle handle;
    281282    ASSERT(!handle.m_sandboxExtension);
    282283
     
    284285    if (!handle.m_sandboxExtension) {
    285286        LOG_ERROR("Could not create a sandbox extension for '%s'", path.utf8().data());
    286         return false;
    287     }
    288     return true;
    289 }
    290 
    291 bool SandboxExtension::createHandle(const String& path, Type type, Handle& handle)
    292 {
    293     ASSERT(!handle.m_sandboxExtension);
    294 
    295     return createHandleWithoutResolvingPath(resolvePathForSandboxExtension(path), type, handle);
     287        return std::nullopt;
     288    }
     289    return WTFMove(handle);
     290}
     291
     292auto SandboxExtension::createHandle(const String& path, Type type) -> std::optional<Handle>
     293{
     294    return createHandleWithoutResolvingPath(resolvePathForSandboxExtension(path), type);
    296295}
    297296
    298297template <typename T>
    299 static SandboxExtension::HandleArray createHandlesForResources(const Vector<T>& resources, Function<bool(const T&, SandboxExtension::Handle& handle)>&& createFunction)
     298static SandboxExtension::HandleArray createHandlesForResources(const Vector<T>& resources, Function<std::optional<SandboxExtension::Handle>(const T&)>&& createFunction)
    300299{
    301300    SandboxExtension::HandleArray handleArray;
     
    306305    size_t currentHandle = 0;
    307306    for (const auto& resource : resources) {
    308         if (!createFunction(resource, handleArray[currentHandle]))
     307        auto handle = createFunction(resource);
     308        if (!handle)
    309309            continue;
     310        handleArray[currentHandle] = WTFMove(*handle);
    310311        ++currentHandle;
    311312    }
     
    316317SandboxExtension::HandleArray SandboxExtension::createReadOnlyHandlesForFiles(ASCIILiteral logLabel, const Vector<String>& paths)
    317318{
    318     return createHandlesForResources(paths, Function<bool(const String&, Handle&)>([&logLabel] (const String& path, Handle& handle) {
    319         if (!SandboxExtension::createHandle(path, SandboxExtension::Type::ReadOnly, handle)) {
     319    return createHandlesForResources<String>(paths, [&logLabel] (const String& path) {
     320        auto handle = SandboxExtension::createHandle(path, SandboxExtension::Type::ReadOnly);
     321        if (!handle) {
    320322            // This can legitimately fail if a directory containing the file is deleted after the file was chosen.
    321323            // We also have reports of cases where this likely fails for some unknown reason, <rdar://problem/10156710>.
    322324            WTFLogAlways("%s: could not create a sandbox extension for '%s'\n", logLabel.characters(), path.utf8().data());
    323325            ASSERT_NOT_REACHED();
    324             return false;
    325326        }
    326         return true;
    327     }));
    328 }
    329 
    330 bool SandboxExtension::createHandleForReadWriteDirectory(const String& path, SandboxExtension::Handle& handle)
     327        return handle;
     328    });
     329}
     330
     331auto SandboxExtension::createHandleForReadWriteDirectory(const String& path) -> std::optional<Handle>
    331332{
    332333    String resolvedPath = resolveAndCreateReadWriteDirectoryForSandboxExtension(path);
    333334    if (resolvedPath.isNull())
    334         return false;
    335 
    336     return SandboxExtension::createHandleWithoutResolvingPath(resolvedPath, SandboxExtension::Type::ReadWrite, handle);
    337 }
    338 
    339 String SandboxExtension::createHandleForTemporaryFile(const String& prefix, Type type, Handle& handle)
    340 {
     335        return std::nullopt;
     336    return SandboxExtension::createHandleWithoutResolvingPath(resolvedPath, SandboxExtension::Type::ReadWrite);
     337}
     338
     339auto SandboxExtension::createHandleForTemporaryFile(const String& prefix, Type type) -> std::optional<std::pair<Handle, String>>
     340{
     341    Handle handle;
    341342    ASSERT(!handle.m_sandboxExtension);
    342343   
    343344    Vector<char> path(PATH_MAX);
    344345    if (!confstr(_CS_DARWIN_USER_TEMP_DIR, path.data(), path.size()))
    345         return String();
     346        return std::nullopt;
    346347   
    347348    // Shrink the vector.   
     
    361362    if (!handle.m_sandboxExtension) {
    362363        WTFLogAlways("Could not create a sandbox extension for temporary file '%s'", path.data());
    363         return String();
    364     }
    365     return String(path.data());
    366 }
    367 
    368 bool SandboxExtension::createHandleForGenericExtension(ASCIILiteral extensionClass, Handle& handle)
    369 {
     364        return std::nullopt;
     365    }
     366    return {{ WTFMove(handle), String(path.data()) }};
     367}
     368
     369auto SandboxExtension::createHandleForGenericExtension(ASCIILiteral extensionClass) -> std::optional<Handle>
     370{
     371    Handle handle;
    370372    ASSERT(!handle.m_sandboxExtension);
    371373
     
    373375    if (!handle.m_sandboxExtension) {
    374376        WTFLogAlways("Could not create a '%s' sandbox extension", extensionClass.characters());
    375         return false;
    376     }
    377    
    378     return true;
    379 }
    380 
    381 bool SandboxExtension::createHandleForMachLookup(ASCIILiteral service, std::optional<audit_token_t> auditToken, Handle& handle, OptionSet<Flags> flags)
    382 {
     377        return std::nullopt;
     378    }
     379   
     380    return WTFMove(handle);
     381}
     382
     383auto SandboxExtension::createHandleForMachLookup(ASCIILiteral service, std::optional<audit_token_t> auditToken, OptionSet<Flags> flags) -> std::optional<Handle>
     384{
     385    Handle handle;
    383386    ASSERT(!handle.m_sandboxExtension);
    384387   
     
    386389    if (!handle.m_sandboxExtension) {
    387390        WTFLogAlways("Could not create a '%s' sandbox extension", service.characters());
    388         return false;
    389     }
    390    
    391     return true;
     391        return std::nullopt;
     392    }
     393   
     394    return WTFMove(handle);
    392395}
    393396
    394397SandboxExtension::HandleArray SandboxExtension::createHandlesForMachLookup(const Vector<ASCIILiteral>& services, std::optional<audit_token_t> auditToken, OptionSet<Flags> flags)
    395398{
    396     return createHandlesForResources(services, Function<bool(const ASCIILiteral&, Handle&)>([auditToken, flags] (const ASCIILiteral& service, Handle& handle) {
    397         if (!SandboxExtension::createHandleForMachLookup(service, auditToken, handle, flags)) {
    398             ASSERT_NOT_REACHED();
    399             return false;
    400         }
    401         return true;
    402     }));
    403 }
    404 
    405 bool SandboxExtension::createHandleForReadByAuditToken(const String& path, audit_token_t auditToken, Handle& handle)
    406 {
     399    return createHandlesForResources<ASCIILiteral>(services, [auditToken, flags] (const ASCIILiteral& service) -> std::optional<Handle> {
     400        auto handle = SandboxExtension::createHandleForMachLookup(service, auditToken, flags);
     401        ASSERT(handle);
     402        return handle;
     403    });
     404}
     405
     406auto SandboxExtension::createHandleForReadByAuditToken(const String& path, audit_token_t auditToken) -> std::optional<Handle>
     407{
     408    Handle handle;
    407409    ASSERT(!handle.m_sandboxExtension);
    408410
     
    410412    if (!handle.m_sandboxExtension) {
    411413        LOG_ERROR("Could not create a sandbox extension for '%s'", path.utf8().data());
    412         return false;
    413     }
    414    
    415     return true;
    416 }
    417 
    418 bool SandboxExtension::createHandleForIOKitClassExtension(ASCIILiteral ioKitClass, std::optional<audit_token_t> auditToken, Handle& handle, OptionSet<Flags> flags)
    419 {
     414        return std::nullopt;
     415    }
     416   
     417    return WTFMove(handle);
     418}
     419
     420auto SandboxExtension::createHandleForIOKitClassExtension(ASCIILiteral ioKitClass, std::optional<audit_token_t> auditToken, OptionSet<Flags> flags) -> std::optional<Handle>
     421{
     422    Handle handle;
    420423    ASSERT(!handle.m_sandboxExtension);
    421424
     
    423426    if (!handle.m_sandboxExtension) {
    424427        LOG_ERROR("Could not create a sandbox extension for '%s'", ioKitClass.characters());
    425         return false;
    426     }
    427 
    428     return true;
     428        return std::nullopt;
     429    }
     430
     431    return WTFMove(handle);
    429432}
    430433
    431434SandboxExtension::HandleArray SandboxExtension::createHandlesForIOKitClassExtensions(const Vector<ASCIILiteral>& iokitClasses, std::optional<audit_token_t> auditToken, OptionSet<Flags> flags)
    432435{
    433     return createHandlesForResources(iokitClasses, Function<bool(const ASCIILiteral&, Handle&)>([auditToken, flags] (const ASCIILiteral& iokitClass, Handle& handle) {
    434         if (!SandboxExtension::createHandleForIOKitClassExtension(iokitClass, auditToken, handle, flags)) {
    435             ASSERT_NOT_REACHED();
    436             return false;
    437         }
    438         return true;
    439     }));
     436    return createHandlesForResources<ASCIILiteral>(iokitClasses, [auditToken, flags] (const ASCIILiteral& iokitClass) {
     437        auto handle = SandboxExtension::createHandleForIOKitClassExtension(iokitClass, auditToken, flags);
     438        ASSERT(handle);
     439        return handle;
     440    });
    440441}
    441442
  • trunk/Source/WebKit/Shared/SandboxExtension.h

    r278253 r281032  
    113113   
    114114    static RefPtr<SandboxExtension> create(Handle&&);
    115     static bool createHandle(const String& path, Type, Handle&);
     115    static std::optional<Handle> createHandle(const String& path, Type);
    116116    static SandboxExtension::HandleArray createReadOnlyHandlesForFiles(ASCIILiteral logLabel, const Vector<String>& paths);
    117     static bool createHandleWithoutResolvingPath(const String& path, Type, Handle&);
    118     static bool createHandleForReadWriteDirectory(const String& path, Handle&); // Will attempt to create the directory.
    119     static String createHandleForTemporaryFile(const String& prefix, Type, Handle&);
    120     static bool createHandleForGenericExtension(ASCIILiteral extensionClass, Handle&);
     117    static std::optional<Handle> createHandleWithoutResolvingPath(const String& path, Type);
     118    static std::optional<Handle> createHandleForReadWriteDirectory(const String& path); // Will attempt to create the directory.
     119    static std::optional<std::pair<Handle, String>> createHandleForTemporaryFile(const String& prefix, Type);
     120    static std::optional<Handle> createHandleForGenericExtension(ASCIILiteral extensionClass);
    121121#if HAVE(AUDIT_TOKEN)
    122     static bool createHandleForMachLookup(ASCIILiteral service, std::optional<audit_token_t>, Handle&, OptionSet<Flags> = Flags::Default);
     122    static std::optional<Handle> createHandleForMachLookup(ASCIILiteral service, std::optional<audit_token_t>, OptionSet<Flags> = Flags::Default);
    123123    static HandleArray createHandlesForMachLookup(const Vector<ASCIILiteral>& services, std::optional<audit_token_t>, OptionSet<Flags> = Flags::Default);
    124     static bool createHandleForReadByAuditToken(const String& path, audit_token_t, Handle&);
    125     static bool createHandleForIOKitClassExtension(ASCIILiteral iokitClass, std::optional<audit_token_t>, Handle&, OptionSet<Flags> = Flags::Default);
     124    static std::optional<Handle> createHandleForReadByAuditToken(const String& path, audit_token_t);
     125    static std::optional<Handle> createHandleForIOKitClassExtension(ASCIILiteral iokitClass, std::optional<audit_token_t>, OptionSet<Flags> = Flags::Default);
    126126    static HandleArray createHandlesForIOKitClassExtensions(const Vector<ASCIILiteral>& iokitClasses, std::optional<audit_token_t>, OptionSet<Flags> = Flags::Default);
    127127#endif
     
    163163inline auto SandboxExtension::HandleArray::decode(IPC::Decoder&) -> std::optional<HandleArray> { return { HandleArray() }; }
    164164inline RefPtr<SandboxExtension> SandboxExtension::create(Handle&&) { return nullptr; }
    165 inline bool SandboxExtension::createHandle(const String&, Type, Handle&) { return true; }
     165inline auto SandboxExtension::createHandle(const String&, Type) -> std::optional<Handle> { return {{ }}; }
    166166inline SandboxExtension::HandleArray SandboxExtension::createReadOnlyHandlesForFiles(ASCIILiteral, const Vector<String>&) { return { }; }
    167 inline bool SandboxExtension::createHandleWithoutResolvingPath(const String&, Type, Handle&) { return true; }
    168 inline bool SandboxExtension::createHandleForReadWriteDirectory(const String&, Handle&) { return true; }
    169 inline String SandboxExtension::createHandleForTemporaryFile(const String& /*prefix*/, Type, Handle&) {return String();}
    170 inline bool SandboxExtension::createHandleForGenericExtension(ASCIILiteral /*extensionClass*/, Handle&) { return true; }
     167inline auto SandboxExtension::createHandleWithoutResolvingPath(const String&, Type) -> std::optional<Handle> { return {{ }}; }
     168inline auto SandboxExtension::createHandleForReadWriteDirectory(const String&) -> std::optional<Handle> { return {{ }}; }
     169inline auto SandboxExtension::createHandleForTemporaryFile(const String& /*prefix*/, Type) -> std::optional<std::pair<Handle, String>> { return std::optional<std::pair<Handle, String>> { std::pair<Handle, String> { Handle { }, String { } } }; }
     170inline auto SandboxExtension::createHandleForGenericExtension(ASCIILiteral /*extensionClass*/) -> std::optional<Handle> { return {{ }}; }
    171171inline SandboxExtension::~SandboxExtension() { }
    172172inline bool SandboxExtension::revoke() { return true; }
  • trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm

    r280850 r281032  
    178178#if PLATFORM(IOS)
    179179    if (!process.hasManagedSessionSandboxAccess() && [getWebFilterEvaluatorClass() isManagedSession]) {
    180         SandboxExtension::Handle handle;
    181         SandboxExtension::createHandleForMachLookup("com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI"_s, std::nullopt, handle);
    182         loadParameters.contentFilterExtensionHandle = WTFMove(handle);
    183 
    184         SandboxExtension::Handle frontboardServiceExtensionHandle;
    185         if (SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices"_s, std::nullopt, frontboardServiceExtensionHandle))
    186             loadParameters.frontboardServiceExtensionHandle = WTFMove(frontboardServiceExtensionHandle);
     180        if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.uikit.viewservice.com.apple.WebContentFilter.remoteUI"_s, std::nullopt))
     181            loadParameters.contentFilterExtensionHandle = WTFMove(*handle);
     182
     183        if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices"_s, std::nullopt))
     184            loadParameters.frontboardServiceExtensionHandle = WTFMove(*handle);
    187185
    188186        process.markHasManagedSessionSandboxAccess();
     
    200198        if ([[NSFileManager defaultManager] fileExistsAtPath:files[0] isDirectory:&isDirectory] && !isDirectory) {
    201199            ASSERT(process().connection() && process().connection()->getAuditToken());
    202             if (process().connection() && process().connection()->getAuditToken())
    203                 SandboxExtension::createHandleForReadByAuditToken("/", *(process().connection()->getAuditToken()), fileReadHandle);
    204             else
    205                 SandboxExtension::createHandle("/", SandboxExtension::Type::ReadOnly, fileReadHandle);
     200            if (process().connection() && process().connection()->getAuditToken()) {
     201                if (auto handle = SandboxExtension::createHandleForReadByAuditToken("/", *(process().connection()->getAuditToken())))
     202                    fileReadHandle = WTFMove(*handle);
     203            } else if (auto handle = SandboxExtension::createHandle("/", SandboxExtension::Type::ReadOnly))
     204                fileReadHandle = WTFMove(*handle);
    206205            willAcquireUniversalFileReadSandboxExtension(m_process);
    207206        }
     
    213212        if (![[NSFileManager defaultManager] fileExistsAtPath:file])
    214213            continue;
    215         SandboxExtension::createHandle(file, SandboxExtension::Type::ReadOnly, fileUploadHandles[i]);
     214        if (auto handle = SandboxExtension::createHandle(file, SandboxExtension::Type::ReadOnly))
     215            fileUploadHandles[i] = WTFMove(*handle);
    216216    }
    217217}
     
    686686{
    687687    SandboxExtension::Handle mobileAssetHandleV2;
    688     SandboxExtension::createHandleForMachLookup("com.apple.mobileassetd.v2"_s, std::nullopt, mobileAssetHandleV2);
     688    if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.mobileassetd.v2"_s, std::nullopt))
     689        mobileAssetHandleV2 = WTFMove(*handle);
    689690    process().send(Messages::WebProcess::GrantAccessToAssetServices(mobileAssetHandleV2), 0);
    690691}
     
    703704{
    704705    SandboxExtension::Handle fontMachExtensionHandle;
    705     SandboxExtension::createHandleForMachLookup("com.apple.fonts"_s, std::nullopt, fontMachExtensionHandle);
     706    if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.fonts"_s, std::nullopt))
     707        fontMachExtensionHandle = WTFMove(*handle);
    706708    return fontMachExtensionHandle;
    707709}
  • trunk/Source/WebKit/UIProcess/Cocoa/WebPasteboardProxyCocoa.mm

    r278244 r281032  
    179179                if (![[NSFileManager defaultManager] fileExistsAtPath:filename])
    180180                    continue;
    181                 SandboxExtension::createHandle(filename, SandboxExtension::Type::ReadOnly, sandboxExtensions[i]);
     181                if (auto handle = SandboxExtension::createHandle(filename, SandboxExtension::Type::ReadOnly))
     182                    sandboxExtensions[i] = WTFMove(*handle);
    182183            }
    183184#endif
  • trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm

    r280841 r281032  
    329329    // FIXME: This should really be configurable; we shouldn't just blindly allow read access to the UI process bundle.
    330330    parameters.uiProcessBundleResourcePath = m_resolvedPaths.uiProcessBundleResourcePath;
    331     SandboxExtension::createHandleWithoutResolvingPath(parameters.uiProcessBundleResourcePath, SandboxExtension::Type::ReadOnly, parameters.uiProcessBundleResourcePathExtensionHandle);
     331    if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(parameters.uiProcessBundleResourcePath, SandboxExtension::Type::ReadOnly))
     332        parameters.uiProcessBundleResourcePathExtensionHandle = WTFMove(*handle);
    332333
    333334    parameters.uiProcessBundleIdentifier = applicationBundleIdentifier();
     
    337338   
    338339#if PLATFORM(IOS_FAMILY)
    339     if (!m_resolvedPaths.cookieStorageDirectory.isEmpty())
    340         SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.cookieStorageDirectory, SandboxExtension::Type::ReadWrite, parameters.cookieStorageDirectoryExtensionHandle);
    341 
    342     if (!m_resolvedPaths.containerCachesDirectory.isEmpty())
    343         SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.containerCachesDirectory, SandboxExtension::Type::ReadWrite, parameters.containerCachesDirectoryExtensionHandle);
    344 
    345     if (!m_resolvedPaths.containerTemporaryDirectory.isEmpty())
    346         SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.containerTemporaryDirectory, SandboxExtension::Type::ReadWrite, parameters.containerTemporaryDirectoryExtensionHandle);
     340    if (!m_resolvedPaths.cookieStorageDirectory.isEmpty()) {
     341        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.cookieStorageDirectory, SandboxExtension::Type::ReadWrite))
     342            parameters.cookieStorageDirectoryExtensionHandle = WTFMove(*handle);
     343    }
     344
     345    if (!m_resolvedPaths.containerCachesDirectory.isEmpty()) {
     346        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.containerCachesDirectory, SandboxExtension::Type::ReadWrite))
     347            parameters.containerCachesDirectoryExtensionHandle = WTFMove(*handle);
     348    }
     349
     350    if (!m_resolvedPaths.containerTemporaryDirectory.isEmpty()) {
     351        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.containerTemporaryDirectory, SandboxExtension::Type::ReadWrite))
     352            parameters.containerTemporaryDirectoryExtensionHandle = WTFMove(*handle);
     353    }
    347354#endif
    348355#if PLATFORM(COCOA) && ENABLE(REMOTE_INSPECTOR)
    349356    if (WebProcessProxy::shouldEnableRemoteInspector()) {
    350         SandboxExtension::Handle enableRemoteWebInspectorExtensionHandle;
    351         if (SandboxExtension::createHandleForMachLookup("com.apple.webinspector"_s, std::nullopt, enableRemoteWebInspectorExtensionHandle))
    352             parameters.enableRemoteWebInspectorExtensionHandle = WTFMove(enableRemoteWebInspectorExtensionHandle);
     357        if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.webinspector"_s, std::nullopt))
     358            parameters.enableRemoteWebInspectorExtensionHandle = WTFMove(*handle);
    353359    }
    354360#endif
     
    396402#if PLATFORM(MAC) || PLATFORM(MACCATALYST)
    397403    // FIXME: Remove this and related parameter when <rdar://problem/29448368> is fixed.
    398     if (isSafari && mediaDevicesEnabled && !m_defaultPageGroup->preferences().captureAudioInUIProcessEnabled() && !m_defaultPageGroup->preferences().captureAudioInGPUProcessEnabled())
    399         SandboxExtension::createHandleForGenericExtension("com.apple.webkit.microphone"_s, parameters.audioCaptureExtensionHandle);
     404    if (isSafari && mediaDevicesEnabled && !m_defaultPageGroup->preferences().captureAudioInUIProcessEnabled() && !m_defaultPageGroup->preferences().captureAudioInGPUProcessEnabled()) {
     405        if (auto handle = SandboxExtension::createHandleForGenericExtension("com.apple.webkit.microphone"_s))
     406            parameters.audioCaptureExtensionHandle = WTFMove(*handle);
     407    }
    400408#else
    401409    UNUSED_PARAM(mediaDevicesEnabled);
     
    433441
    434442    if (requiresContainerManagerAccess()) {
    435         SandboxExtension::Handle handle;
    436         SandboxExtension::createHandleForMachLookup("com.apple.containermanagerd"_s, std::nullopt, handle);
    437         parameters.containerManagerExtensionHandle = WTFMove(handle);
     443        if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.containermanagerd"_s, std::nullopt))
     444            parameters.containerManagerExtensionHandle = WTFMove(*handle);
    438445    }
    439446
     
    454461#if PLATFORM(IOS_FAMILY) && !PLATFORM(MACCATALYST)
    455462    if (!_MGCacheValid()) {
    456         SandboxExtension::Handle handle;
    457         SandboxExtension::createHandleForMachLookup("com.apple.mobilegestalt.xpc"_s, std::nullopt, handle);
    458         parameters.mobileGestaltExtensionHandle = WTFMove(handle);
     463        if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.mobilegestalt.xpc"_s, std::nullopt))
     464            parameters.mobileGestaltExtensionHandle = WTFMove(*handle);
    459465    }
    460466#endif
    461467
    462468#if PLATFORM(MAC)
    463     SandboxExtension::Handle launchServicesExtensionHandle;
    464     SandboxExtension::createHandleForMachLookup("com.apple.coreservices.launchservicesd"_s, std::nullopt, launchServicesExtensionHandle);
    465     parameters.launchServicesExtensionHandle = WTFMove(launchServicesExtensionHandle);
     469    if (auto launchServicesExtensionHandle = SandboxExtension::createHandleForMachLookup("com.apple.coreservices.launchservicesd"_s, std::nullopt))
     470        parameters.launchServicesExtensionHandle = WTFMove(*launchServicesExtensionHandle);
    466471#endif
    467472
  • trunk/Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp

    r270638 r281032  
    108108
    109109    SandboxExtension::Handle handle;
    110     bool createdSandboxExtension = SandboxExtension::createHandle(URL.fileSystemPath(), SandboxExtension::Type::ReadWrite, handle);
    111     ASSERT_UNUSED(createdSandboxExtension, createdSandboxExtension);
     110    if (auto createdHandle = SandboxExtension::createHandle(URL.fileSystemPath(), SandboxExtension::Type::ReadWrite))
     111        handle = WTFMove(*createdHandle);
     112    else
     113        ASSERT_NOT_REACHED();
     114
    112115    m_dataStore->networkProcess().send(Messages::NetworkProcess::PublishDownloadProgress(m_downloadID, URL, handle), 0);
    113116}
     
    164167    m_client->decideDestinationWithSuggestedFilename(*this, response, ResourceResponseBase::sanitizeSuggestedFilename(suggestedFilename), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (AllowOverwrite allowOverwrite, String destination) mutable {
    165168        SandboxExtension::Handle sandboxExtensionHandle;
    166         if (!destination.isNull())
    167             SandboxExtension::createHandle(destination, SandboxExtension::Type::ReadWrite, sandboxExtensionHandle);
     169        if (!destination.isNull()) {
     170            if (auto handle = SandboxExtension::createHandle(destination, SandboxExtension::Type::ReadWrite))
     171                sandboxExtensionHandle = WTFMove(*handle);
     172        }
    168173
    169174        setDestinationFilename(destination);
  • trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp

    r280795 r281032  
    144144    // FIXME: Remove this and related parameter when <rdar://problem/29448368> is fixed.
    145145    if (MacApplication::isSafari()) {
    146         SandboxExtension::createHandleForGenericExtension("com.apple.webkit.microphone"_s, parameters.microphoneSandboxExtensionHandle);
     146        if (auto handle = SandboxExtension::createHandleForGenericExtension("com.apple.webkit.microphone"_s))
     147            parameters.microphoneSandboxExtensionHandle = WTFMove(*handle);
    147148        m_hasSentMicrophoneSandboxExtension = true;
    148149    }
     
    156157    auto containerTemporaryDirectory = resolveAndCreateReadWriteDirectoryForSandboxExtension(WebProcessPool::containerTemporaryDirectory());
    157158
    158     if (!containerCachesDirectory.isEmpty())
    159         SandboxExtension::createHandleWithoutResolvingPath(containerCachesDirectory, SandboxExtension::Type::ReadWrite, parameters.containerCachesDirectoryExtensionHandle);
    160 
    161     if (!containerTemporaryDirectory.isEmpty())
    162         SandboxExtension::createHandleWithoutResolvingPath(containerTemporaryDirectory, SandboxExtension::Type::ReadWrite, parameters.containerTemporaryDirectoryExtensionHandle);
     159    if (!containerCachesDirectory.isEmpty()) {
     160        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(containerCachesDirectory, SandboxExtension::Type::ReadWrite))
     161            parameters.containerCachesDirectoryExtensionHandle = WTFMove(*handle);
     162    }
     163
     164    if (!containerTemporaryDirectory.isEmpty()) {
     165        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(containerTemporaryDirectory, SandboxExtension::Type::ReadWrite))
     166            parameters.containerTemporaryDirectoryExtensionHandle = WTFMove(*handle);
     167    }
    163168#endif
    164169#if PLATFORM(IOS_FAMILY)
     
    200205static inline bool addCameraSandboxExtensions(Vector<SandboxExtension::Handle>& extensions)
    201206{
    202     SandboxExtension::Handle sandboxExtensionHandle;
    203     if (!SandboxExtension::createHandleForGenericExtension("com.apple.webkit.camera"_s, sandboxExtensionHandle)) {
     207    auto sandboxExtensionHandle = SandboxExtension::createHandleForGenericExtension("com.apple.webkit.camera"_s);
     208    if (!sandboxExtensionHandle) {
    204209        RELEASE_LOG_ERROR(WebRTC, "Unable to create com.apple.webkit.camera sandbox extension");
    205210        return false;
     
    207212#if HAVE(AUDIT_TOKEN)
    208213        if (shouldCreateAppleCameraServiceSandboxExtension()) {
    209             SandboxExtension::Handle appleCameraServicePathSandboxExtensionHandle;
    210             if (!SandboxExtension::createHandleForMachLookup("com.apple.applecamerad"_s, std::nullopt, appleCameraServicePathSandboxExtensionHandle)) {
     214            auto appleCameraServicePathSandboxExtensionHandle = SandboxExtension::createHandleForMachLookup("com.apple.applecamerad"_s, std::nullopt);
     215            if (!appleCameraServicePathSandboxExtensionHandle) {
    211216                RELEASE_LOG_ERROR(WebRTC, "Unable to create com.apple.applecamerad sandbox extension");
    212217                return false;
    213218            }
    214219#if HAVE(ADDITIONAL_APPLE_CAMERA_SERVICE)
    215             SandboxExtension::Handle additionalAppleCameraServicePathSandboxExtensionHandle;
    216             if (!SandboxExtension::createHandleForMachLookup("com.apple.appleh13camerad"_s, std::nullopt, additionalAppleCameraServicePathSandboxExtensionHandle)) {
     220            auto additionalAppleCameraServicePathSandboxExtensionHandle = SandboxExtension::createHandleForMachLookup("com.apple.appleh13camerad"_s, std::nullopt);
     221            if (!additionalAppleCameraServicePathSandboxExtensionHandle) {
    217222                RELEASE_LOG_ERROR(WebRTC, "Unable to create com.apple.appleh13camerad sandbox extension");
    218223                return false;
    219224            }
    220             extensions.append(WTFMove(additionalAppleCameraServicePathSandboxExtensionHandle));
    221 #endif
    222             extensions.append(WTFMove(appleCameraServicePathSandboxExtensionHandle));
     225            extensions.append(WTFMove(*additionalAppleCameraServicePathSandboxExtensionHandle));
     226#endif
     227            extensions.append(WTFMove(*appleCameraServicePathSandboxExtensionHandle));
    223228        }
    224229#endif // HAVE(AUDIT_TOKEN)
    225230
    226     extensions.append(WTFMove(sandboxExtensionHandle));
     231    extensions.append(WTFMove(*sandboxExtensionHandle));
    227232    return true;
    228233}
     
    230235static inline bool addMicrophoneSandboxExtension(Vector<SandboxExtension::Handle>& extensions)
    231236{
    232     SandboxExtension::Handle sandboxExtensionHandle;
    233     if (!SandboxExtension::createHandleForGenericExtension("com.apple.webkit.microphone"_s, sandboxExtensionHandle)) {
     237    auto sandboxExtensionHandle = SandboxExtension::createHandleForGenericExtension("com.apple.webkit.microphone"_s);
     238    if (!sandboxExtensionHandle) {
    234239        RELEASE_LOG_ERROR(WebRTC, "Unable to create com.apple.webkit.microphone sandbox extension");
    235240        return false;
    236241    }
    237     extensions.append(WTFMove(sandboxExtensionHandle));
     242    extensions.append(WTFMove(*sandboxExtensionHandle));
    238243    return true;
    239244}
     
    242247static inline bool addTCCDSandboxExtension(Vector<SandboxExtension::Handle>& extensions)
    243248{
    244     SandboxExtension::Handle sandboxExtensionHandle;
    245     if (!SandboxExtension::createHandleForMachLookup("com.apple.tccd"_s, std::nullopt, sandboxExtensionHandle)) {
     249    auto handle = SandboxExtension::createHandleForMachLookup("com.apple.tccd"_s, std::nullopt);
     250    if (!handle) {
    246251        RELEASE_LOG_ERROR(WebRTC, "Unable to create com.apple.tccd sandbox extension");
    247252        return false;
    248253    }
    249     extensions.append(WTFMove(sandboxExtensionHandle));
     254    extensions.append(WTFMove(*handle));
    250255    return true;
    251256}
     
    455460    parameters.mediaCacheDirectory = store.resolvedMediaCacheDirectory();
    456461    SandboxExtension::Handle mediaCacheDirectoryExtensionHandle;
    457     if (!parameters.mediaCacheDirectory.isEmpty())
    458         SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaCacheDirectory, SandboxExtension::Type::ReadWrite, parameters.mediaCacheDirectorySandboxExtensionHandle);
     462    if (!parameters.mediaCacheDirectory.isEmpty()) {
     463        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaCacheDirectory, SandboxExtension::Type::ReadWrite))
     464            parameters.mediaCacheDirectorySandboxExtensionHandle = WTFMove(*handle);
     465    }
    459466
    460467#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
    461468    parameters.mediaKeysStorageDirectory = store.resolvedMediaKeysDirectory();
    462469    SandboxExtension::Handle mediaKeysStorageDirectorySandboxExtensionHandle;
    463     if (!parameters.mediaKeysStorageDirectory.isEmpty())
    464         SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaKeysStorageDirectory, SandboxExtension::Type::ReadWrite, parameters.mediaKeysStorageDirectorySandboxExtensionHandle);
     470    if (!parameters.mediaKeysStorageDirectory.isEmpty()) {
     471        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(parameters.mediaKeysStorageDirectory, SandboxExtension::Type::ReadWrite))
     472            parameters.mediaKeysStorageDirectorySandboxExtensionHandle = WTFMove(*handle);
     473    }
    465474#endif
    466475
  • trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp

    r280611 r281032  
    151151        parameters.urlSchemesRegisteredForCustomProtocols.append(scheme);
    152152#if PLATFORM(IOS_FAMILY)
    153     if (String cookieStorageDirectory = WebProcessPool::cookieStorageDirectory(); !cookieStorageDirectory.isEmpty())
    154         SandboxExtension::createHandleForReadWriteDirectory(cookieStorageDirectory, parameters.cookieStorageDirectoryExtensionHandle);
    155     if (String containerCachesDirectory = WebProcessPool::networkingCachesDirectory(); !containerCachesDirectory.isEmpty())
    156         SandboxExtension::createHandleForReadWriteDirectory(containerCachesDirectory, parameters.containerCachesDirectoryExtensionHandle);
    157     if (String parentBundleDirectory = WebProcessPool::parentBundleDirectory(); !parentBundleDirectory.isEmpty())
    158         SandboxExtension::createHandle(parentBundleDirectory, SandboxExtension::Type::ReadOnly, parameters.parentBundleDirectoryExtensionHandle);
    159     SandboxExtension::createHandleForTemporaryFile(emptyString(), SandboxExtension::Type::ReadWrite, parameters.tempDirectoryExtensionHandle);
     153    if (String cookieStorageDirectory = WebProcessPool::cookieStorageDirectory(); !cookieStorageDirectory.isEmpty()) {
     154        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(cookieStorageDirectory))
     155            parameters.cookieStorageDirectoryExtensionHandle = WTFMove(*handle);
     156    }
     157    if (String containerCachesDirectory = WebProcessPool::networkingCachesDirectory(); !containerCachesDirectory.isEmpty()) {
     158        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(containerCachesDirectory))
     159            parameters.containerCachesDirectoryExtensionHandle = WTFMove(*handle);
     160    }
     161    if (String parentBundleDirectory = WebProcessPool::parentBundleDirectory(); !parentBundleDirectory.isEmpty()) {
     162        if (auto handle = SandboxExtension::createHandle(parentBundleDirectory, SandboxExtension::Type::ReadOnly))
     163            parameters.parentBundleDirectoryExtensionHandle = WTFMove(*handle);
     164    }
     165    if (auto handleAndFilePath = SandboxExtension::createHandleForTemporaryFile(emptyString(), SandboxExtension::Type::ReadWrite))
     166        parameters.tempDirectoryExtensionHandle = WTFMove(handleAndFilePath->first);
    160167#endif
    161168
     
    13021309    auto& cacheStorageDirectory = store->configuration().cacheStorageDirectory();
    13031310    SandboxExtension::Handle cacheStorageDirectoryExtensionHandle;
    1304     if (!cacheStorageDirectory.isEmpty())
    1305         SandboxExtension::createHandleForReadWriteDirectory(cacheStorageDirectory, cacheStorageDirectoryExtensionHandle);
     1311    if (!cacheStorageDirectory.isEmpty()) {
     1312        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(cacheStorageDirectory))
     1313            cacheStorageDirectoryExtensionHandle = WTFMove(*handle);
     1314    }
    13061315
    13071316    send(Messages::NetworkProcess::SetCacheStorageParameters { sessionID, cacheStorageDirectory, cacheStorageDirectoryExtensionHandle }, 0);
  • trunk/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp

    r270986 r281032  
    5050        if (m_sourcesNeedingSandboxExtension.size() == 1) {
    5151            SandboxExtension::Handle handleForTCCD;
    52             SandboxExtension::createHandleForMachLookup("com.apple.tccd"_s, m_connection->getAuditToken(), handleForTCCD);
     52            if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.tccd"_s, m_connection->getAuditToken()))
     53                handleForTCCD = WTFMove(*handle);
    5354            SandboxExtension::Handle handleForMicrophone;
    54             SandboxExtension::createHandleForGenericExtension("com.apple.webkit.microphone"_s, handleForMicrophone);
     55            if (auto handle = SandboxExtension::createHandleForGenericExtension("com.apple.webkit.microphone"_s))
     56                handleForMicrophone = WTFMove(*handle);
    5557            send(Messages::SpeechRecognitionRealtimeMediaSourceManager::GrantSandboxExtensions(handleForTCCD, handleForMicrophone));
    5658        }
  • trunk/Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp

    r278253 r281032  
    293293#if PLATFORM(COCOA)
    294294        if (!m_hasCreatedSandboxExtensionForTCCD && doesPageNeedTCCD(m_page)) {
    295             SandboxExtension::createHandleForMachLookup("com.apple.tccd"_s, m_page.process().connection()->getAuditToken(), handle);
     295            if (auto createdHandle = SandboxExtension::createHandleForMachLookup("com.apple.tccd"_s, m_page.process().connection()->getAuditToken()))
     296                handle = WTFMove(*createdHandle);
    296297            m_hasCreatedSandboxExtensionForTCCD = true;
    297298        }
  • trunk/Source/WebKit/UIProcess/UserMediaProcessManager.cpp

    r278185 r281032  
    101101            ids.reserveInitialCapacity(extensionCount);
    102102
    103             if (needsAudioSandboxExtension && SandboxExtension::createHandleForGenericExtension(audioExtensionPath, handles[--extensionCount]))
    104                 ids.uncheckedAppend(audioExtensionPath);
    105 
    106             if (needsVideoSandboxExtension && SandboxExtension::createHandleForGenericExtension(videoExtensionPath, handles[--extensionCount]))
    107                 ids.uncheckedAppend(videoExtensionPath);
     103            if (needsAudioSandboxExtension) {
     104                if (auto handle = SandboxExtension::createHandleForGenericExtension(audioExtensionPath)) {
     105                    handles[--extensionCount] = WTFMove(*handle);
     106                    ids.uncheckedAppend(audioExtensionPath);
     107                }
     108            }
     109
     110            if (needsVideoSandboxExtension) {
     111                if (auto handle = SandboxExtension::createHandleForGenericExtension(videoExtensionPath)) {
     112                    handles[--extensionCount] = WTFMove(*handle);
     113                    ids.uncheckedAppend(videoExtensionPath);
     114                }
     115            }
    108116
    109117            if (needsAppleCameraSandboxExtension) {
    110                 if (SandboxExtension::createHandleForMachLookup(appleCameraServicePath, std::nullopt, handles[--extensionCount]))
     118                if (auto handle = SandboxExtension::createHandleForMachLookup(appleCameraServicePath, std::nullopt)) {
     119                    handles[--extensionCount] = WTFMove(*handle);
    111120                    ids.uncheckedAppend(appleCameraServicePath);
     121                }
    112122#if HAVE(ADDITIONAL_APPLE_CAMERA_SERVICE)
    113                 if (SandboxExtension::createHandleForMachLookup(additionalAppleCameraServicePath, std::nullopt, handles[--extensionCount]))
     123                if (auto handle = SandboxExtension::createHandleForMachLookup(additionalAppleCameraServicePath, std::nullopt)) {
     124                    handles[--extensionCount] = WTFMove(*handle);
    114125                    ids.uncheckedAppend(additionalAppleCameraServicePath);
     126                }
    115127#endif
    116128            }
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r280758 r281032  
    12661266#if HAVE(AUDIT_TOKEN)
    12671267        ASSERT(process.connection() && process.connection()->getAuditToken());
    1268         if (process.connection() && process.connection()->getAuditToken())
    1269             createdExtension = SandboxExtension::createHandleForReadByAuditToken(resourceDirectoryURL.fileSystemPath(), *(process.connection()->getAuditToken()), sandboxExtensionHandle);
    1270         else
    1271 #endif
    1272             createdExtension = SandboxExtension::createHandle(resourceDirectoryURL.fileSystemPath(), SandboxExtension::Type::ReadOnly, sandboxExtensionHandle);
     1268        if (process.connection() && process.connection()->getAuditToken()) {
     1269            if (auto handle = SandboxExtension::createHandleForReadByAuditToken(resourceDirectoryURL.fileSystemPath(), *(process.connection()->getAuditToken()))) {
     1270                sandboxExtensionHandle = WTFMove(*handle);
     1271                createdExtension = true;
     1272            }
     1273        } else
     1274#endif
     1275        {
     1276            if (auto handle = SandboxExtension::createHandle(resourceDirectoryURL.fileSystemPath(), SandboxExtension::Type::ReadOnly)) {
     1277                sandboxExtensionHandle = WTFMove(*handle);
     1278                createdExtension = true;
     1279            }
     1280        }
    12731281
    12741282        if (createdExtension) {
     
    12871295#if HAVE(AUDIT_TOKEN)
    12881296    ASSERT(process.connection() && process.connection()->getAuditToken());
    1289     if (process.connection() && process.connection()->getAuditToken())
    1290         createdExtension = SandboxExtension::createHandleForReadByAuditToken("/", *(process.connection()->getAuditToken()), sandboxExtensionHandle);
    1291     else
    1292 #endif
    1293         createdExtension = SandboxExtension::createHandle("/", SandboxExtension::Type::ReadOnly, sandboxExtensionHandle);
     1297    if (process.connection() && process.connection()->getAuditToken()) {
     1298        if (auto handle = SandboxExtension::createHandleForReadByAuditToken("/", *(process.connection()->getAuditToken()))) {
     1299            createdExtension = true;
     1300            sandboxExtensionHandle = WTFMove(*handle);
     1301        }
     1302    } else
     1303#endif
     1304    {
     1305        if (auto handle = SandboxExtension::createHandle("/", SandboxExtension::Type::ReadOnly)) {
     1306            createdExtension = true;
     1307            sandboxExtensionHandle = WTFMove(*handle);
     1308        }
     1309    }
    12941310
    12951311    if (createdExtension) {
     
    13091325        return;
    13101326#if HAVE(AUDIT_TOKEN)
    1311     if (process.connection() && process.connection()->getAuditToken())
    1312         createdExtension = SandboxExtension::createHandleForReadByAuditToken(basePath, *(process.connection()->getAuditToken()), sandboxExtensionHandle);
    1313     else
    1314 #endif
    1315         createdExtension = SandboxExtension::createHandle(basePath, SandboxExtension::Type::ReadOnly, sandboxExtensionHandle);
     1327    if (process.connection() && process.connection()->getAuditToken()) {
     1328        if (auto handle = SandboxExtension::createHandleForReadByAuditToken(basePath, *(process.connection()->getAuditToken()))) {
     1329            sandboxExtensionHandle = WTFMove(*handle);
     1330            createdExtension = true;
     1331        }
     1332    } else
     1333#endif
     1334    {
     1335        if (auto handle = SandboxExtension::createHandle(basePath, SandboxExtension::Type::ReadOnly)) {
     1336            sandboxExtensionHandle = WTFMove(*handle);
     1337            createdExtension = true;
     1338        }
     1339    }
    13161340
    13171341    if (createdExtension)
     
    70027026    SandboxExtension::Handle frontboardServicesSandboxExtension, iconServicesSandboxExtension;
    70037027#if HAVE(FRONTBOARD_SYSTEM_APP_SERVICES)
    7004     SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices"_s, std::nullopt, frontboardServicesSandboxExtension);
    7005 #endif
    7006     SandboxExtension::createHandleForMachLookup("com.apple.iconservices"_s, std::nullopt, iconServicesSandboxExtension);
     7028    if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.frontboard.systemappservices"_s, std::nullopt))
     7029        frontboardServicesSandboxExtension = WTFMove(*handle);
     7030#endif
     7031    if (auto handle = SandboxExtension::createHandleForMachLookup("com.apple.iconservices"_s, std::nullopt))
     7032        iconServicesSandboxExtension = WTFMove(*handle);
    70077033
    70087034    send(Messages::WebPage::DidChooseFilesForOpenPanelWithDisplayStringAndIcon(fileURLs, displayString, iconData ? iconData->dataReference() : IPC::DataReference(), frontboardServicesSandboxExtension, iconServicesSandboxExtension));
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r280811 r281032  
    674674    String applicationCacheDirectory = websiteDataStore.resolvedApplicationCacheDirectory();
    675675    SandboxExtension::Handle applicationCacheDirectoryExtensionHandle;
    676     if (!applicationCacheDirectory.isEmpty())
    677         SandboxExtension::createHandleWithoutResolvingPath(applicationCacheDirectory, SandboxExtension::Type::ReadWrite, applicationCacheDirectoryExtensionHandle);
     676    if (!applicationCacheDirectory.isEmpty()) {
     677        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(applicationCacheDirectory, SandboxExtension::Type::ReadWrite))
     678            applicationCacheDirectoryExtensionHandle = WTFMove(*handle);
     679    }
    678680
    679681    String applicationCacheFlatFileSubdirectoryName = websiteDataStore.applicationCacheFlatFileSubdirectoryName();
     
    681683    String mediaCacheDirectory = websiteDataStore.resolvedMediaCacheDirectory();
    682684    SandboxExtension::Handle mediaCacheDirectoryExtensionHandle;
    683     if (!mediaCacheDirectory.isEmpty())
    684         SandboxExtension::createHandleWithoutResolvingPath(mediaCacheDirectory, SandboxExtension::Type::ReadWrite, mediaCacheDirectoryExtensionHandle);
     685    if (!mediaCacheDirectory.isEmpty()) {
     686        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(mediaCacheDirectory, SandboxExtension::Type::ReadWrite))
     687            mediaCacheDirectoryExtensionHandle = WTFMove(*handle);
     688    }
    685689
    686690    String mediaKeyStorageDirectory = websiteDataStore.resolvedMediaKeysDirectory();
    687691    SandboxExtension::Handle mediaKeyStorageDirectoryExtensionHandle;
    688     if (!mediaKeyStorageDirectory.isEmpty())
    689         SandboxExtension::createHandleWithoutResolvingPath(mediaKeyStorageDirectory, SandboxExtension::Type::ReadWrite, mediaKeyStorageDirectoryExtensionHandle);
     692    if (!mediaKeyStorageDirectory.isEmpty()) {
     693        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(mediaKeyStorageDirectory, SandboxExtension::Type::ReadWrite))
     694            mediaKeyStorageDirectoryExtensionHandle = WTFMove(*handle);
     695    }
    690696
    691697    String javaScriptConfigurationDirectory;
     
    696702
    697703    SandboxExtension::Handle javaScriptConfigurationDirectoryExtensionHandle;
    698     if (!javaScriptConfigurationDirectory.isEmpty())
    699         SandboxExtension::createHandleWithoutResolvingPath(javaScriptConfigurationDirectory, SandboxExtension::Type::ReadWrite, javaScriptConfigurationDirectoryExtensionHandle);
     704    if (!javaScriptConfigurationDirectory.isEmpty()) {
     705        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(javaScriptConfigurationDirectory, SandboxExtension::Type::ReadWrite))
     706            javaScriptConfigurationDirectoryExtensionHandle = WTFMove(*handle);
     707    }
    700708
    701709#if HAVE(ARKIT_INLINE_PREVIEW)
    702710    auto modelElementCacheDirectory = websiteDataStore.resolvedModelElementCacheDirectory();
    703711    SandboxExtension::Handle modelElementCacheDirectoryExtensionHandle;
    704     if (!modelElementCacheDirectory.isEmpty())
    705         SandboxExtension::createHandleWithoutResolvingPath(modelElementCacheDirectory, SandboxExtension::Type::ReadWrite, modelElementCacheDirectoryExtensionHandle);
     712    if (!modelElementCacheDirectory.isEmpty()) {
     713        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(modelElementCacheDirectory, SandboxExtension::Type::ReadWrite))
     714            modelElementCacheDirectoryExtensionHandle = WTFMove(*handle);
     715    }
    706716#endif
    707717
     
    743753
    744754    parameters.injectedBundlePath = m_resolvedPaths.injectedBundlePath;
    745     if (!parameters.injectedBundlePath.isEmpty())
    746         SandboxExtension::createHandleWithoutResolvingPath(parameters.injectedBundlePath, SandboxExtension::Type::ReadOnly, parameters.injectedBundlePathExtensionHandle);
     755    if (!parameters.injectedBundlePath.isEmpty()) {
     756        if (auto handle = SandboxExtension::createHandleWithoutResolvingPath(parameters.injectedBundlePath, SandboxExtension::Type::ReadOnly))
     757            parameters.injectedBundlePathExtensionHandle = WTFMove(*handle);
     758    }
    747759
    748760    parameters.additionalSandboxExtensionHandles.allocate(m_resolvedPaths.additionalWebProcessSandboxExtensionPaths.size());
    749     for (size_t i = 0, size = m_resolvedPaths.additionalWebProcessSandboxExtensionPaths.size(); i < size; ++i)
    750         SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.additionalWebProcessSandboxExtensionPaths[i], SandboxExtension::Type::ReadOnly, parameters.additionalSandboxExtensionHandles[i]);
     761    for (size_t i = 0, size = m_resolvedPaths.additionalWebProcessSandboxExtensionPaths.size(); i < size; ++i) {
     762        if (auto handle =  SandboxExtension::createHandleWithoutResolvingPath(m_resolvedPaths.additionalWebProcessSandboxExtensionPaths[i], SandboxExtension::Type::ReadOnly))
     763            parameters.additionalSandboxExtensionHandles[i] = WTFMove(*handle);
     764    }
    751765
    752766#if PLATFORM(IOS_FAMILY)
     
    902916        WallTime now = WallTime::now();
    903917        auto sampleLogFilePath = makeString("WebProcess", static_cast<unsigned long long>(now.secondsSinceEpoch().seconds()), "pid", process.processIdentifier());
    904         sampleLogFilePath = SandboxExtension::createHandleForTemporaryFile(sampleLogFilePath, SandboxExtension::Type::ReadWrite, sampleLogSandboxHandle);
     918        if (auto handleAndFilePath = SandboxExtension::createHandleForTemporaryFile(sampleLogFilePath, SandboxExtension::Type::ReadWrite)) {
     919            sampleLogSandboxHandle = WTFMove(handleAndFilePath->first);
     920            sampleLogFilePath = WTFMove(handleAndFilePath->second);
     921        }
    905922       
    906923        process.send(Messages::WebProcess::StartMemorySampler(sampleLogSandboxHandle, sampleLogFilePath, m_memorySamplerInterval), 0);
     
    11611178
    11621179    SandboxExtension::Handle sandboxExtensionHandle;
    1163     if (!path.isEmpty())
    1164         SandboxExtension::createHandle(path, SandboxExtension::Type::ReadWrite, sandboxExtensionHandle);
     1180    if (!path.isEmpty()) {
     1181        if (auto handle = SandboxExtension::createHandle(path, SandboxExtension::Type::ReadWrite))
     1182            sandboxExtensionHandle = WTFMove(*handle);
     1183    }
    11651184
    11661185    dataStore.networkProcess().send(Messages::NetworkProcess::ResumeDownload(dataStore.sessionID(), downloadProxy.downloadID(), resumeData.dataReference(), path, sandboxExtensionHandle, callDownloadDidStart), 0);
     
    14481467    WallTime now = WallTime::now();
    14491468    auto sampleLogFilePath = makeString("WebProcess", static_cast<unsigned long long>(now.secondsSinceEpoch().seconds()));
    1450     sampleLogFilePath = SandboxExtension::createHandleForTemporaryFile(sampleLogFilePath, SandboxExtension::Type::ReadWrite, sampleLogSandboxHandle);
     1469    if (auto handleAndFilePath = SandboxExtension::createHandleForTemporaryFile(sampleLogFilePath, SandboxExtension::Type::ReadWrite)) {
     1470        sampleLogSandboxHandle = WTFMove(handleAndFilePath->first);
     1471        sampleLogFilePath = WTFMove(handleAndFilePath->second);
     1472    }
    14511473   
    14521474    sendToAllProcesses(Messages::WebProcess::StartMemorySampler(sampleLogSandboxHandle, sampleLogFilePath, interval));
  • trunk/Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm

    r279477 r281032  
    151151    SandboxExtension::Handle alternativeServiceStorageDirectoryExtensionHandle;
    152152    String alternativeServiceStorageDirectory = resolvedAlternativeServicesStorageDirectory();
    153     if (!alternativeServiceStorageDirectory.isEmpty())
    154         SandboxExtension::createHandleForReadWriteDirectory(alternativeServiceStorageDirectory, alternativeServiceStorageDirectoryExtensionHandle);
     153    if (!alternativeServiceStorageDirectory.isEmpty()) {
     154        // FIXME: SandboxExtension::createHandleForReadWriteDirectory resolves the directory, but that has already been done. Remove this duplicate work.
     155        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(alternativeServiceStorageDirectory))
     156            alternativeServiceStorageDirectoryExtensionHandle = WTFMove(*handle);
     157    }
    155158#endif
    156159
     
    186189    parameters.uiProcessCookieStorageIdentifier = m_uiProcessCookieStorageIdentifier;
    187190
    188     if (!cookieFile.isEmpty())
    189         SandboxExtension::createHandleForReadWriteDirectory(FileSystem::parentPath(cookieFile), parameters.cookieStoragePathExtensionHandle);
     191    if (!cookieFile.isEmpty()) {
     192        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(FileSystem::parentPath(cookieFile)))
     193            parameters.cookieStoragePathExtensionHandle = WTFMove(*handle);
     194    }
    190195}
    191196
  • trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp

    r280015 r281032  
    19331933    auto resourceLoadStatisticsDirectory = m_configuration->resourceLoadStatisticsDirectory();
    19341934    SandboxExtension::Handle resourceLoadStatisticsDirectoryHandle;
    1935     if (!resourceLoadStatisticsDirectory.isEmpty())
    1936         SandboxExtension::createHandleForReadWriteDirectory(resourceLoadStatisticsDirectory, resourceLoadStatisticsDirectoryHandle);
     1935    if (!resourceLoadStatisticsDirectory.isEmpty()) {
     1936        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(resourceLoadStatisticsDirectory))
     1937            resourceLoadStatisticsDirectoryHandle = WTFMove(*handle);
     1938    }
    19371939
    19381940    auto networkCacheDirectory = resolvedNetworkCacheDirectory();
    19391941    SandboxExtension::Handle networkCacheDirectoryExtensionHandle;
    1940     if (!networkCacheDirectory.isEmpty())
    1941         SandboxExtension::createHandleForReadWriteDirectory(networkCacheDirectory, networkCacheDirectoryExtensionHandle);
     1942    if (!networkCacheDirectory.isEmpty()) {
     1943        // FIXME: SandboxExtension::createHandleForReadWriteDirectory resolves the directory, but that has already been done. Remove this duplicate work.
     1944        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(networkCacheDirectory))
     1945            networkCacheDirectoryExtensionHandle = WTFMove(*handle);
     1946    }
    19421947
    19431948    auto hstsStorageDirectory = resolvedHSTSStorageDirectory();
    19441949    SandboxExtension::Handle hstsStorageDirectoryExtensionHandle;
    1945     if (!hstsStorageDirectory.isEmpty())
    1946         SandboxExtension::createHandleForReadWriteDirectory(hstsStorageDirectory, hstsStorageDirectoryExtensionHandle);
     1950    if (!hstsStorageDirectory.isEmpty()) {
     1951        // FIXME: SandboxExtension::createHandleForReadWriteDirectory resolves the directory, but that has already been done. Remove this duplicate work.
     1952        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(hstsStorageDirectory))
     1953            hstsStorageDirectoryExtensionHandle = WTFMove(*handle);
     1954    }
    19471955
    19481956    bool shouldIncludeLocalhostInResourceLoadStatistics = false;
     
    20052013
    20062014    parameters.indexedDatabaseDirectory = resolvedIndexedDatabaseDirectory();
    2007     if (!parameters.indexedDatabaseDirectory.isEmpty())
    2008         SandboxExtension::createHandleForReadWriteDirectory(parameters.indexedDatabaseDirectory, parameters.indexedDatabaseDirectoryExtensionHandle);
     2015    if (!parameters.indexedDatabaseDirectory.isEmpty()) {
     2016        // FIXME: SandboxExtension::createHandleForReadWriteDirectory resolves the directory, but that has already been done. Remove this duplicate work.
     2017        if (auto handle =  SandboxExtension::createHandleForReadWriteDirectory(parameters.indexedDatabaseDirectory))
     2018            parameters.indexedDatabaseDirectoryExtensionHandle = WTFMove(*handle);
     2019    }
    20092020
    20102021#if ENABLE(SERVICE_WORKER)
    20112022    parameters.serviceWorkerRegistrationDirectory = resolvedServiceWorkerRegistrationDirectory();
    2012     if (!parameters.serviceWorkerRegistrationDirectory.isEmpty())
    2013         SandboxExtension::createHandleForReadWriteDirectory(parameters.serviceWorkerRegistrationDirectory, parameters.serviceWorkerRegistrationDirectoryExtensionHandle);
     2023    if (!parameters.serviceWorkerRegistrationDirectory.isEmpty()) {
     2024        // FIXME: SandboxExtension::createHandleForReadWriteDirectory resolves the directory, but that has already been done. Remove this duplicate work.
     2025        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(parameters.serviceWorkerRegistrationDirectory))
     2026            parameters.serviceWorkerRegistrationDirectoryExtensionHandle = WTFMove(*handle);
     2027    }
    20142028    parameters.serviceWorkerProcessTerminationDelayEnabled = m_configuration->serviceWorkerProcessTerminationDelayEnabled();
    20152029#endif
     
    20182032    if (!localStorageDirectory.isEmpty()) {
    20192033        parameters.localStorageDirectory = localStorageDirectory;
    2020         SandboxExtension::createHandleForReadWriteDirectory(localStorageDirectory, parameters.localStorageDirectoryExtensionHandle);
     2034        // FIXME: SandboxExtension::createHandleForReadWriteDirectory resolves the directory, but that has already been done. Remove this duplicate work.
     2035        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(localStorageDirectory))
     2036            parameters.localStorageDirectoryExtensionHandle = WTFMove(*handle);
    20212037    }
    20222038
     
    20242040    if (!cacheStorageDirectory.isEmpty()) {
    20252041        parameters.cacheStorageDirectory = cacheStorageDirectory;
    2026         SandboxExtension::createHandleForReadWriteDirectory(cacheStorageDirectory, parameters.cacheStorageDirectoryExtensionHandle);
     2042        if (auto handle = SandboxExtension::createHandleForReadWriteDirectory(cacheStorageDirectory))
     2043            parameters.cacheStorageDirectoryExtensionHandle = WTFMove(*handle);
    20272044    }
    20282045
  • trunk/Source/WebKit/WebProcess/FileAPI/BlobRegistryProxy.cpp

    r280881 r281032  
    4343
    4444    // File path can be empty when submitting a form file input without a file, see bug 111778.
    45     if (!file->path().isEmpty())
    46         SandboxExtension::createHandle(file->path(), SandboxExtension::Type::ReadOnly, extensionHandle);
     45    if (!file->path().isEmpty()) {
     46        if (auto handle = SandboxExtension::createHandle(file->path(), SandboxExtension::Type::ReadOnly))
     47            extensionHandle = WTFMove(*handle);
     48    }
    4749
    4850    String replacementPath = path == file->path() ? nullString() : file->path();
  • trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp

    r280723 r281032  
    170170        auto createExtension = [&] {
    171171#if HAVE(AUDIT_TOKEN)
    172             if (auto auditToken = m_manager.gpuProcessConnection().auditToken())
    173                 return SandboxExtension::createHandleForReadByAuditToken(fileSystemPath, auditToken.value(), handle);
    174 #endif
    175 
    176             return SandboxExtension::createHandle(fileSystemPath, SandboxExtension::Type::ReadOnly, handle);
     172            if (auto auditToken = m_manager.gpuProcessConnection().auditToken()) {
     173                if (auto createdHandle = SandboxExtension::createHandleForReadByAuditToken(fileSystemPath, auditToken.value())) {
     174                    handle = WTFMove(*createdHandle);
     175                    return true;
     176                }
     177                return false;
     178            }
     179#endif
     180            if (auto createdHandle = SandboxExtension::createHandle(fileSystemPath, SandboxExtension::Type::ReadOnly)) {
     181                handle = WTFMove(*createdHandle);
     182                return true;
     183            }
     184            return false;
    177185        };
    178186
Note: See TracChangeset for help on using the changeset viewer.