Changeset 229347 in webkit


Ignore:
Timestamp:
Mar 6, 2018 4:32:20 PM (6 years ago)
Author:
commit-queue@webkit.org
Message:

[Curl] Remove unnecessary copied ResourceRequest member variable.
https://bugs.webkit.org/show_bug.cgi?id=183010

Patch by Basuke Suzuki <Basuke Suzuki> on 2018-03-06
Reviewed by Youenn Fablet.

  • platform/network/ResourceHandle.h:
  • platform/network/ResourceHandleInternal.h:

(WebCore::ResourceHandleInternal::ResourceHandleInternal):

  • platform/network/curl/CurlRequest.h:

(WebCore::CurlRequest::resourceRequest const):

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::addCacheValidationHeaders):
(WebCore::ResourceHandle::createCurlRequest):
(WebCore::ResourceHandle::restartRequestWithCredential):
(WebCore::ResourceHandle::continueAfterWillSendRequest):

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r229344 r229347  
     12018-03-06  Basuke Suzuki  <Basuke.Suzuki@sony.com>
     2
     3        [Curl] Remove unnecessary copied ResourceRequest member variable.
     4        https://bugs.webkit.org/show_bug.cgi?id=183010
     5
     6        Reviewed by Youenn Fablet.
     7
     8        * platform/network/ResourceHandle.h:
     9        * platform/network/ResourceHandleInternal.h:
     10        (WebCore::ResourceHandleInternal::ResourceHandleInternal):
     11        * platform/network/curl/CurlRequest.h:
     12        (WebCore::CurlRequest::resourceRequest const):
     13        * platform/network/curl/ResourceHandleCurl.cpp:
     14        (WebCore::ResourceHandle::start):
     15        (WebCore::ResourceHandle::addCacheValidationHeaders):
     16        (WebCore::ResourceHandle::createCurlRequest):
     17        (WebCore::ResourceHandle::restartRequestWithCredential):
     18        (WebCore::ResourceHandle::continueAfterWillSendRequest):
     19
    1202018-03-06  Nan Wang  <n_wang@apple.com>
    221
  • trunk/Source/WebCore/platform/network/ResourceHandle.h

    r228577 r229347  
    298298
    299299#if USE(CURL)
    300     Ref<CurlRequest> createCurlRequest(ResourceRequest&);
     300    enum class RequestStatus {
     301        NewRequest,
     302        ReusedRequest
     303    };
     304
     305    void addCacheValidationHeaders(ResourceRequest&);
     306    Ref<CurlRequest> createCurlRequest(ResourceRequest&, RequestStatus = RequestStatus::NewRequest);
    301307
    302308    bool shouldRedirectAsGET(const ResourceRequest&, bool crossOrigin);
  • trunk/Source/WebCore/platform/network/ResourceHandleInternal.h

    r228577 r229347  
    7777        , m_shouldContentSniff(shouldContentSniff)
    7878        , m_shouldContentEncodingSniff(shouldContentEncodingSniff)
    79 #if USE(CFURLCONNECTION) || USE(CURL)
     79#if USE(CFURLCONNECTION)
    8080        , m_currentRequest(request)
    8181#endif
     
    130130    std::unique_ptr<CurlResourceHandleDelegate> m_delegate;
    131131   
    132     ResourceRequest m_currentRequest;
    133132    bool m_cancelled { false };
    134133    unsigned m_redirectCount { 0 };
  • trunk/Source/WebCore/platform/network/curl/CurlRequest.h

    r228577 r229347  
    7272    void resume();
    7373
     74    const ResourceRequest& resourceRequest() const { return m_request; }
    7475    bool isSyncRequest() const { return m_isSyncRequest; }
    7576    bool isCompleted() const { return !m_curlHandle; }
  • trunk/Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp

    r229032 r229347  
    8484    }
    8585
    86     d->m_curlRequest = createCurlRequest(d->m_currentRequest);
    87 
    88     if (auto credential = getCredential(d->m_currentRequest, false))
     86    d->m_curlRequest = createCurlRequest(d->m_firstRequest);
     87
     88    if (auto credential = getCredential(d->m_firstRequest, false))
    8989        d->m_curlRequest->setUserPass(credential->first, credential->second);
    9090
     
    112112}
    113113
    114 Ref<CurlRequest> ResourceHandle::createCurlRequest(ResourceRequest& request)
    115 {
    116     ASSERT(isMainThread());
    117 
    118     // CurlCache : append additional cache information
     114void ResourceHandle::addCacheValidationHeaders(ResourceRequest& request)
     115{
     116    ASSERT(isMainThread());
     117
    119118    d->m_addedCacheValidationHeaders = false;
    120119
    121     bool hasCacheHeaders = request.httpHeaderFields().contains(HTTPHeaderName::IfModifiedSince) || request.httpHeaderFields().contains(HTTPHeaderName::IfNoneMatch);
    122     if (!hasCacheHeaders) {
    123         auto& cache = CurlCacheManager::singleton();
    124         URL cacheUrl = request.url();
    125         cacheUrl.removeFragmentIdentifier();
    126 
    127         if (cache.isCached(cacheUrl)) {
    128             cache.addCacheEntryClient(cacheUrl, this);
    129 
    130             for (const auto& entry : cache.requestHeaders(cacheUrl))
    131                 request.addHTTPHeaderField(entry.key, entry.value);
    132 
    133             d->m_addedCacheValidationHeaders = true;
    134         }
    135     }
    136 
    137     auto& storageSession = NetworkStorageSession::defaultStorageSession();
    138     auto& cookieJar = storageSession.cookieStorage();
    139     auto includeSecureCookies = request.url().protocolIs("https") ? IncludeSecureCookies::Yes : IncludeSecureCookies::No;
    140     String cookieHeaderField = cookieJar.cookieRequestHeaderFieldValue(storageSession, request.firstPartyForCookies(), request.url(), std::nullopt, std::nullopt, includeSecureCookies).first;
    141     if (!cookieHeaderField.isEmpty())
    142         request.addHTTPHeaderField(HTTPHeaderName::Cookie, cookieHeaderField);
     120    auto hasCacheHeaders = request.httpHeaderFields().contains(HTTPHeaderName::IfModifiedSince) || request.httpHeaderFields().contains(HTTPHeaderName::IfNoneMatch);
     121    if (hasCacheHeaders)
     122        return;
     123
     124    auto& cache = CurlCacheManager::singleton();
     125    URL cacheUrl = request.url();
     126    cacheUrl.removeFragmentIdentifier();
     127
     128    if (cache.isCached(cacheUrl)) {
     129        cache.addCacheEntryClient(cacheUrl, this);
     130
     131        for (const auto& entry : cache.requestHeaders(cacheUrl))
     132            request.addHTTPHeaderField(entry.key, entry.value);
     133
     134        d->m_addedCacheValidationHeaders = true;
     135    }
     136}
     137
     138Ref<CurlRequest> ResourceHandle::createCurlRequest(ResourceRequest& request, RequestStatus status)
     139{
     140    ASSERT(isMainThread());
     141
     142    if (status == RequestStatus::NewRequest) {
     143        addCacheValidationHeaders(request);
     144
     145        auto& storageSession = NetworkStorageSession::defaultStorageSession();
     146        auto& cookieJar = storageSession.cookieStorage();
     147        auto includeSecureCookies = request.url().protocolIs("https") ? IncludeSecureCookies::Yes : IncludeSecureCookies::No;
     148        String cookieHeaderField = cookieJar.cookieRequestHeaderFieldValue(storageSession, request.firstPartyForCookies(), request.url(), std::nullopt, std::nullopt, includeSecureCookies).first;
     149        if (!cookieHeaderField.isEmpty())
     150            request.addHTTPHeaderField(HTTPHeaderName::Cookie, cookieHeaderField);
     151    }
    143152
    144153    CurlRequest::ShouldSuspend shouldSuspend = d->m_defersLoading ? CurlRequest::ShouldSuspend::Yes : CurlRequest::ShouldSuspend::No;
     
    362371        return;
    363372   
    364     bool isSyncRequest = d->m_curlRequest->isSyncRequest();
     373    auto wasSyncRequest = d->m_curlRequest->isSyncRequest();
     374    auto previousRequest = d->m_curlRequest->resourceRequest();
    365375    d->m_curlRequest->cancel();
    366376
    367     d->m_curlRequest = createCurlRequest(d->m_currentRequest);
     377    d->m_curlRequest = createCurlRequest(previousRequest, RequestStatus::ReusedRequest);
    368378    d->m_curlRequest->setUserPass(user, password);
    369     d->m_curlRequest->start(isSyncRequest);
     379    d->m_curlRequest->start(wasSyncRequest);
    370380}
    371381
     
    490500        return;
    491501
    492     d->m_currentRequest = WTFMove(request);
    493 
    494     bool isSyncRequest = d->m_curlRequest->isSyncRequest();
     502    auto wasSyncRequest = d->m_curlRequest->isSyncRequest();
    495503    d->m_curlRequest->cancel();
    496504
    497     d->m_curlRequest = createCurlRequest(d->m_currentRequest);
    498 
    499     if (protocolHostAndPortAreEqual(d->m_currentRequest.url(), delegate()->response().url())) {
    500         if (auto credential = getCredential(d->m_currentRequest, true))
     505    d->m_curlRequest = createCurlRequest(request);
     506
     507    if (protocolHostAndPortAreEqual(request.url(), delegate()->response().url())) {
     508        if (auto credential = getCredential(request, true))
    501509            d->m_curlRequest->setUserPass(credential->first, credential->second);
    502510    }
    503511
    504     d->m_curlRequest->start(isSyncRequest);
     512    d->m_curlRequest->start(wasSyncRequest);
    505513}
    506514
Note: See TracChangeset for help on using the changeset viewer.