Title: [225826] trunk/Source/WebKit
Revision
225826
Author
achristen...@apple.com
Date
2017-12-12 17:18:20 -0800 (Tue, 12 Dec 2017)

Log Message

Modernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding
https://bugs.webkit.org/show_bug.cgi?id=180621

Reviewed by Youenn Fablet.

* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::decode):
* Shared/LoadParameters.cpp:
(WebKit::LoadParameters::decode):
* Shared/SandboxExtension.h:
(WebKit::decode):
(WebKit::SandboxExtension::Handle::decode): Deleted.
* Shared/Storage/StorageProcessCreationParameters.cpp:
(WebKit::StorageProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::decode):
* Shared/WebsiteDataStoreParameters.h:
* Shared/mac/SandboxExtensionMac.mm:
(WebKit::SandboxExtension::Handle::decode):
(WebKit::SandboxExtension::HandleArray::HandleArray):
(WebKit::SandboxExtension::HandleArray::encode const):
(WebKit::SandboxExtension::HandleArray::decode):
(WebKit::SandboxExtension::SandboxExtension):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (225825 => 225826)


--- trunk/Source/WebKit/ChangeLog	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/ChangeLog	2017-12-13 01:18:20 UTC (rev 225826)
@@ -1,3 +1,33 @@
+2017-12-12  Alex Christensen  <achristen...@webkit.org>
+
+        Modernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding
+        https://bugs.webkit.org/show_bug.cgi?id=180621
+
+        Reviewed by Youenn Fablet.
+
+        * NetworkProcess/NetworkProcessCreationParameters.cpp:
+        (WebKit::NetworkProcessCreationParameters::decode):
+        * NetworkProcess/NetworkResourceLoadParameters.cpp:
+        (WebKit::NetworkResourceLoadParameters::decode):
+        * Shared/LoadParameters.cpp:
+        (WebKit::LoadParameters::decode):
+        * Shared/SandboxExtension.h:
+        (WebKit::decode):
+        (WebKit::SandboxExtension::Handle::decode): Deleted.
+        * Shared/Storage/StorageProcessCreationParameters.cpp:
+        (WebKit::StorageProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebsiteDataStoreParameters.cpp:
+        (WebKit::WebsiteDataStoreParameters::decode):
+        * Shared/WebsiteDataStoreParameters.h:
+        * Shared/mac/SandboxExtensionMac.mm:
+        (WebKit::SandboxExtension::Handle::decode):
+        (WebKit::SandboxExtension::HandleArray::HandleArray):
+        (WebKit::SandboxExtension::HandleArray::encode const):
+        (WebKit::SandboxExtension::HandleArray::decode):
+        (WebKit::SandboxExtension::SandboxExtension):
+
 2017-12-12  John Wilander  <wilan...@apple.com>
 
         Dispatch resource load statistics telemetry on the main thread

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp (225825 => 225826)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp	2017-12-13 01:18:20 UTC (rev 225826)
@@ -124,12 +124,22 @@
         return false;
     if (!decoder.decode(result.cacheStoragePerOriginQuota))
         return false;
-    if (!decoder.decode(result.cacheStorageDirectoryExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> cacheStorageDirectoryExtensionHandle;
+    decoder >> cacheStorageDirectoryExtensionHandle;
+    if (!cacheStorageDirectoryExtensionHandle)
         return false;
+    result.cacheStorageDirectoryExtensionHandle = WTFMove(*cacheStorageDirectoryExtensionHandle);
+
     if (!decoder.decode(result.diskCacheDirectory))
         return false;
-    if (!decoder.decode(result.diskCacheDirectoryExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> diskCacheDirectoryExtensionHandle;
+    decoder >> diskCacheDirectoryExtensionHandle;
+    if (!diskCacheDirectoryExtensionHandle)
         return false;
+    result.diskCacheDirectoryExtensionHandle = WTFMove(*diskCacheDirectoryExtensionHandle);
+
     if (!decoder.decode(result.shouldEnableNetworkCache))
         return false;
     if (!decoder.decode(result.shouldEnableNetworkCacheEfficacyLogging))
@@ -143,12 +153,23 @@
         return false;
 #endif
 #if PLATFORM(IOS)
-    if (!decoder.decode(result.cookieStorageDirectoryExtensionHandle))
+    std::optional<SandboxExtension::Handle> cookieStorageDirectoryExtensionHandle;
+    decoder >> cookieStorageDirectoryExtensionHandle;
+    if (!cookieStorageDirectoryExtensionHandle)
         return false;
-    if (!decoder.decode(result.containerCachesDirectoryExtensionHandle))
+    result.cookieStorageDirectoryExtensionHandle = WTFMove(*cookieStorageDirectoryExtensionHandle);
+
+    std::optional<SandboxExtension::Handle> containerCachesDirectoryExtensionHandle;
+    decoder >> containerCachesDirectoryExtensionHandle;
+    if (!containerCachesDirectoryExtensionHandle)
         return false;
-    if (!decoder.decode(result.parentBundleDirectoryExtensionHandle))
+    result.containerCachesDirectoryExtensionHandle = WTFMove(*containerCachesDirectoryExtensionHandle);
+
+    std::optional<SandboxExtension::Handle> parentBundleDirectoryExtensionHandle;
+    decoder >> parentBundleDirectoryExtensionHandle;
+    if (!parentBundleDirectoryExtensionHandle)
         return false;
+    result.parentBundleDirectoryExtensionHandle = WTFMove(*parentBundleDirectoryExtensionHandle);
 #endif
     if (!decoder.decode(result.shouldSuppressMemoryPressureHandler))
         return false;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp (225825 => 225826)


--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp	2017-12-13 01:18:20 UTC (rev 225826)
@@ -134,10 +134,11 @@
     }
 
     if (result.request.url().isLocalFile()) {
-        SandboxExtension::Handle resourceSandboxExtensionHandle;
-        if (!decoder.decode(resourceSandboxExtensionHandle))
+        std::optional<SandboxExtension::Handle> resourceSandboxExtensionHandle;
+        decoder >> resourceSandboxExtensionHandle;
+        if (!resourceSandboxExtensionHandle)
             return false;
-        result.resourceSandboxExtension = SandboxExtension::create(resourceSandboxExtensionHandle);
+        result.resourceSandboxExtension = SandboxExtension::create(WTFMove(*resourceSandboxExtensionHandle));
     }
 
     if (!decoder.decodeEnum(result.contentSniffingPolicy))

Modified: trunk/Source/WebKit/Shared/LoadParameters.cpp (225825 => 225826)


--- trunk/Source/WebKit/Shared/LoadParameters.cpp	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/Shared/LoadParameters.cpp	2017-12-13 01:18:20 UTC (rev 225826)
@@ -72,8 +72,11 @@
         data.request.setHTTPBody(WTFMove(formData));
     }
 
-    if (!decoder.decode(data.sandboxExtensionHandle))
+    std::optional<SandboxExtension::Handle> sandboxExtensionHandle;
+    decoder >> sandboxExtensionHandle;
+    if (!sandboxExtensionHandle)
         return false;
+    data.sandboxExtensionHandle = WTFMove(*sandboxExtensionHandle);
 
     if (!decoder.decode(data.data))
         return false;

Modified: trunk/Source/WebKit/Shared/SandboxExtension.h (225825 => 225826)


--- trunk/Source/WebKit/Shared/SandboxExtension.h	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/Shared/SandboxExtension.h	2017-12-13 01:18:20 UTC (rev 225826)
@@ -23,8 +23,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef SandboxExtension_h
-#define SandboxExtension_h
+#pragma once
 
 #include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
@@ -55,13 +54,15 @@
         Handle();
 #if ENABLE(SANDBOX_EXTENSIONS)
         Handle(Handle&&);
+        Handle& operator=(Handle&&);
 #else
         Handle(Handle&&) = default;
+        Handle& operator=(Handle&&) = default;
 #endif
         ~Handle();
 
         void encode(IPC::Encoder&) const;
-        static bool decode(IPC::Decoder&, Handle&);
+        static std::optional<Handle> decode(IPC::Decoder&);
 
     private:
         friend class SandboxExtension;
@@ -86,7 +87,7 @@
     private:
 #if ENABLE(SANDBOX_EXTENSIONS)
         std::unique_ptr<Handle[]> m_data;
-        size_t m_size;
+        size_t m_size { 0 };
 #else
         Handle m_emptyHandle;
 #endif
@@ -111,7 +112,7 @@
                      
 #if ENABLE(SANDBOX_EXTENSIONS)
     mutable std::unique_ptr<SandboxExtensionImpl> m_sandboxExtension;
-    size_t m_useCount;
+    size_t m_useCount { 0 };
 #endif
 };
 
@@ -119,7 +120,7 @@
 inline SandboxExtension::Handle::Handle() { }
 inline SandboxExtension::Handle::~Handle() { }
 inline void SandboxExtension::Handle::encode(IPC::Encoder&) const { }
-inline bool SandboxExtension::Handle::decode(IPC::Decoder&, Handle&) { return true; }
+inline std::optional<SandboxExtension::Handle> SandboxExtension::Handle::decode(IPC::Decoder&) { return {{ }}; }
 inline SandboxExtension::HandleArray::HandleArray() { }
 inline SandboxExtension::HandleArray::~HandleArray() { }
 inline void SandboxExtension::HandleArray::allocate(size_t) { }
@@ -149,6 +150,3 @@
 #endif
 
 } // namespace WebKit
-
-
-#endif // SandboxExtension_h

Modified: trunk/Source/WebKit/Shared/Storage/StorageProcessCreationParameters.cpp (225825 => 225826)


--- trunk/Source/WebKit/Shared/Storage/StorageProcessCreationParameters.cpp	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/Shared/Storage/StorageProcessCreationParameters.cpp	2017-12-13 01:18:20 UTC (rev 225826)
@@ -52,14 +52,22 @@
 #if ENABLE(INDEXED_DATABASE)
     if (!decoder.decode(result.indexedDatabaseDirectory))
         return false;
-    if (!decoder.decode(result.indexedDatabaseDirectoryExtensionHandle))
+
+    std::optional<SandboxExtension::Handle> indexedDatabaseDirectoryExtensionHandle;
+    decoder >> indexedDatabaseDirectoryExtensionHandle;
+    if (!indexedDatabaseDirectoryExtensionHandle)
         return false;
+    result.indexedDatabaseDirectoryExtensionHandle = WTFMove(*indexedDatabaseDirectoryExtensionHandle);
 #endif
 #if ENABLE(SERVICE_WORKER)
     if (!decoder.decode(result.serviceWorkerRegistrationDirectory))
         return false;
-    if (!decoder.decode(result.serviceWorkerRegistrationDirectoryExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> serviceWorkerRegistrationDirectoryExtensionHandle;
+    decoder >> serviceWorkerRegistrationDirectoryExtensionHandle;
+    if (!serviceWorkerRegistrationDirectoryExtensionHandle)
         return false;
+    result.serviceWorkerRegistrationDirectoryExtensionHandle = WTFMove(*serviceWorkerRegistrationDirectoryExtensionHandle);
 #endif
 
     return true;

Modified: trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp (225825 => 225826)


--- trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/Shared/WebProcessCreationParameters.cpp	2017-12-13 01:18:20 UTC (rev 225826)
@@ -151,8 +151,13 @@
 {
     if (!decoder.decode(parameters.injectedBundlePath))
         return false;
-    if (!decoder.decode(parameters.injectedBundlePathExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> injectedBundlePathExtensionHandle;
+    decoder >> injectedBundlePathExtensionHandle;
+    if (!injectedBundlePathExtensionHandle)
         return false;
+    parameters.injectedBundlePathExtensionHandle = WTFMove(*injectedBundlePathExtensionHandle);
+
     if (!decoder.decode(parameters.additionalSandboxExtensionHandles))
         return false;
     if (!decoder.decode(parameters.initializationUserData))
@@ -161,31 +166,64 @@
         return false;
     if (!decoder.decode(parameters.applicationCacheFlatFileSubdirectoryName))
         return false;
-    if (!decoder.decode(parameters.applicationCacheDirectoryExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> applicationCacheDirectoryExtensionHandle;
+    decoder >> applicationCacheDirectoryExtensionHandle;
+    if (!applicationCacheDirectoryExtensionHandle)
         return false;
+    parameters.applicationCacheDirectoryExtensionHandle = WTFMove(*applicationCacheDirectoryExtensionHandle);
+
     if (!decoder.decode(parameters.webSQLDatabaseDirectory))
         return false;
-    if (!decoder.decode(parameters.webSQLDatabaseDirectoryExtensionHandle))
+
+    std::optional<SandboxExtension::Handle> webSQLDatabaseDirectoryExtensionHandle;
+    decoder >> webSQLDatabaseDirectoryExtensionHandle;
+    if (!webSQLDatabaseDirectoryExtensionHandle)
         return false;
+    parameters.webSQLDatabaseDirectoryExtensionHandle = WTFMove(*webSQLDatabaseDirectoryExtensionHandle);
+
     if (!decoder.decode(parameters.mediaCacheDirectory))
         return false;
-    if (!decoder.decode(parameters.mediaCacheDirectoryExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> mediaCacheDirectoryExtensionHandle;
+    decoder >> mediaCacheDirectoryExtensionHandle;
+    if (!mediaCacheDirectoryExtensionHandle)
         return false;
+    parameters.mediaCacheDirectoryExtensionHandle = WTFMove(*mediaCacheDirectoryExtensionHandle);
+
     if (!decoder.decode(parameters._javascript_ConfigurationDirectory))
         return false;
-    if (!decoder.decode(parameters._javascript_ConfigurationDirectoryExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> _javascript_ConfigurationDirectoryExtensionHandle;
+    decoder >> _javascript_ConfigurationDirectoryExtensionHandle;
+    if (!_javascript_ConfigurationDirectoryExtensionHandle)
         return false;
+    parameters._javascript_ConfigurationDirectoryExtensionHandle = WTFMove(*_javascript_ConfigurationDirectoryExtensionHandle);
+
 #if PLATFORM(MAC)
     if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier))
         return false;
 #endif
 #if PLATFORM(IOS)
-    if (!decoder.decode(parameters.cookieStorageDirectoryExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> cookieStorageDirectoryExtensionHandle;
+    decoder >> cookieStorageDirectoryExtensionHandle;
+    if (!cookieStorageDirectoryExtensionHandle)
         return false;
-    if (!decoder.decode(parameters.containerCachesDirectoryExtensionHandle))
+    parameters.cookieStorageDirectoryExtensionHandle = WTFMove(*cookieStorageDirectoryExtensionHandle);
+
+    std::optional<SandboxExtension::Handle> containerCachesDirectoryExtensionHandle;
+    decoder >> containerCachesDirectoryExtensionHandle;
+    if (!containerCachesDirectoryExtensionHandle)
         return false;
-    if (!decoder.decode(parameters.containerTemporaryDirectoryExtensionHandle))
+    parameters.containerCachesDirectoryExtensionHandle = WTFMove(*containerCachesDirectoryExtensionHandle);
+
+    std::optional<SandboxExtension::Handle> containerTemporaryDirectoryExtensionHandle;
+    decoder >> containerTemporaryDirectoryExtensionHandle;
+    if (!containerTemporaryDirectoryExtensionHandle)
         return false;
+    parameters.containerTemporaryDirectoryExtensionHandle = WTFMove(*containerTemporaryDirectoryExtensionHandle);
+
 #endif
     if (!decoder.decode(parameters.mediaKeyStorageDirectory))
         return false;
@@ -193,11 +231,21 @@
         return false;
     if (!decoder.decode(parameters.webKitLoggingChannels))
         return false;
-    if (!decoder.decode(parameters.mediaKeyStorageDirectoryExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> mediaKeyStorageDirectoryExtensionHandle;
+    decoder >> mediaKeyStorageDirectoryExtensionHandle;
+    if (!mediaKeyStorageDirectoryExtensionHandle)
         return false;
+    parameters.mediaKeyStorageDirectoryExtensionHandle = WTFMove(*mediaKeyStorageDirectoryExtensionHandle);
+
 #if ENABLE(MEDIA_STREAM)
-    if (!decoder.decode(parameters.audioCaptureExtensionHandle))
+
+    std::optional<SandboxExtension::Handle> audioCaptureExtensionHandle;
+    decoder >> audioCaptureExtensionHandle;
+    if (!audioCaptureExtensionHandle)
         return false;
+    parameters.audioCaptureExtensionHandle = WTFMove(*audioCaptureExtensionHandle);
+
     if (!decoder.decode(parameters.shouldCaptureAudioInUIProcess))
         return false;
 #endif
@@ -260,8 +308,13 @@
         return false;
     if (!decoder.decode(parameters.uiProcessBundleResourcePath))
         return false;
-    if (!decoder.decode(parameters.uiProcessBundleResourcePathExtensionHandle))
+    
+    std::optional<SandboxExtension::Handle> uiProcessBundleResourcePathExtensionHandle;
+    decoder >> uiProcessBundleResourcePathExtensionHandle;
+    if (!uiProcessBundleResourcePathExtensionHandle)
         return false;
+    parameters.uiProcessBundleResourcePathExtensionHandle = WTFMove(*uiProcessBundleResourcePathExtensionHandle);
+
     if (!decoder.decode(parameters.shouldEnableJIT))
         return false;
     if (!decoder.decode(parameters.shouldEnableFTLJIT))

Modified: trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp (225825 => 225826)


--- trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.cpp	2017-12-13 01:18:20 UTC (rev 225826)
@@ -46,36 +46,44 @@
     encoder << cacheStorageDirectoryExtensionHandle;
 }
 
-bool WebsiteDataStoreParameters::decode(IPC::Decoder& decoder, WebsiteDataStoreParameters& parameters)
+std::optional<WebsiteDataStoreParameters> WebsiteDataStoreParameters::decode(IPC::Decoder& decoder)
 {
     std::optional<NetworkSessionCreationParameters> networkSessionParameters;
     decoder >> networkSessionParameters;
     if (!networkSessionParameters)
-        return false;
-    parameters.networkSessionParameters = WTFMove(*networkSessionParameters);
+        return std::nullopt;
 
-    if (!decoder.decode(parameters.uiProcessCookieStorageIdentifier))
-        return false;
+    std::optional<Vector<uint8_t>> uiProcessCookieStorageIdentifier;
+    decoder >> uiProcessCookieStorageIdentifier;
+    if (!uiProcessCookieStorageIdentifier)
+        return std::nullopt;
 
-    if (!decoder.decode(parameters.cookieStoragePathExtensionHandle))
-        return false;
+    std::optional<SandboxExtension::Handle> cookieStoragePathExtensionHandle;
+    decoder >> cookieStoragePathExtensionHandle;
+    if (!cookieStoragePathExtensionHandle)
+        return std::nullopt;
 
     std::optional<Vector<WebCore::Cookie>> pendingCookies;
     decoder >> pendingCookies;
     if (!pendingCookies)
-        return false;
-    parameters.pendingCookies = WTFMove(*pendingCookies);
+        return std::nullopt;
 
-    if (!decoder.decode(parameters.cacheStorageDirectory))
-        return false;
+    std::optional<String> cacheStorageDirectory;
+    decoder >> cacheStorageDirectory;
+    if (!cacheStorageDirectory)
+        return std::nullopt;
 
-    if (!decoder.decode(parameters.cacheStoragePerOriginQuota))
-        return false;
+    std::optional<uint64_t> cacheStoragePerOriginQuota;
+    decoder >> cacheStoragePerOriginQuota;
+    if (!cacheStoragePerOriginQuota)
+        return std::nullopt;
 
-    if (!decoder.decode(parameters.cacheStorageDirectoryExtensionHandle))
-        return false;
-
-    return true;
+    std::optional<SandboxExtension::Handle> cacheStorageDirectoryExtensionHandle;
+    decoder >> cacheStorageDirectoryExtensionHandle;
+    if (!cacheStorageDirectoryExtensionHandle)
+        return std::nullopt;
+    
+    return {{ WTFMove(*uiProcessCookieStorageIdentifier), WTFMove(*cookieStoragePathExtensionHandle), WTFMove(*pendingCookies), WTFMove(*cacheStorageDirectory), WTFMove(*cacheStoragePerOriginQuota), WTFMove(*cacheStorageDirectoryExtensionHandle), WTFMove(*networkSessionParameters)}};
 }
 
 WebsiteDataStoreParameters WebsiteDataStoreParameters::legacyPrivateSessionParameters()

Modified: trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.h (225825 => 225826)


--- trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.h	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/Shared/WebsiteDataStoreParameters.h	2017-12-13 01:18:20 UTC (rev 225826)
@@ -42,11 +42,12 @@
 struct WebsiteDataStoreParameters {
     WebsiteDataStoreParameters() = default;
     WebsiteDataStoreParameters(WebsiteDataStoreParameters&&) = default;
+    WebsiteDataStoreParameters& operator=(WebsiteDataStoreParameters&&) = default;
     ~WebsiteDataStoreParameters();
     static WebsiteDataStoreParameters legacyPrivateSessionParameters();
     
     void encode(IPC::Encoder&) const;
-    static bool decode(IPC::Decoder&, WebsiteDataStoreParameters&);
+    static std::optional<WebsiteDataStoreParameters> decode(IPC::Decoder&);
 
     Vector<uint8_t> uiProcessCookieStorageIdentifier;
     SandboxExtension::Handle cookieStoragePathExtensionHandle;

Modified: trunk/Source/WebKit/Shared/mac/SandboxExtensionMac.mm (225825 => 225826)


--- trunk/Source/WebKit/Shared/mac/SandboxExtensionMac.mm	2017-12-13 01:13:30 UTC (rev 225825)
+++ trunk/Source/WebKit/Shared/mac/SandboxExtensionMac.mm	2017-12-13 01:18:20 UTC (rev 225826)
@@ -111,6 +111,7 @@
 }
 
 SandboxExtension::Handle::Handle(Handle&&) = default;
+SandboxExtension::Handle& SandboxExtension::Handle::operator=(Handle&&) = default;
 
 SandboxExtension::Handle::~Handle()
 {
@@ -135,23 +136,21 @@
     m_sandboxExtension = 0;
 }
 
-bool SandboxExtension::Handle::decode(IPC::Decoder& decoder, Handle& result)
+auto SandboxExtension::Handle::decode(IPC::Decoder& decoder) -> std::optional<Handle>
 {
-    ASSERT(!result.m_sandboxExtension);
-
     IPC::DataReference dataReference;
     if (!decoder.decode(dataReference))
-        return false;
+        return std::nullopt;
 
     if (dataReference.isEmpty())
-        return true;
+        return {{ }};
 
-    result.m_sandboxExtension = std::make_unique<SandboxExtensionImpl>(reinterpret_cast<const char*>(dataReference.data()), dataReference.size());
-    return true;
+    Handle handle;
+    handle.m_sandboxExtension = std::make_unique<SandboxExtensionImpl>(reinterpret_cast<const char*>(dataReference.data()), dataReference.size());
+    return WTFMove(handle);
 }
 
 SandboxExtension::HandleArray::HandleArray()
-    : m_size(0)
 {
 }
 
@@ -192,7 +191,6 @@
     encoder << static_cast<uint64_t>(size());
     for (size_t i = 0; i < m_size; ++i)
         encoder << m_data[i];
-    
 }
 
 bool SandboxExtension::HandleArray::decode(IPC::Decoder& decoder, SandboxExtension::HandleArray& handles)
@@ -202,8 +200,11 @@
         return false;
     handles.allocate(size);
     for (size_t i = 0; i < size; i++) {
-        if (!decoder.decode(handles[i]))
+        std::optional<SandboxExtension::Handle> handle;
+        decoder >> handle;
+        if (!handle)
             return false;
+        handles[i] = WTFMove(*handle);
     }
     return true;
 }
@@ -362,7 +363,6 @@
 
 SandboxExtension::SandboxExtension(const Handle& handle)
     : m_sandboxExtension(WTFMove(handle.m_sandboxExtension))
-    , m_useCount(0)
 {
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to