Title: [241005] trunk/Source
Revision
241005
Author
[email protected]
Date
2019-02-05 17:02:44 -0800 (Tue, 05 Feb 2019)

Log Message

Unreviewed, rolling out r240984.

Revision casued two API timeouts

Reverted changeset:

"Stop using blobRegistry in NetworkProcess"
https://bugs.webkit.org/show_bug.cgi?id=194027
https://trac.webkit.org/changeset/240984

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (241004 => 241005)


--- trunk/Source/WebCore/ChangeLog	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebCore/ChangeLog	2019-02-06 01:02:44 UTC (rev 241005)
@@ -1,3 +1,15 @@
+2019-02-05  Truitt Savell  <[email protected]>
+
+        Unreviewed, rolling out r240984.
+
+        Revision casued two API timeouts
+
+        Reverted changeset:
+
+        "Stop using blobRegistry in NetworkProcess"
+        https://bugs.webkit.org/show_bug.cgi?id=194027
+        https://trac.webkit.org/changeset/240984
+
 2019-02-05  Keith Rollin  <[email protected]>
 
         Enable the automatic checking and regenerations of .xcfilelists during builds

Modified: trunk/Source/WebCore/platform/network/BlobRegistryImpl.h (241004 => 241005)


--- trunk/Source/WebCore/platform/network/BlobRegistryImpl.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebCore/platform/network/BlobRegistryImpl.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -56,6 +56,7 @@
     Ref<ResourceHandle> createResourceHandle(const ResourceRequest&, ResourceHandleClient*);
     void writeBlobToFilePath(const URL& blobURL, const String& path, Function<void(bool success)>&& completionHandler);
 
+private:
     void appendStorageItems(BlobData*, const BlobDataItemList&, long long offset, long long length);
 
     void registerFileBlobURL(const URL&, Ref<BlobDataFileReference>&&, const String& contentType) override;
@@ -77,7 +78,6 @@
 
     bool populateBlobsForFileWriting(const Vector<String>& blobURLs, Vector<BlobForFileWriting>&);
 
-private:
     HashMap<String, RefPtr<BlobData>> m_blobs;
 };
 

Modified: trunk/Source/WebCore/platform/network/FormData.cpp (241004 => 241005)


--- trunk/Source/WebCore/platform/network/FormData.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebCore/platform/network/FormData.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -311,14 +311,14 @@
     return Latin1Encoding().decode(reinterpret_cast<const char*>(bytes.data()), bytes.size());
 }
 
-static void appendBlobResolved(BlobRegistry& blobRegistry, FormData& formData, const URL& url)
+static void appendBlobResolved(FormData* formData, const URL& url)
 {
-    if (!blobRegistry.isBlobRegistryImpl()) {
+    if (!blobRegistry().isBlobRegistryImpl()) {
         LOG_ERROR("Tried to resolve a blob without a usable registry");
         return;
     }
 
-    auto* blobData = static_cast<BlobRegistryImpl&>(blobRegistry).getBlobDataFromURL(url);
+    BlobData* blobData = static_cast<BlobRegistryImpl&>(blobRegistry()).getBlobDataFromURL(url);
     if (!blobData) {
         LOG_ERROR("Could not get blob data from a registry");
         return;
@@ -327,15 +327,15 @@
     for (const auto& blobItem : blobData->items()) {
         if (blobItem.type() == BlobDataItem::Type::Data) {
             ASSERT(blobItem.data().data());
-            formData.appendData(blobItem.data().data()->data() + static_cast<int>(blobItem.offset()), static_cast<int>(blobItem.length()));
+            formData->appendData(blobItem.data().data()->data() + static_cast<int>(blobItem.offset()), static_cast<int>(blobItem.length()));
         } else if (blobItem.type() == BlobDataItem::Type::File)
-            formData.appendFileRange(blobItem.file()->path(), blobItem.offset(), blobItem.length(), blobItem.file()->expectedModificationTime());
+            formData->appendFileRange(blobItem.file()->path(), blobItem.offset(), blobItem.length(), blobItem.file()->expectedModificationTime());
         else
             ASSERT_NOT_REACHED();
     }
 }
 
-Ref<FormData> FormData::resolveBlobReferences(BlobRegistry& blobRegistry)
+Ref<FormData> FormData::resolveBlobReferences()
 {
     // First check if any blobs needs to be resolved, or we can take the fast path.
     bool hasBlob = false;
@@ -361,7 +361,7 @@
             }, [&] (const FormDataElement::EncodedFileData& fileData) {
                 newFormData->appendFileRange(fileData.filename, fileData.fileStart, fileData.fileLength, fileData.expectedFileModificationTime, fileData.shouldGenerateFile);
             }, [&] (const FormDataElement::EncodedBlobData& blobData) {
-                appendBlobResolved(blobRegistry, newFormData.get(), blobData.url);
+                appendBlobResolved(newFormData.ptr(), blobData.url);
             }
         );
     }

Modified: trunk/Source/WebCore/platform/network/FormData.h (241004 => 241005)


--- trunk/Source/WebCore/platform/network/FormData.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebCore/platform/network/FormData.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -29,7 +29,6 @@
 
 namespace WebCore {
 
-class BlobRegistry;
 class DOMFormData;
 class Document;
 class File;
@@ -227,7 +226,7 @@
 
     // Resolve all blob references so we only have file and data.
     // If the FormData has no blob references to resolve, this is returned.
-    WEBCORE_EXPORT Ref<FormData> resolveBlobReferences(BlobRegistry&);
+    Ref<FormData> resolveBlobReferences();
 
     bool isEmpty() const { return m_elements.isEmpty(); }
     const Vector<FormDataElement>& elements() const { return m_elements; }

Modified: trunk/Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp (241004 => 241005)


--- trunk/Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebCore/platform/network/cf/FormDataStreamCFNet.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -30,7 +30,6 @@
 #include "FormDataStreamCFNet.h"
 
 #include "BlobData.h"
-#include "BlobRegistry.h"
 #include "FormData.h"
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -373,7 +372,7 @@
 
 RetainPtr<CFReadStreamRef> createHTTPBodyCFReadStream(FormData& formData)
 {
-    auto resolvedFormData = formData.resolveBlobReferences(blobRegistry());
+    auto resolvedFormData = formData.resolveBlobReferences();
 
     // Precompute the content length so CFNetwork doesn't use chunked mode.
     unsigned long long length = 0;

Modified: trunk/Source/WebCore/platform/network/curl/CurlFormDataStream.cpp (241004 => 241005)


--- trunk/Source/WebCore/platform/network/curl/CurlFormDataStream.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebCore/platform/network/curl/CurlFormDataStream.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -34,7 +34,6 @@
 
 #if USE(CURL)
 
-#include "BlobRegistry.h"
 #include "CurlContext.h"
 #include "Logging.h"
 #include <wtf/MainThread.h>
@@ -51,7 +50,7 @@
     m_formData = formData->isolatedCopy();
 
     // Resolve the blob elements so the formData can correctly report it's size.
-    m_formData = m_formData->resolveBlobReferences(blobRegistry());
+    m_formData = m_formData->resolveBlobReferences();
 }
 
 CurlFormDataStream::~CurlFormDataStream()

Modified: trunk/Source/WebKit/ChangeLog (241004 => 241005)


--- trunk/Source/WebKit/ChangeLog	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/ChangeLog	2019-02-06 01:02:44 UTC (rev 241005)
@@ -1,3 +1,15 @@
+2019-02-05  Truitt Savell  <[email protected]>
+
+        Unreviewed, rolling out r240984.
+
+        Revision casued two API timeouts
+
+        Reverted changeset:
+
+        "Stop using blobRegistry in NetworkProcess"
+        https://bugs.webkit.org/show_bug.cgi?id=194027
+        https://trac.webkit.org/changeset/240984
+
 2019-02-05  Youenn Fablet  <[email protected]>
 
         UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/DownloadManager.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -27,7 +27,7 @@
 #include "DownloadManager.h"
 
 #include "Download.h"
-#include "NetworkConnectionToWebProcess.h"
+#include "NetworkBlobRegistry.h"
 #include "NetworkLoad.h"
 #include "NetworkSession.h"
 #include "PendingDownload.h"
@@ -54,10 +54,10 @@
     parameters.request = request;
     parameters.clientCredentialPolicy = ClientCredentialPolicy::MayAskClientForCredentials;
     if (request.url().protocolIsBlob() && connection)
-        parameters.blobFileReferences = connection->filesInBlob(request.url());
+        parameters.blobFileReferences = NetworkBlobRegistry::singleton().filesInBlob(*connection, request.url());
     parameters.storedCredentialsPolicy = sessionID.isEphemeral() ? StoredCredentialsPolicy::DoNotUse : StoredCredentialsPolicy::Use;
 
-    m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(m_client.parentProcessConnectionForDownloads(), WTFMove(parameters), downloadID, *networkSession, connection ? &connection->blobRegistry() : nullptr, suggestedName));
+    m_pendingDownloads.add(downloadID, std::make_unique<PendingDownload>(m_client.parentProcessConnectionForDownloads(), WTFMove(parameters), downloadID, *networkSession, suggestedName));
 }
 
 void DownloadManager::dataTaskBecameDownloadTask(DownloadID downloadID, std::unique_ptr<Download>&& download)

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -36,8 +36,8 @@
 namespace WebKit {
 using namespace WebCore;
 
-PendingDownload::PendingDownload(IPC::Connection* parentProcessConnection, NetworkLoadParameters&& parameters, DownloadID downloadID, NetworkSession& networkSession, WebCore::BlobRegistryImpl* blobRegistry, const String& suggestedName)
-    : m_networkLoad(std::make_unique<NetworkLoad>(*this, blobRegistry, WTFMove(parameters), networkSession))
+PendingDownload::PendingDownload(IPC::Connection* parentProcessConnection, NetworkLoadParameters&& parameters, DownloadID downloadID, NetworkSession& networkSession, const String& suggestedName)
+    : m_networkLoad(std::make_unique<NetworkLoad>(*this, WTFMove(parameters), networkSession))
     , m_parentProcessConnection(parentProcessConnection)
 {
     m_isAllowedToAskUserForCredentials = parameters.clientCredentialPolicy == ClientCredentialPolicy::MayAskClientForCredentials;

Modified: trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -34,7 +34,6 @@
 }
 
 namespace WebCore {
-class BlobRegistryImpl;
 class ResourceResponse;
 }
 
@@ -49,7 +48,7 @@
 class PendingDownload : public NetworkLoadClient, public IPC::MessageSender {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    PendingDownload(IPC::Connection*, NetworkLoadParameters&&, DownloadID, NetworkSession&, WebCore::BlobRegistryImpl*, const String& suggestedName);
+    PendingDownload(IPC::Connection*, NetworkLoadParameters&&, DownloadID, NetworkSession&, const String& suggestedName);
     PendingDownload(IPC::Connection*, std::unique_ptr<NetworkLoad>&&, ResponseCompletionHandler&&, DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
 
     void continueWillSendRequest(WebCore::ResourceRequest&&);

Modified: trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -37,12 +37,20 @@
 namespace WebKit {
 using namespace WebCore;
 
-NetworkBlobRegistry::NetworkBlobRegistry() = default;
-NetworkBlobRegistry::~NetworkBlobRegistry() = default;
+NetworkBlobRegistry& NetworkBlobRegistry::singleton()
+{
+    ASSERT(RunLoop::isMain());
+    static NeverDestroyed<NetworkBlobRegistry> registry;
+    return registry;
+}
 
+NetworkBlobRegistry::NetworkBlobRegistry()
+{
+}
+
 void NetworkBlobRegistry::registerFileBlobURL(NetworkConnectionToWebProcess& connection, const URL& url, const String& path, RefPtr<SandboxExtension>&& sandboxExtension, const String& contentType)
 {
-    m_blobRegistry.registerFileBlobURL(url, BlobDataFileReferenceWithSandboxExtension::create(path, WTFMove(sandboxExtension)), contentType);
+    blobRegistry().registerFileBlobURL(url, BlobDataFileReferenceWithSandboxExtension::create(path, WTFMove(sandboxExtension)), contentType);
 
     ASSERT(!m_blobsForConnection.get(&connection).contains(url));
     BlobForConnectionMap::iterator mapIterator = m_blobsForConnection.find(&connection);
@@ -53,7 +61,7 @@
 
 void NetworkBlobRegistry::registerBlobURL(NetworkConnectionToWebProcess& connection, const URL& url, Vector<WebCore::BlobPart>&& blobParts, const String& contentType)
 {
-    m_blobRegistry.registerBlobURL(url, WTFMove(blobParts), contentType);
+    blobRegistry().registerBlobURL(url, WTFMove(blobParts), contentType);
 
     ASSERT(!m_blobsForConnection.get(&connection).contains(url));
     BlobForConnectionMap::iterator mapIterator = m_blobsForConnection.find(&connection);
@@ -72,7 +80,7 @@
         mapIterator = m_blobsForConnection.add(&connection, HashSet<URL>()).iterator;
     }
 
-    m_blobRegistry.registerBlobURL(url, srcURL);
+    blobRegistry().registerBlobURL(url, srcURL);
 
     ASSERT(shouldBypassConnectionCheck || mapIterator->value.contains(srcURL));
     mapIterator->value.add(url);
@@ -80,7 +88,7 @@
 
 void NetworkBlobRegistry::registerBlobURLOptionallyFileBacked(NetworkConnectionToWebProcess& connection, const URL& url, const URL& srcURL, const String& fileBackedPath, const String& contentType)
 {
-    m_blobRegistry.registerBlobURLOptionallyFileBacked(url, srcURL, BlobDataFileReferenceWithSandboxExtension::create(fileBackedPath, nullptr), contentType);
+    blobRegistry().registerBlobURLOptionallyFileBacked(url, srcURL, BlobDataFileReferenceWithSandboxExtension::create(fileBackedPath, nullptr), contentType);
 
     ASSERT(!m_blobsForConnection.get(&connection).contains(url));
     BlobForConnectionMap::iterator mapIterator = m_blobsForConnection.find(&connection);
@@ -96,7 +104,7 @@
     if (mapIterator == m_blobsForConnection.end())
         return;
 
-    m_blobRegistry.registerBlobURLForSlice(url, srcURL, start, end);
+    blobRegistry().registerBlobURLForSlice(url, srcURL, start, end);
 
     ASSERT(mapIterator->value.contains(srcURL));
     mapIterator->value.add(url);
@@ -109,7 +117,7 @@
     if (mapIterator == m_blobsForConnection.end())
         return;
 
-    m_blobRegistry.unregisterBlobURL(url);
+    blobRegistry().unregisterBlobURL(url);
 
     mapIterator->value.remove(url);
 }
@@ -119,17 +127,17 @@
     if (!m_blobsForConnection.contains(&connection) || !m_blobsForConnection.find(&connection)->value.contains(url))
         return 0;
 
-    return m_blobRegistry.blobSize(url);
+    return blobRegistry().blobSize(url);
 }
 
 void NetworkBlobRegistry::writeBlobsToTemporaryFiles(const Vector<String>& blobURLs, CompletionHandler<void(Vector<String>&&)>&& completionHandler)
 {
-    m_blobRegistry.writeBlobsToTemporaryFiles(blobURLs, WTFMove(completionHandler));
+    blobRegistry().writeBlobsToTemporaryFiles(blobURLs, WTFMove(completionHandler));
 }
 
 void NetworkBlobRegistry::writeBlobToFilePath(const URL& blobURL, const String& path, CompletionHandler<void(bool success)>&& completionHandler)
 {
-    if (!m_blobRegistry.isBlobRegistryImpl()) {
+    if (!blobRegistry().isBlobRegistryImpl()) {
         completionHandler(false);
         ASSERT_NOT_REACHED();
         return;
@@ -139,7 +147,7 @@
     for (auto& file : blobFiles)
         file->prepareForFileAccess();
 
-    m_blobRegistry.writeBlobToFilePath(blobURL, path, [blobFiles = WTFMove(blobFiles), completionHandler = WTFMove(completionHandler)] (bool success) mutable {
+    static_cast<BlobRegistryImpl&>(blobRegistry()).writeBlobToFilePath(blobURL, path, [blobFiles = WTFMove(blobFiles), completionHandler = WTFMove(completionHandler)] (bool success) mutable {
         for (auto& file : blobFiles)
             file->revokeFileAccess();
         completionHandler(success);
@@ -153,7 +161,7 @@
 
     HashSet<URL>& blobsForConnection = m_blobsForConnection.find(&connection)->value;
     for (HashSet<URL>::iterator iter = blobsForConnection.begin(), end = blobsForConnection.end(); iter != end; ++iter)
-        m_blobRegistry.unregisterBlobURL(*iter);
+        blobRegistry().unregisterBlobURL(*iter);
 
     m_blobsForConnection.remove(&connection);
 }
@@ -168,8 +176,8 @@
 
 Vector<RefPtr<BlobDataFileReference>> NetworkBlobRegistry::filesInBlob(const URL& url)
 {
-    ASSERT(m_blobRegistry.isBlobRegistryImpl());
-    BlobData* blobData = m_blobRegistry.getBlobDataFromURL(url);
+    ASSERT(blobRegistry().isBlobRegistryImpl());
+    BlobData* blobData = static_cast<BlobRegistryImpl&>(blobRegistry()).getBlobDataFromURL(url);
     if (!blobData)
         return { };
 

Modified: trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.h (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/FileAPI/NetworkBlobRegistry.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -25,7 +25,6 @@
 
 #pragma once
 
-#include <WebCore/BlobRegistryImpl.h>
 #include <wtf/Function.h>
 #include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
@@ -45,7 +44,7 @@
 WTF_MAKE_NONCOPYABLE(NetworkBlobRegistry);
 public:
     NetworkBlobRegistry();
-    ~NetworkBlobRegistry();
+    static NetworkBlobRegistry& singleton();
 
     void registerFileBlobURL(NetworkConnectionToWebProcess&, const URL&, const String& path, RefPtr<SandboxExtension>&&, const String& contentType);
     void registerBlobURL(NetworkConnectionToWebProcess&, const URL&, Vector<WebCore::BlobPart>&&, const String& contentType);
@@ -61,13 +60,12 @@
 
     Vector<RefPtr<WebCore::BlobDataFileReference>> filesInBlob(NetworkConnectionToWebProcess&, const URL&);
     Vector<RefPtr<WebCore::BlobDataFileReference>> filesInBlob(const URL&);
-    
-    WebCore::BlobRegistryImpl& blobRegistry() { return m_blobRegistry; }
 
 private:
+    ~NetworkBlobRegistry();
+
     typedef HashMap<NetworkConnectionToWebProcess*, HashSet<URL>> BlobForConnectionMap;
     BlobForConnectionMap m_blobsForConnection;
-    WebCore::BlobRegistryImpl m_blobRegistry;
 };
 
 }

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -26,9 +26,9 @@
 #include "config.h"
 #include "NetworkConnectionToWebProcess.h"
 
-#include "BlobDataFileReferenceWithSandboxExtension.h"
 #include "CacheStorageEngineConnectionMessages.h"
 #include "DataReference.h"
+#include "NetworkBlobRegistry.h"
 #include "NetworkCache.h"
 #include "NetworkMDNSRegisterMessages.h"
 #include "NetworkProcess.h"
@@ -249,7 +249,7 @@
     // root activity trackers.
     stopAllNetworkActivityTracking();
 
-    m_networkProcess->networkBlobRegistry().connectionToWebProcessDidClose(*this);
+    NetworkBlobRegistry::singleton().connectionToWebProcessDidClose(*this);
     m_networkProcess->removeNetworkConnectionToWebProcess(*this);
 
 #if USE(LIBWEBRTC)
@@ -311,20 +311,6 @@
 #endif
 }
 
-Vector<RefPtr<WebCore::BlobDataFileReference>> NetworkConnectionToWebProcess::resolveBlobReferences(const NetworkResourceLoadParameters& parameters)
-{
-    Vector<RefPtr<WebCore::BlobDataFileReference>> files;
-    if (auto* body = parameters.request.httpBody()) {
-        for (auto& element : body->elements()) {
-            if (auto* blobData = WTF::get_if<FormDataElement::EncodedBlobData>(element.data))
-                files.appendVector(m_networkProcess->networkBlobRegistry().filesInBlob(*this, blobData->url));
-        }
-        const_cast<WebCore::ResourceRequest&>(parameters.request).setHTTPBody(body->resolveBlobReferences(m_networkProcess->networkBlobRegistry().blobRegistry()));
-    }
-
-    return files;
-}
-
 void NetworkConnectionToWebProcess::scheduleResourceLoad(NetworkResourceLoadParameters&& loadParameters)
 {
     auto identifier = loadParameters.identifier;
@@ -356,7 +342,7 @@
     };
 
     // PingLoad manages its own lifetime, deleting itself when its purpose has been fulfilled.
-    new PingLoad(*this, networkProcess(), WTFMove(loadParameters), WTFMove(completionHandler));
+    new PingLoad(networkProcess(), WTFMove(loadParameters), WTFMove(completionHandler));
 }
 
 void NetworkConnectionToWebProcess::setOnLineState(bool isOnLine)
@@ -405,8 +391,6 @@
 
 void NetworkConnectionToWebProcess::preconnectTo(uint64_t preconnectionIdentifier, NetworkResourceLoadParameters&& parameters)
 {
-    ASSERT(!parameters.request.httpBody());
-    
 #if ENABLE(SERVER_PRECONNECT)
     new PreconnectTask(networkProcess(), WTFMove(parameters), [this, protectedThis = makeRef(*this), identifier = preconnectionIdentifier] (const ResourceError& error) {
         didFinishPreconnection(identifier, error);
@@ -509,37 +493,39 @@
 
 void NetworkConnectionToWebProcess::registerFileBlobURL(const URL& url, const String& path, SandboxExtension::Handle&& extensionHandle, const String& contentType)
 {
-    m_networkProcess->networkBlobRegistry().registerFileBlobURL(*this, url, path, SandboxExtension::create(WTFMove(extensionHandle)), contentType);
+    RefPtr<SandboxExtension> extension = SandboxExtension::create(WTFMove(extensionHandle));
+
+    NetworkBlobRegistry::singleton().registerFileBlobURL(*this, url, path, WTFMove(extension), contentType);
 }
 
 void NetworkConnectionToWebProcess::registerBlobURL(const URL& url, Vector<BlobPart>&& blobParts, const String& contentType)
 {
-    m_networkProcess->networkBlobRegistry().registerBlobURL(*this, url, WTFMove(blobParts), contentType);
+    NetworkBlobRegistry::singleton().registerBlobURL(*this, url, WTFMove(blobParts), contentType);
 }
 
 void NetworkConnectionToWebProcess::registerBlobURLFromURL(const URL& url, const URL& srcURL, bool shouldBypassConnectionCheck)
 {
-    m_networkProcess->networkBlobRegistry().registerBlobURL(*this, url, srcURL, shouldBypassConnectionCheck);
+    NetworkBlobRegistry::singleton().registerBlobURL(*this, url, srcURL, shouldBypassConnectionCheck);
 }
 
 void NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked(const URL& url, const URL& srcURL, const String& fileBackedPath, const String& contentType)
 {
-    m_networkProcess->networkBlobRegistry().registerBlobURLOptionallyFileBacked(*this, url, srcURL, fileBackedPath, contentType);
+    NetworkBlobRegistry::singleton().registerBlobURLOptionallyFileBacked(*this, url, srcURL, fileBackedPath, contentType);
 }
 
 void NetworkConnectionToWebProcess::registerBlobURLForSlice(const URL& url, const URL& srcURL, int64_t start, int64_t end)
 {
-    m_networkProcess->networkBlobRegistry().registerBlobURLForSlice(*this, url, srcURL, start, end);
+    NetworkBlobRegistry::singleton().registerBlobURLForSlice(*this, url, srcURL, start, end);
 }
 
 void NetworkConnectionToWebProcess::unregisterBlobURL(const URL& url)
 {
-    m_networkProcess->networkBlobRegistry().unregisterBlobURL(*this, url);
+    NetworkBlobRegistry::singleton().unregisterBlobURL(*this, url);
 }
 
 void NetworkConnectionToWebProcess::blobSize(const URL& url, uint64_t& resultSize)
 {
-    resultSize = m_networkProcess->networkBlobRegistry().blobSize(*this, url);
+    resultSize = NetworkBlobRegistry::singleton().blobSize(*this, url);
 }
 
 void NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles(const Vector<String>& blobURLs, CompletionHandler<void(Vector<String>&&)>&& completionHandler)
@@ -546,12 +532,12 @@
 {
     Vector<RefPtr<BlobDataFileReference>> fileReferences;
     for (auto& url : blobURLs)
-        fileReferences.appendVector(m_networkProcess->networkBlobRegistry().filesInBlob(*this, { { }, url }));
+        fileReferences.appendVector(NetworkBlobRegistry::singleton().filesInBlob(*this, { { }, url }));
 
     for (auto& file : fileReferences)
         file->prepareForFileAccess();
 
-    m_networkProcess->networkBlobRegistry().writeBlobsToTemporaryFiles(blobURLs, [fileReferences = WTFMove(fileReferences), completionHandler = WTFMove(completionHandler)](auto&& fileNames) mutable {
+    NetworkBlobRegistry::singleton().writeBlobsToTemporaryFiles(blobURLs, [fileReferences = WTFMove(fileReferences), completionHandler = WTFMove(completionHandler)](auto&& fileNames) mutable {
         for (auto& file : fileReferences)
             file->revokeFileAccess();
         completionHandler(WTFMove(fileNames));
@@ -558,16 +544,6 @@
     });
 }
 
-Vector<RefPtr<WebCore::BlobDataFileReference>> NetworkConnectionToWebProcess::filesInBlob(const URL& url)
-{
-    return m_networkProcess->networkBlobRegistry().filesInBlob(*this, url);
-}
-
-WebCore::BlobRegistryImpl& NetworkConnectionToWebProcess::blobRegistry()
-{
-    return m_networkProcess->networkBlobRegistry().blobRegistry();
-}
-
 void NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled(bool enabled)
 {
     m_captureExtraNetworkLoadMetricsEnabled = enabled;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -41,7 +41,6 @@
 
 namespace WebCore {
 class BlobDataFileReference;
-class BlobRegistryImpl;
 class ResourceError;
 class ResourceRequest;
 struct SameSiteInfo;
@@ -122,10 +121,6 @@
     Optional<NetworkActivityTracker> startTrackingResourceLoad(uint64_t pageID, ResourceLoadIdentifier resourceID, bool isMainResource, const PAL::SessionID&);
     void stopTrackingResourceLoad(ResourceLoadIdentifier resourceID, NetworkActivityTracker::CompletionCode);
 
-    WebCore::BlobRegistryImpl& blobRegistry();
-    Vector<RefPtr<WebCore::BlobDataFileReference>> filesInBlob(const URL&);
-    Vector<RefPtr<WebCore::BlobDataFileReference>> resolveBlobReferences(const NetworkResourceLoadParameters&);
-
 private:
     NetworkConnectionToWebProcess(NetworkProcess&, IPC::Connection::Identifier);
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkDataTask.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkDataTask.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkDataTask.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -47,7 +47,9 @@
 
 Ref<NetworkDataTask> NetworkDataTask::create(NetworkSession& session, NetworkDataTaskClient& client, const NetworkLoadParameters& parameters)
 {
-    ASSERT(!parameters.request.url().protocolIsBlob());
+    if (parameters.request.url().protocolIsBlob())
+        return NetworkDataTaskBlob::create(session, client, parameters.request, parameters.contentSniffingPolicy, parameters.blobFileReferences);
+
 #if PLATFORM(COCOA)
     return NetworkDataTaskCocoa::create(session, client, parameters.request, parameters.webFrameID, parameters.webPageID, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.shouldPreconnectOnly, parameters.isMainFrameNavigation, parameters.networkActivityTracker);
 #endif

Modified: trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -65,7 +65,7 @@
 
 static const char* const webKitBlobResourceDomain = "WebKitBlobResource";
 
-NetworkDataTaskBlob::NetworkDataTaskBlob(NetworkSession& session, BlobRegistryImpl& blobRegistry, NetworkDataTaskClient& client, const ResourceRequest& request, ContentSniffingPolicy shouldContentSniff, const Vector<RefPtr<WebCore::BlobDataFileReference>>& fileReferences)
+NetworkDataTaskBlob::NetworkDataTaskBlob(NetworkSession& session, NetworkDataTaskClient& client, const ResourceRequest& request, ContentSniffingPolicy shouldContentSniff, const Vector<RefPtr<WebCore::BlobDataFileReference>>& fileReferences)
     : NetworkDataTask(session, client, request, StoredCredentialsPolicy::DoNotUse, false, false)
     , m_stream(std::make_unique<AsyncFileStream>(*this))
     , m_fileReferences(fileReferences)
@@ -74,7 +74,7 @@
     for (auto& fileReference : m_fileReferences)
         fileReference->prepareForFileAccess();
 
-    m_blobData = blobRegistry.getBlobDataFromURL(request.url());
+    m_blobData = static_cast<BlobRegistryImpl&>(blobRegistry()).getBlobDataFromURL(request.url());
 
     m_session->registerNetworkDataTask(*this);
     LOG(NetworkSession, "%p - Created NetworkDataTaskBlob for %s", this, request.url().string().utf8().data());

Modified: trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.h (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -40,7 +40,6 @@
 class BlobDataFileReference;
 class BlobData;
 class BlobDataItem;
-class BlobRegistryImpl;
 }
 
 namespace WebKit {
@@ -49,15 +48,15 @@
 
 class NetworkDataTaskBlob final : public NetworkDataTask, public WebCore::FileStreamClient {
 public:
-    static Ref<NetworkDataTask> create(NetworkSession& session, WebCore::BlobRegistryImpl& blobRegistry, NetworkDataTaskClient& client, const WebCore::ResourceRequest& request, WebCore::ContentSniffingPolicy shouldContentSniff, const Vector<RefPtr<WebCore::BlobDataFileReference>>& fileReferences)
+    static Ref<NetworkDataTask> create(NetworkSession& session, NetworkDataTaskClient& client, const WebCore::ResourceRequest& request, WebCore::ContentSniffingPolicy shouldContentSniff, const Vector<RefPtr<WebCore::BlobDataFileReference>>& fileReferences)
     {
-        return adoptRef(*new NetworkDataTaskBlob(session, blobRegistry, client, request, shouldContentSniff, fileReferences));
+        return adoptRef(*new NetworkDataTaskBlob(session, client, request, shouldContentSniff, fileReferences));
     }
 
     ~NetworkDataTaskBlob();
 
 private:
-    NetworkDataTaskBlob(NetworkSession&, WebCore::BlobRegistryImpl&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::ContentSniffingPolicy, const Vector<RefPtr<WebCore::BlobDataFileReference>>&);
+    NetworkDataTaskBlob(NetworkSession&, NetworkDataTaskClient&, const WebCore::ResourceRequest&, WebCore::ContentSniffingPolicy, const Vector<RefPtr<WebCore::BlobDataFileReference>>&);
 
     void suspend() override;
     void cancel() override;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -50,7 +50,7 @@
     ResponseCompletionHandler responseCompletionHandler;
 };
 
-NetworkLoad::NetworkLoad(NetworkLoadClient& client, BlobRegistryImpl* blobRegistry, NetworkLoadParameters&& parameters, NetworkSession& networkSession)
+NetworkLoad::NetworkLoad(NetworkLoadClient& client, NetworkLoadParameters&& parameters, NetworkSession& networkSession)
     : m_client(client)
     , m_networkProcess(networkSession.networkProcess())
     , m_parameters(WTFMove(parameters))
@@ -57,16 +57,12 @@
     , m_loadThrottleLatency(networkSession.loadThrottleLatency())
     , m_currentRequest(m_parameters.request)
 {
-    initialize(networkSession, blobRegistry);
+    initialize(networkSession);
 }
 
-void NetworkLoad::initialize(NetworkSession& networkSession, WebCore::BlobRegistryImpl* blobRegistry)
+void NetworkLoad::initialize(NetworkSession& networkSession)
 {
-    if (blobRegistry && m_parameters.request.url().protocolIsBlob())
-        m_task = NetworkDataTaskBlob::create(networkSession, *blobRegistry, *this, m_parameters.request, m_parameters.contentSniffingPolicy, m_parameters.blobFileReferences);
-    else
-        m_task = NetworkDataTask::create(networkSession, *this, m_parameters);
-
+    m_task = NetworkDataTask::create(networkSession, *this, m_parameters);
     if (!m_parameters.defersLoading)
         m_task->resume();
 }

Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoad.h (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkLoad.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoad.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -33,10 +33,6 @@
 #include <wtf/CompletionHandler.h>
 #include <wtf/text/WTFString.h>
 
-namespace WebCore {
-class BlobRegistryImpl;
-}
-
 namespace WebKit {
 
 class NetworkProcess;
@@ -44,7 +40,7 @@
 class NetworkLoad final : private NetworkDataTaskClient {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    NetworkLoad(NetworkLoadClient&, WebCore::BlobRegistryImpl*, NetworkLoadParameters&&, NetworkSession&);
+    NetworkLoad(NetworkLoadClient&, NetworkLoadParameters&&, NetworkSession&);
     ~NetworkLoad();
 
     void setDefersLoading(bool);
@@ -69,7 +65,7 @@
     String description() const;
 
 private:
-    void initialize(NetworkSession&, WebCore::BlobRegistryImpl*);
+    void initialize(NetworkSession&);
 
     // NetworkDataTaskClient
     void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler&&) final;

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -37,6 +37,7 @@
 #include "LegacyCustomProtocolManager.h"
 #endif
 #include "Logging.h"
+#include "NetworkBlobRegistry.h"
 #include "NetworkConnectionToWebProcess.h"
 #include "NetworkContentRuleListManagerMessages.h"
 #include "NetworkProcessCreationParameters.h"
@@ -149,10 +150,9 @@
     });
 #endif
 
-    NetworkStateNotifier::singleton().addListener([weakThis = makeWeakPtr(*this)](bool isOnLine) {
-        if (!weakThis)
-            return;
-        for (auto& webProcessConnection : weakThis->m_webProcessConnections)
+    NetworkStateNotifier::singleton().addListener([this](bool isOnLine) {
+        auto webProcessConnections = m_webProcessConnections;
+        for (auto& webProcessConnection : webProcessConnections)
             webProcessConnection->setOnLineState(isOnLine);
     });
 
@@ -186,10 +186,10 @@
 
 void NetworkProcess::removeNetworkConnectionToWebProcess(NetworkConnectionToWebProcess& connection)
 {
-    auto count = m_webProcessConnections.removeAllMatching([&] (const auto& c) {
-        return c.ptr() == &connection;
-    });
-    ASSERT_UNUSED(count, count == 1);
+    size_t vectorIndex = m_webProcessConnections.find(&connection);
+    ASSERT(vectorIndex != notFound);
+
+    m_webProcessConnections.remove(vectorIndex);
 }
 
 bool NetworkProcess::shouldTerminate()

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -28,7 +28,6 @@
 #include "AuxiliaryProcess.h"
 #include "CacheModel.h"
 #include "DownloadManager.h"
-#include "NetworkBlobRegistry.h"
 #include "NetworkContentRuleListManager.h"
 #include "NetworkHTTPSUpgradeChecker.h"
 #include "SandboxExtension.h"
@@ -292,8 +291,6 @@
     void removeCacheEngine(const PAL::SessionID&);
     void requestCacheStorageSpace(PAL::SessionID, const WebCore::ClientOrigin&, uint64_t quota, uint64_t currentSize, uint64_t spaceRequired, CompletionHandler<void(Optional<uint64_t>)>&&);
 
-    NetworkBlobRegistry& networkBlobRegistry() { return m_networkBlobRegistry; }
-
 private:
     void platformInitializeNetworkProcess(const NetworkProcessCreationParameters&);
     std::unique_ptr<WebCore::NetworkStorageSession> platformCreateDefaultStorageSession() const;
@@ -425,7 +422,7 @@
     void ensurePathExists(const String& path);
 
     // Connections to WebProcesses.
-    Vector<Ref<NetworkConnectionToWebProcess>> m_webProcessConnections;
+    Vector<RefPtr<NetworkConnectionToWebProcess>> m_webProcessConnections;
 
     String m_diskCacheDirectory;
     bool m_hasSetCacheModel { false };
@@ -448,7 +445,6 @@
     HashMap<PAL::SessionID, Ref<NetworkSession>> m_networkSessions;
     HashMap<PAL::SessionID, std::unique_ptr<WebCore::NetworkStorageSession>> m_networkStorageSessions;
     mutable std::unique_ptr<WebCore::NetworkStorageSession> m_defaultNetworkStorageSession;
-    NetworkBlobRegistry m_networkBlobRegistry;
 
 #if PLATFORM(COCOA)
     void platformInitializeNetworkProcessCocoa(const NetworkProcessCreationParameters&);

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcessPlatformStrategies.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcessPlatformStrategies.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcessPlatformStrategies.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -26,7 +26,7 @@
 #include "config.h"
 #include "NetworkProcessPlatformStrategies.h"
 
-#include <WebCore/BlobRegistry.h>
+#include <WebCore/BlobRegistryImpl.h>
 #include <wtf/NeverDestroyed.h>
 
 namespace WebKit {
@@ -50,20 +50,7 @@
 
 BlobRegistry* NetworkProcessPlatformStrategies::createBlobRegistry()
 {
-    using namespace WebCore;
-    class EmptyBlobRegistry : public WebCore::BlobRegistry {
-        void registerFileBlobURL(const URL&, Ref<BlobDataFileReference>&&, const String& contentType) final { ASSERT_NOT_REACHED(); }
-        void registerBlobURL(const URL&, Vector<BlobPart>&&, const String& contentType) final { ASSERT_NOT_REACHED(); }
-        void registerBlobURL(const URL&, const URL& srcURL) final { ASSERT_NOT_REACHED(); }
-        void registerBlobURLOptionallyFileBacked(const URL&, const URL& srcURL, RefPtr<BlobDataFileReference>&&, const String& contentType) final { ASSERT_NOT_REACHED(); }
-        void registerBlobURLForSlice(const URL&, const URL& srcURL, long long start, long long end) final { ASSERT_NOT_REACHED(); }
-        void unregisterBlobURL(const URL&) final { ASSERT_NOT_REACHED(); }
-        unsigned long long blobSize(const URL&) final { ASSERT_NOT_REACHED(); return 0; }
-        void writeBlobsToTemporaryFiles(const Vector<String>& blobURLs, CompletionHandler<void(Vector<String>&& filePaths)>&&) final { ASSERT_NOT_REACHED(); }
-        bool isBlobRegistryImpl() const { return false; }
-    };
-    static NeverDestroyed<EmptyBlobRegistry> blobRegistry;
-    return &blobRegistry.get();
+    return new BlobRegistryImpl;
 }
 
 }

Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -29,6 +29,7 @@
 #include "DataReference.h"
 #include "FormDataReference.h"
 #include "Logging.h"
+#include "NetworkBlobRegistry.h"
 #include "NetworkCache.h"
 #include "NetworkConnectionToWebProcess.h"
 #include "NetworkLoad.h"
@@ -91,7 +92,6 @@
 NetworkResourceLoader::NetworkResourceLoader(NetworkResourceLoadParameters&& parameters, NetworkConnectionToWebProcess& connection, Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&& synchronousReply)
     : m_parameters { WTFMove(parameters) }
     , m_connection { connection }
-    , m_fileReferences(connection.resolveBlobReferences(m_parameters))
     , m_defersLoading { parameters.defersLoading }
     , m_isAllowedToAskUserForCredentials { m_parameters.clientCredentialPolicy == ClientCredentialPolicy::MayAskClientForCredentials }
     , m_bufferingTimer { *this, &NetworkResourceLoader::bufferingTimerFired }
@@ -103,6 +103,13 @@
     //        Once bug 116233 is resolved, this ASSERT can just be "m_webPageID && m_webFrameID"
     ASSERT((m_parameters.webPageID && m_parameters.webFrameID) || m_parameters.clientCredentialPolicy == ClientCredentialPolicy::CannotAskClientForCredentials);
 
+    if (originalRequest().httpBody()) {
+        for (const auto& element : originalRequest().httpBody()->elements()) {
+            if (auto* blobData = WTF::get_if<FormDataElement::EncodedBlobData>(element.data))
+                m_fileReferences.appendVector(NetworkBlobRegistry::singleton().filesInBlob(connection, blobData->url));
+        }
+    }
+
     if (synchronousReply || parameters.shouldRestrictHTTPResponseAccess) {
         NetworkLoadChecker::LoadType requestLoadType = isMainFrameLoad() ? NetworkLoadChecker::LoadType::MainFrame : NetworkLoadChecker::LoadType::Other;
         m_networkLoadChecker = std::make_unique<NetworkLoadChecker>(connection.networkProcess(), FetchOptions { m_parameters.options }, m_parameters.sessionID, m_parameters.webPageID, m_parameters.webFrameID, HTTPHeaderMap { m_parameters.originalRequestHeaders }, URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.preflightPolicy, originalRequest().httpReferrer(), m_parameters.isHTTPSUpgradeEnabled, shouldCaptureExtraNetworkLoadMetrics(), requestLoadType);
@@ -121,7 +128,6 @@
     ASSERT(RunLoop::isMain());
     ASSERT(!m_networkLoad);
     ASSERT(!isSynchronous() || !m_synchronousLoadData->delayedReply);
-    ASSERT(m_fileReferences.isEmpty());
     if (m_responseCompletionHandler)
         m_responseCompletionHandler(PolicyAction::Ignore);
 }
@@ -276,7 +282,7 @@
         parameters.storedCredentialsPolicy = m_networkLoadChecker->storedCredentialsPolicy();
 
     if (request.url().protocolIsBlob())
-        parameters.blobFileReferences = m_connection->filesInBlob(originalRequest().url());
+        parameters.blobFileReferences = NetworkBlobRegistry::singleton().filesInBlob(m_connection, originalRequest().url());
 
     auto* networkSession = m_connection->networkProcess().networkSession(parameters.sessionID);
     if (!networkSession && parameters.sessionID.isEphemeral()) {
@@ -292,7 +298,7 @@
     }
 
     parameters.request = WTFMove(request);
-    m_networkLoad = std::make_unique<NetworkLoad>(*this, &m_connection->blobRegistry(), WTFMove(parameters), *networkSession);
+    m_networkLoad = std::make_unique<NetworkLoad>(*this, WTFMove(parameters), *networkSession);
 
     RELEASE_LOG_IF_ALLOWED("startNetworkLoad: (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ", description = %{public}s)", m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, m_networkLoad->description().utf8().data());
 

Modified: trunk/Source/WebKit/NetworkProcess/PingLoad.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/PingLoad.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/PingLoad.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -29,7 +29,6 @@
 #include "AuthenticationChallengeDisposition.h"
 #include "AuthenticationManager.h"
 #include "Logging.h"
-#include "NetworkConnectionToWebProcess.h"
 #include "NetworkLoadChecker.h"
 #include "NetworkProcess.h"
 #include "WebErrors.h"
@@ -40,18 +39,12 @@
 
 using namespace WebCore;
 
-PingLoad::PingLoad(NetworkConnectionToWebProcess& connection, NetworkProcess& networkProcess, NetworkResourceLoadParameters&& parameters, CompletionHandler<void(const ResourceError&, const ResourceResponse&)>&& completionHandler)
+PingLoad::PingLoad(NetworkProcess& networkProcess, NetworkResourceLoadParameters&& parameters, CompletionHandler<void(const ResourceError&, const ResourceResponse&)>&& completionHandler)
     : m_parameters(WTFMove(parameters))
     , m_completionHandler(WTFMove(completionHandler))
     , m_timeoutTimer(*this, &PingLoad::timeoutTimerFired)
     , m_networkLoadChecker(makeUniqueRef<NetworkLoadChecker>(networkProcess, FetchOptions { m_parameters.options}, m_parameters.sessionID, m_parameters.webPageID, m_parameters.webFrameID, WTFMove(m_parameters.originalRequestHeaders), URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.preflightPolicy, m_parameters.request.httpReferrer()))
-    , m_blobFiles(connection.resolveBlobReferences(m_parameters))
 {
-    for (auto& file : m_blobFiles) {
-        if (file)
-            file->prepareForFileAccess();
-    }
-
     m_networkLoadChecker->enableContentExtensionsCheck();
     if (m_parameters.cspResponseHeaders)
         m_networkLoadChecker->setCSPResponseHeaders(WTFMove(m_parameters.cspResponseHeaders.value()));
@@ -86,10 +79,6 @@
         m_task->clearClient();
         m_task->cancel();
     }
-    for (auto& file : m_blobFiles) {
-        if (file)
-            file->revokeFileAccess();
-    }
 }
 
 void PingLoad::didFinish(const ResourceError& error, const ResourceResponse& response)

Modified: trunk/Source/WebKit/NetworkProcess/PingLoad.h (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/PingLoad.h	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/PingLoad.h	2019-02-06 01:02:44 UTC (rev 241005)
@@ -40,7 +40,7 @@
 
 class PingLoad final : public CanMakeWeakPtr<PingLoad>, private NetworkDataTaskClient {
 public:
-    PingLoad(NetworkConnectionToWebProcess&, NetworkProcess&, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
+    PingLoad(NetworkProcess&, NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
     
 private:
     ~PingLoad();
@@ -66,7 +66,6 @@
     RefPtr<NetworkDataTask> m_task;
     WebCore::Timer m_timeoutTimer;
     UniqueRef<NetworkLoadChecker> m_networkLoadChecker;
-    Vector<RefPtr<WebCore::BlobDataFileReference>> m_blobFiles;
 };
 
 }

Modified: trunk/Source/WebKit/NetworkProcess/PreconnectTask.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/PreconnectTask.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/PreconnectTask.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -53,7 +53,7 @@
     }
 
     ASSERT(parameters.shouldPreconnectOnly == PreconnectOnly::Yes);
-    m_networkLoad = std::make_unique<NetworkLoad>(*this, nullptr, WTFMove(parameters), *networkSession);
+    m_networkLoad = std::make_unique<NetworkLoad>(*this, WTFMove(parameters), *networkSession);
 
     m_timeoutTimer.startOneShot(60000_s);
 }

Modified: trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp (241004 => 241005)


--- trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp	2019-02-06 01:01:38 UTC (rev 241004)
+++ trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp	2019-02-06 01:02:44 UTC (rev 241005)
@@ -60,7 +60,7 @@
     parameters.contentSniffingPolicy = ContentSniffingPolicy::DoNotSniffContent;
     parameters.contentEncodingSniffingPolicy = ContentEncodingSniffingPolicy::Sniff;
     parameters.request = m_originalRequest;
-    m_networkLoad = std::make_unique<NetworkLoad>(*this, nullptr, WTFMove(parameters), *cache.networkProcess().networkSession(PAL::SessionID::defaultSessionID()));
+    m_networkLoad = std::make_unique<NetworkLoad>(*this, WTFMove(parameters), *cache.networkProcess().networkSession(PAL::SessionID::defaultSessionID()));
 }
 
 SpeculativeLoad::~SpeculativeLoad()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to