Changeset 223933 in webkit


Ignore:
Timestamp:
Oct 24, 2017 3:20:59 PM (7 years ago)
Author:
achristensen@apple.com
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):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r223930 r223933  
     12017-10-24  Alex Christensen  <achristensen@webkit.org>
     2
     3        Optionally store entire ResourceRequest for ping loads
     4        https://bugs.webkit.org/show_bug.cgi?id=178756
     5
     6        Reviewed by Tim Horton.
     7
     8        No change in behavior.
     9        This uses less memory in the common loading case.
     10        This will be needed for moving appcache loading to the Networking Process.
     11        See https://bugs.webkit.org/show_bug.cgi?id=178540
     12
     13        * loader/cache/CachedResource.cpp:
     14        (WebCore::CachedResource::load):
     15        * loader/cache/CachedResource.h:
     16        (WebCore::CachedResource::setOriginalRequest):
     17        (WebCore::CachedResource::originalRequest const):
     18        (WebCore::CachedResource::setOriginalRequestHeaders): Deleted.
     19        * loader/cache/CachedResourceLoader.cpp:
     20        (WebCore::CachedResourceLoader::requestResource):
     21
    1222017-10-24  Andy Estes  <aestes@apple.com>
    223
  • trunk/Source/WebCore/loader/cache/CachedResource.cpp

    r223476 r223933  
    270270        // FIXME: We should not special-case Beacon here.
    271271        if (shouldUsePingLoad(type())) {
    272             ASSERT(m_originalRequestHeaders);
     272            ASSERT(m_originalRequest);
    273273            CachedResourceHandle<CachedResource> protectedThis(this);
    274274
     
    277277            InspectorInstrumentation::willSendRequestOfType(&frame, identifier, frameLoader.activeDocumentLoader(), request, InspectorInstrumentation::LoadType::Beacon);
    278278
    279             platformStrategies()->loaderStrategy()->startPingLoad(frame, request, *m_originalRequestHeaders, m_options, [this, protectedThis = WTFMove(protectedThis), protectedFrame = makeRef(frame), identifier] (const ResourceError& error, const ResourceResponse& response) {
     279            platformStrategies()->loaderStrategy()->startPingLoad(frame, request, m_originalRequest->httpHeaderFields(), m_options, [this, protectedThis = WTFMove(protectedThis), protectedFrame = makeRef(frame), identifier] (const ResourceError& error, const ResourceResponse& response) {
    280280                if (!response.isNull())
    281281                    InspectorInstrumentation::didReceiveResourceResponse(protectedFrame, identifier, protectedFrame->loader().activeDocumentLoader(), response, nullptr);
  • trunk/Source/WebCore/loader/cache/CachedResource.h

    r223091 r223933  
    284284    static ResourceLoadPriority defaultPriorityForResourceType(Type);
    285285
    286     void setOriginalRequestHeaders(std::optional<HTTPHeaderMap>&& originalRequestHeaders) { m_originalRequestHeaders = WTFMove(originalRequestHeaders); }
     286    void setOriginalRequest(std::unique_ptr<ResourceRequest>&& originalRequest) { m_originalRequest = WTFMove(originalRequest); }
     287    const std::unique_ptr<ResourceRequest>& originalRequest() const { return m_originalRequest; }
    287288
    288289protected:
     
    301302    HashCountedSet<CachedResourceClient*> m_clients;
    302303    ResourceRequest m_resourceRequest;
    303     std::optional<HTTPHeaderMap> m_originalRequestHeaders; // Needed by Ping loads.
     304    std::unique_ptr<ResourceRequest> m_originalRequest; // Needed by Ping loads.
    304305    RefPtr<SubresourceLoader> m_loader;
    305306    ResourceLoaderOptions m_options;
  • trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp

    r223909 r223933  
    714714ResourceErrorOr<CachedResourceHandle<CachedResource>> CachedResourceLoader::requestResource(CachedResource::Type type, CachedResourceRequest&& request, ForPreload forPreload, DeferOption defer)
    715715{
    716     std::optional<HTTPHeaderMap> originalRequestHeaders;
     716    std::unique_ptr<ResourceRequest> originalRequest;
    717717    if (CachedResource::shouldUsePingLoad(type))
    718         originalRequestHeaders = request.resourceRequest().httpHeaderFields();
     718        originalRequest = std::make_unique<ResourceRequest>(request.resourceRequest());
    719719
    720720    if (Document* document = this->document())
     
    861861    }
    862862    ASSERT(resource);
    863     resource->setOriginalRequestHeaders(WTFMove(originalRequestHeaders));
     863    resource->setOriginalRequest(WTFMove(originalRequest));
    864864
    865865    if (forPreload == ForPreload::No && resource->loader() && resource->ignoreForRequestCount()) {
Note: See TracChangeset for help on using the changeset viewer.