Title: [223933] trunk/Source/WebCore
Revision
223933
Author
[email protected]
Date
2017-10-24 15:20:59 -0700 (Tue, 24 Oct 2017)

Log Message

Optionally store entire ResourceRequest for ping loads
https://bugs.webkit.org/show_bug.cgi?id=178756

Reviewed by Tim Horton.

No change in behavior.
This uses less memory in the common loading case.
This will be needed for moving appcache loading to the Networking Process.
See https://bugs.webkit.org/show_bug.cgi?id=178540

* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::load):
* loader/cache/CachedResource.h:
(WebCore::CachedResource::setOriginalRequest):
(WebCore::CachedResource::originalRequest const):
(WebCore::CachedResource::setOriginalRequestHeaders): Deleted.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (223932 => 223933)


--- trunk/Source/WebCore/ChangeLog	2017-10-24 22:19:44 UTC (rev 223932)
+++ trunk/Source/WebCore/ChangeLog	2017-10-24 22:20:59 UTC (rev 223933)
@@ -1,3 +1,24 @@
+2017-10-24  Alex Christensen  <[email protected]>
+
+        Optionally store entire ResourceRequest for ping loads
+        https://bugs.webkit.org/show_bug.cgi?id=178756
+
+        Reviewed by Tim Horton.
+
+        No change in behavior.
+        This uses less memory in the common loading case.
+        This will be needed for moving appcache loading to the Networking Process.
+        See https://bugs.webkit.org/show_bug.cgi?id=178540
+
+        * loader/cache/CachedResource.cpp:
+        (WebCore::CachedResource::load):
+        * loader/cache/CachedResource.h:
+        (WebCore::CachedResource::setOriginalRequest):
+        (WebCore::CachedResource::originalRequest const):
+        (WebCore::CachedResource::setOriginalRequestHeaders): Deleted.
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::CachedResourceLoader::requestResource):
+
 2017-10-24  Andy Estes  <[email protected]>
 
         [WebIDL] Support the ExportMacro attribute for dictionaries

Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (223932 => 223933)


--- trunk/Source/WebCore/loader/cache/CachedResource.cpp	2017-10-24 22:19:44 UTC (rev 223932)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp	2017-10-24 22:20:59 UTC (rev 223933)
@@ -269,7 +269,7 @@
         }
         // FIXME: We should not special-case Beacon here.
         if (shouldUsePingLoad(type())) {
-            ASSERT(m_originalRequestHeaders);
+            ASSERT(m_originalRequest);
             CachedResourceHandle<CachedResource> protectedThis(this);
 
             // FIXME: Move beacon loads to normal subresource loading to get normal inspector request instrumentation hooks.
@@ -276,7 +276,7 @@
             unsigned long identifier = frame.page()->progress().createUniqueIdentifier();
             InspectorInstrumentation::willSendRequestOfType(&frame, identifier, frameLoader.activeDocumentLoader(), request, InspectorInstrumentation::LoadType::Beacon);
 
-            platformStrategies()->loaderStrategy()->startPingLoad(frame, request, *m_originalRequestHeaders, m_options, [this, protectedThis = WTFMove(protectedThis), protectedFrame = makeRef(frame), identifier] (const ResourceError& error, const ResourceResponse& response) {
+            platformStrategies()->loaderStrategy()->startPingLoad(frame, request, m_originalRequest->httpHeaderFields(), m_options, [this, protectedThis = WTFMove(protectedThis), protectedFrame = makeRef(frame), identifier] (const ResourceError& error, const ResourceResponse& response) {
                 if (!response.isNull())
                     InspectorInstrumentation::didReceiveResourceResponse(protectedFrame, identifier, protectedFrame->loader().activeDocumentLoader(), response, nullptr);
                 if (error.isNull()) {

Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (223932 => 223933)


--- trunk/Source/WebCore/loader/cache/CachedResource.h	2017-10-24 22:19:44 UTC (rev 223932)
+++ trunk/Source/WebCore/loader/cache/CachedResource.h	2017-10-24 22:20:59 UTC (rev 223933)
@@ -283,7 +283,8 @@
     unsigned long identifierForLoadWithoutResourceLoader() const { return m_identifierForLoadWithoutResourceLoader; }
     static ResourceLoadPriority defaultPriorityForResourceType(Type);
 
-    void setOriginalRequestHeaders(std::optional<HTTPHeaderMap>&& originalRequestHeaders) { m_originalRequestHeaders = WTFMove(originalRequestHeaders); }
+    void setOriginalRequest(std::unique_ptr<ResourceRequest>&& originalRequest) { m_originalRequest = WTFMove(originalRequest); }
+    const std::unique_ptr<ResourceRequest>& originalRequest() const { return m_originalRequest; }
 
 protected:
     // CachedResource constructor that may be used when the CachedResource can already be filled with response data.
@@ -300,7 +301,7 @@
     // FIXME: Make the rest of these data members private and use functions in derived classes instead.
     HashCountedSet<CachedResourceClient*> m_clients;
     ResourceRequest m_resourceRequest;
-    std::optional<HTTPHeaderMap> m_originalRequestHeaders; // Needed by Ping loads.
+    std::unique_ptr<ResourceRequest> m_originalRequest; // Needed by Ping loads.
     RefPtr<SubresourceLoader> m_loader;
     ResourceLoaderOptions m_options;
     ResourceResponse m_response;

Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (223932 => 223933)


--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2017-10-24 22:19:44 UTC (rev 223932)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp	2017-10-24 22:20:59 UTC (rev 223933)
@@ -713,9 +713,9 @@
 
 ResourceErrorOr<CachedResourceHandle<CachedResource>> CachedResourceLoader::requestResource(CachedResource::Type type, CachedResourceRequest&& request, ForPreload forPreload, DeferOption defer)
 {
-    std::optional<HTTPHeaderMap> originalRequestHeaders;
+    std::unique_ptr<ResourceRequest> originalRequest;
     if (CachedResource::shouldUsePingLoad(type))
-        originalRequestHeaders = request.resourceRequest().httpHeaderFields();
+        originalRequest = std::make_unique<ResourceRequest>(request.resourceRequest());
 
     if (Document* document = this->document())
         request.upgradeInsecureRequestIfNeeded(*document);
@@ -860,7 +860,7 @@
         break;
     }
     ASSERT(resource);
-    resource->setOriginalRequestHeaders(WTFMove(originalRequestHeaders));
+    resource->setOriginalRequest(WTFMove(originalRequest));
 
     if (forPreload == ForPreload::No && resource->loader() && resource->ignoreForRequestCount()) {
         resource->setIgnoreForRequestCount(false);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to