⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 201603 in webkit


Ignore:
Timestamp:
Jun 2, 2016, 11:17:47 AM (10 years ago)
Author:
beidson@apple.com
Message:

Overhaul cross-thread use of ResourceRequest, ResourceResponse, and ResourceError.
https://bugs.webkit.org/show_bug.cgi?id=158293

Reviewed by Darin Adler.

Source/WebCore:

No new tests (Refactor, no behavior change).

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck):

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::removeRequestFromSessionCaches):

  • platform/network/ResourceErrorBase.cpp:

(WebCore::ResourceErrorBase::isolatedCopy):
(WebCore::ResourceErrorBase::copy): Deleted.

  • platform/network/ResourceErrorBase.h:
  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::isolatedCopy):
(WebCore::ResourceRequestBase::setAsIsolatedCopy):
(WebCore::ResourceRequestBase::adopt): Deleted.

Made copyData private, and made "adopt" be "isolatedCopy".
Rest of the changes are all re-indenting the file.

  • platform/network/ResourceRequestBase.h:

(WebCore::ResourceRequestBase::responseContentDispositionEncodingFallbackArray):
(WebCore::ResourceRequestBase::reportUploadProgress):
(WebCore::ResourceRequestBase::setReportUploadProgress):
(WebCore::ResourceRequestBase::reportLoadTiming):
(WebCore::ResourceRequestBase::setReportLoadTiming):
(WebCore::ResourceRequestBase::reportRawHeaders):
(WebCore::ResourceRequestBase::setReportRawHeaders):
(WebCore::ResourceRequestBase::hiddenFromInspector):
(WebCore::ResourceRequestBase::setHiddenFromInspector):
(WebCore::ResourceRequestBase::requester):
(WebCore::ResourceRequestBase::setRequester):
(WebCore::ResourceRequestBase::encodingRequiresPlatformData):
(WebCore::ResourceRequestBase::ResourceRequestBase):
(WebCore::ResourceRequestBase::platformCompare):
(WebCore::operator==):
(WebCore::operator!=):

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::isolatedCopy):
(WebCore::ResourceResponseBase::adopt): Deleted.

  • platform/network/ResourceResponseBase.h:
  • platform/network/cf/ResourceError.h:

(WebCore::ResourceError::isolatedCopy): Deleted.

Removed platform-specific isolatedCopy, and re-indented the header:

  • platform/network/cf/ResourceRequest.h:

(WebCore::ResourceRequest::ResourceRequest):
(WebCore::ResourceRequest::encodingRequiresPlatformData):
(WebCore::ResourceRequest::cachePartition):
(WebCore::ResourceRequest::setCachePartition):
(WebCore::ResourceRequest::setDomainForCachePartition):
(WebCore::ResourceRequest::resourcePrioritiesEnabled):
(WebCore::ResourceRequest::isolatedCopy): Deleted.

  • platform/network/cf/ResourceResponse.h:

(WebCore::ResourceResponse::isolatedCopy): Deleted.

Source/WebKit2:

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::Entry):

Location:
trunk/Source
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r201602 r201603  
     12016-06-02  Brady Eidson  <beidson@apple.com>
     2
     3        Overhaul cross-thread use of ResourceRequest, ResourceResponse, and ResourceError.
     4        https://bugs.webkit.org/show_bug.cgi?id=158293
     5
     6        Reviewed by Darin Adler.
     7
     8        No new tests (Refactor, no behavior change).
     9
     10        * loader/WorkerThreadableLoader.cpp:
     11        (WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
     12        (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
     13        (WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
     14        (WebCore::WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck):
     15
     16        * loader/cache/MemoryCache.cpp:
     17        (WebCore::MemoryCache::removeRequestFromSessionCaches):
     18
     19        * platform/network/ResourceErrorBase.cpp:
     20        (WebCore::ResourceErrorBase::isolatedCopy):
     21        (WebCore::ResourceErrorBase::copy): Deleted.
     22        * platform/network/ResourceErrorBase.h:
     23
     24        * platform/network/ResourceRequestBase.cpp:
     25        (WebCore::ResourceRequestBase::isolatedCopy):
     26        (WebCore::ResourceRequestBase::setAsIsolatedCopy):
     27        (WebCore::ResourceRequestBase::adopt): Deleted.
     28       
     29        Made copyData private, and made "adopt" be "isolatedCopy".
     30        Rest of the changes are all re-indenting the file.
     31        * platform/network/ResourceRequestBase.h:
     32        (WebCore::ResourceRequestBase::responseContentDispositionEncodingFallbackArray):
     33        (WebCore::ResourceRequestBase::reportUploadProgress):
     34        (WebCore::ResourceRequestBase::setReportUploadProgress):
     35        (WebCore::ResourceRequestBase::reportLoadTiming):
     36        (WebCore::ResourceRequestBase::setReportLoadTiming):
     37        (WebCore::ResourceRequestBase::reportRawHeaders):
     38        (WebCore::ResourceRequestBase::setReportRawHeaders):
     39        (WebCore::ResourceRequestBase::hiddenFromInspector):
     40        (WebCore::ResourceRequestBase::setHiddenFromInspector):
     41        (WebCore::ResourceRequestBase::requester):
     42        (WebCore::ResourceRequestBase::setRequester):
     43        (WebCore::ResourceRequestBase::encodingRequiresPlatformData):
     44        (WebCore::ResourceRequestBase::ResourceRequestBase):
     45        (WebCore::ResourceRequestBase::platformCompare):
     46        (WebCore::operator==):
     47        (WebCore::operator!=):
     48
     49        * platform/network/ResourceResponseBase.cpp:
     50        (WebCore::ResourceResponseBase::isolatedCopy):
     51        (WebCore::ResourceResponseBase::adopt): Deleted.
     52        * platform/network/ResourceResponseBase.h:
     53
     54        * platform/network/cf/ResourceError.h:
     55        (WebCore::ResourceError::isolatedCopy): Deleted.
     56
     57        Removed platform-specific isolatedCopy, and re-indented the header:
     58        * platform/network/cf/ResourceRequest.h:
     59        (WebCore::ResourceRequest::ResourceRequest):
     60        (WebCore::ResourceRequest::encodingRequiresPlatformData):
     61        (WebCore::ResourceRequest::cachePartition):
     62        (WebCore::ResourceRequest::setCachePartition):
     63        (WebCore::ResourceRequest::setDomainForCachePartition):
     64        (WebCore::ResourceRequest::resourcePrioritiesEnabled):
     65        (WebCore::ResourceRequest::isolatedCopy): Deleted.
     66
     67        * platform/network/cf/ResourceResponse.h:
     68        (WebCore::ResourceResponse::isolatedCopy): Deleted.
     69
    1702016-06-02  Chris Dumez  <cdumez@apple.com>
    271
  • trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp

    r201602 r201603  
    9797    contentSecurityPolicyCopy->copyStateFrom(contentSecurityPolicy);
    9898
    99     m_loaderProxy.postTaskToLoader([this, requestData = request.copyData(), options = options.isolatedCopy(), contentSecurityPolicyCopy = WTFMove(contentSecurityPolicyCopy), outgoingReferrer = outgoingReferrer.isolatedCopy()](ScriptExecutionContext& context) mutable {
     99    m_loaderProxy.postTaskToLoader([this, request = request.isolatedCopy(), options = options.isolatedCopy(), contentSecurityPolicyCopy = WTFMove(contentSecurityPolicyCopy), outgoingReferrer = outgoingReferrer.isolatedCopy()](ScriptExecutionContext& context) mutable {
    100100        ASSERT(isMainThread());
    101101        Document& document = downcast<Document>(context);
    102102
    103         auto request = ResourceRequest::adopt(WTFMove(requestData));
    104         request->setHTTPReferrer(outgoingReferrer);
     103        request.setHTTPReferrer(outgoingReferrer);
    105104
    106105        // FIXME: If the a site requests a local resource, then this will return a non-zero value but the sync path
    107106        // will return a 0 value. Either this should return 0 or the other code path should do a callback with
    108107        // a failure.
    109         m_mainThreadLoader = DocumentThreadableLoader::create(document, *this, *request, *options, WTFMove(contentSecurityPolicyCopy));
     108        m_mainThreadLoader = DocumentThreadableLoader::create(document, *this, request, *options, WTFMove(contentSecurityPolicyCopy));
    110109        ASSERT(m_mainThreadLoader || m_loadingFinished);
    111110    });
     
    164163{
    165164    Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
    166     m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), identifier, responseData = response.copyData()] (ScriptExecutionContext& context) mutable {
    167         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
    168         auto response(ResourceResponse::adopt(WTFMove(responseData)));
    169         protectedWorkerClientWrapper->didReceiveResponse(identifier, *response);
     165    m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), identifier, response = response.isolatedCopy()] (ScriptExecutionContext& context) mutable {
     166        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
     167        protectedWorkerClientWrapper->didReceiveResponse(identifier, response);
    170168    }, m_taskMode);
    171169}
     
    195193{
    196194    m_loadingFinished = true;
    197     Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
    198     m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), error = error.copy()] (ScriptExecutionContext& context) mutable {
    199         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
    200         protectedWorkerClientWrapper->didFail(error);
     195    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = Ref<ThreadableLoaderClientWrapper>(*m_workerClientWrapper), error = error.isolatedCopy()] (ScriptExecutionContext& context) mutable {
     196        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
     197        workerClientWrapper->didFail(error);
    201198    }, m_taskMode);
    202199}
     
    205202{
    206203    m_loadingFinished = true;
    207     Ref<ThreadableLoaderClientWrapper> protectedWorkerClientWrapper = *m_workerClientWrapper;
    208     m_loaderProxy.postTaskForModeToWorkerGlobalScope([protectedWorkerClientWrapper = WTFMove(protectedWorkerClientWrapper), error = error.copy()] (ScriptExecutionContext& context) mutable {
    209         ASSERT_UNUSED(context, context.isWorkerGlobalScope());
    210         protectedWorkerClientWrapper->didFailAccessControlCheck(error);
     204    m_loaderProxy.postTaskForModeToWorkerGlobalScope([workerClientWrapper = Ref<ThreadableLoaderClientWrapper>(*m_workerClientWrapper), error = error.isolatedCopy()] (ScriptExecutionContext& context) mutable {
     205        ASSERT_UNUSED(context, context.isWorkerGlobalScope());
     206        workerClientWrapper->didFailAccessControlCheck(error);
    211207    }, m_taskMode);
    212208}
  • trunk/Source/WebCore/loader/cache/MemoryCache.cpp

    r200066 r201603  
    656656{
    657657    if (is<WorkerGlobalScope>(context)) {
    658         CrossThreadResourceRequestData* requestData = request.copyData().release();
    659         downcast<WorkerGlobalScope>(context).thread().workerLoaderProxy().postTaskToLoader([requestData] (ScriptExecutionContext& context) {
    660             auto request(ResourceRequest::adopt(std::unique_ptr<CrossThreadResourceRequestData>(requestData)));
    661             MemoryCache::removeRequestFromSessionCaches(context, *request);
     658        downcast<WorkerGlobalScope>(context).thread().workerLoaderProxy().postTaskToLoader([request = request.isolatedCopy()] (ScriptExecutionContext& context) {
     659            MemoryCache::removeRequestFromSessionCaches(context, request);
    662660        });
    663661        return;
  • trunk/Source/WebCore/platform/network/ResourceErrorBase.cpp

    r171600 r201603  
    3232const char* const errorDomainWebKitInternal = "WebKitInternal";
    3333
    34 ResourceError ResourceErrorBase::copy() const
     34ResourceError ResourceErrorBase::isolatedCopy() const
    3535{
    3636    lazyInit();
  • trunk/Source/WebCore/platform/network/ResourceErrorBase.h

    r194419 r201603  
    2424 */
    2525
    26 #ifndef ResourceErrorBase_h
    27 #define ResourceErrorBase_h
     26#pragma once
    2827
    2928#include "URL.h"
     
    3837class ResourceErrorBase {
    3938public:
    40     // Makes a deep copy. Useful for when you need to use a ResourceError on another thread.
    41     ResourceError copy() const;
     39    ResourceError isolatedCopy() const;
    4240
    4341    bool isNull() const { return m_isNull; }
     
    10098
    10199} // namespace WebCore
    102 
    103 #endif // ResourceErrorBase_h
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp

    r200493 r201603  
    5050}
    5151
    52 std::unique_ptr<ResourceRequest> ResourceRequestBase::adopt(std::unique_ptr<CrossThreadResourceRequestData> data)
    53 {
    54     auto request = std::make_unique<ResourceRequest>();
    55     request->setURL(data->url);
    56     request->setCachePolicy(data->cachePolicy);
    57     request->setTimeoutInterval(data->timeoutInterval);
    58     request->setFirstPartyForCookies(data->firstPartyForCookies);
    59     request->setHTTPMethod(data->httpMethod);
    60     request->setPriority(data->priority);
    61     request->setRequester(data->requester);
    62 
    63     request->updateResourceRequest();
    64     request->m_httpHeaderFields.adopt(WTFMove(data->httpHeaders));
     52ResourceRequest ResourceRequestBase::isolatedCopy() const
     53{
     54    ResourceRequest request;
     55    request.setAsIsolatedCopy(*this);
     56    return request;
     57}
     58
     59void ResourceRequestBase::setAsIsolatedCopy(const ResourceRequestBase& other)
     60{
     61    auto data = other.copyData();
     62
     63    setURL(data->url);
     64    setCachePolicy(data->cachePolicy);
     65    setTimeoutInterval(data->timeoutInterval);
     66    setFirstPartyForCookies(data->firstPartyForCookies);
     67    setHTTPMethod(data->httpMethod);
     68    setPriority(data->priority);
     69    setRequester(data->requester);
     70
     71    updateResourceRequest();
     72    m_httpHeaderFields.adopt(WTFMove(data->httpHeaders));
    6573
    6674    size_t encodingCount = data->responseContentDispositionEncodingFallbackArray.size();
     
    7583        }
    7684        ASSERT(encodingCount <= 3);
    77         request->setResponseContentDispositionEncodingFallbackArray(encoding1, encoding2, encoding3);
     85        setResponseContentDispositionEncodingFallbackArray(encoding1, encoding2, encoding3);
    7886    }
    79     request->setHTTPBody(data->httpBody.copyRef());
    80     request->setAllowCookies(data->allowCookies);
    81     request->doPlatformAdopt(WTFMove(data));
    82     return request;
     87    setHTTPBody(data->httpBody.copyRef());
     88    setAllowCookies(data->allowCookies);
     89
     90    const_cast<ResourceRequest&>(asResourceRequest()).doPlatformAdopt(WTFMove(data));
    8391}
    8492
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.h

    r200909 r201603  
    3636namespace WebCore {
    3737
    38     enum ResourceRequestCachePolicy {
    39         UseProtocolCachePolicy, // normal load
    40         ReloadIgnoringCacheData, // reload
    41         ReturnCacheDataElseLoad, // back/forward or encoding change - allow stale data
    42         ReturnCacheDataDontLoad  // results of a post - allow stale data and only use cache
    43     };
    44 
    45     enum HTTPBodyUpdatePolicy {
    46         DoNotUpdateHTTPBody,
    47         UpdateHTTPBody
    48     };
    49 
    50     class ResourceRequest;
    51     struct CrossThreadResourceRequestData;
    52 
    53     // Do not use this type directly.  Use ResourceRequest instead.
    54     class ResourceRequestBase {
    55         WTF_MAKE_FAST_ALLOCATED;
    56     public:
    57         WEBCORE_EXPORT static std::unique_ptr<ResourceRequest> adopt(std::unique_ptr<CrossThreadResourceRequestData>);
    58 
    59         // Gets a copy of the data suitable for passing to another thread.
    60         WEBCORE_EXPORT std::unique_ptr<CrossThreadResourceRequestData> copyData() const;
    61 
    62         WEBCORE_EXPORT bool isNull() const;
    63         WEBCORE_EXPORT bool isEmpty() const;
    64 
    65         WEBCORE_EXPORT const URL& url() const;
    66         WEBCORE_EXPORT void setURL(const URL& url);
    67 
    68         WEBCORE_EXPORT void removeCredentials();
    69 
    70         WEBCORE_EXPORT ResourceRequestCachePolicy cachePolicy() const;
    71         WEBCORE_EXPORT void setCachePolicy(ResourceRequestCachePolicy cachePolicy);
    72        
    73         double timeoutInterval() const; // May return 0 when using platform default.
    74         void setTimeoutInterval(double timeoutInterval);
    75        
    76         WEBCORE_EXPORT const URL& firstPartyForCookies() const;
    77         WEBCORE_EXPORT void setFirstPartyForCookies(const URL&);
    78        
    79         WEBCORE_EXPORT const String& httpMethod() const;
    80         WEBCORE_EXPORT void setHTTPMethod(const String& httpMethod);
    81        
    82         WEBCORE_EXPORT const HTTPHeaderMap& httpHeaderFields() const;
    83         WEBCORE_EXPORT void setHTTPHeaderFields(HTTPHeaderMap);
    84 
    85         WEBCORE_EXPORT String httpHeaderField(const String& name) const;
    86         WEBCORE_EXPORT String httpHeaderField(HTTPHeaderName) const;
    87         WEBCORE_EXPORT void setHTTPHeaderField(const String& name, const String& value);
    88         WEBCORE_EXPORT void setHTTPHeaderField(HTTPHeaderName, const String& value);
    89         void addHTTPHeaderField(HTTPHeaderName, const String& value);
    90         void addHTTPHeaderField(const String& name, const String& value);
    91 
    92         // Instead of passing a string literal to any of these functions, just use a HTTPHeaderName instead.
    93         template<size_t length> String httpHeaderField(const char (&)[length]) const = delete;
    94         template<size_t length> void setHTTPHeaderField(const char (&)[length], const String&) = delete;
    95         template<size_t length> void addHTTPHeaderField(const char (&)[length], const String&) = delete;
    96 
    97         WEBCORE_EXPORT void clearHTTPAuthorization();
    98 
    99         WEBCORE_EXPORT String httpContentType() const;
    100         WEBCORE_EXPORT void setHTTPContentType(const String&);
    101         void clearHTTPContentType();
    102 
    103         WEBCORE_EXPORT String httpReferrer() const;
    104         WEBCORE_EXPORT void setHTTPReferrer(const String&);
    105         WEBCORE_EXPORT void clearHTTPReferrer();
    106        
    107         String httpOrigin() const;
    108         void setHTTPOrigin(const String&);
    109         WEBCORE_EXPORT void clearHTTPOrigin();
    110 
    111         WEBCORE_EXPORT String httpUserAgent() const;
    112         WEBCORE_EXPORT void setHTTPUserAgent(const String&);
    113         void clearHTTPUserAgent();
    114 
    115         String httpAccept() const;
    116         void setHTTPAccept(const String&);
    117         void clearHTTPAccept();
    118 
    119         void clearHTTPAcceptEncoding();
    120 
    121         const Vector<String>& responseContentDispositionEncodingFallbackArray() const { return m_responseContentDispositionEncodingFallbackArray; }
    122         WEBCORE_EXPORT void setResponseContentDispositionEncodingFallbackArray(const String& encoding1, const String& encoding2 = String(), const String& encoding3 = String());
    123 
    124         WEBCORE_EXPORT FormData* httpBody() const;
    125         WEBCORE_EXPORT void setHTTPBody(RefPtr<FormData>&&);
    126 
    127         bool allowCookies() const;
    128         void setAllowCookies(bool allowCookies);
    129 
    130         WEBCORE_EXPORT ResourceLoadPriority priority() const;
    131         WEBCORE_EXPORT void setPriority(ResourceLoadPriority);
    132 
    133         WEBCORE_EXPORT bool isConditional() const;
    134         WEBCORE_EXPORT void makeUnconditional();
    135 
    136         // Whether the associated ResourceHandleClient needs to be notified of
    137         // upload progress made for that resource.
    138         bool reportUploadProgress() const { return m_reportUploadProgress; }
    139         void setReportUploadProgress(bool reportUploadProgress) { m_reportUploadProgress = reportUploadProgress; }
    140 
    141         // Whether the timing information should be collected for the request.
    142         bool reportLoadTiming() const { return m_reportLoadTiming; }
    143         void setReportLoadTiming(bool reportLoadTiming) { m_reportLoadTiming = reportLoadTiming; }
    144 
    145         // Whether actual headers being sent/received should be collected and reported for the request.
    146         bool reportRawHeaders() const { return m_reportRawHeaders; }
    147         void setReportRawHeaders(bool reportRawHeaders) { m_reportRawHeaders = reportRawHeaders; }
    148 
    149         // Whether this request should be hidden from the Inspector.
    150         bool hiddenFromInspector() const { return m_hiddenFromInspector; }
    151         void setHiddenFromInspector(bool hiddenFromInspector) { m_hiddenFromInspector = hiddenFromInspector; }
    152 
    153         enum class Requester { Unspecified, Main, XHR, Media };
    154         Requester requester() const { return m_requester; }
    155         void setRequester(Requester requester) { m_requester = requester; }
     38enum ResourceRequestCachePolicy {
     39    UseProtocolCachePolicy, // normal load
     40    ReloadIgnoringCacheData, // reload
     41    ReturnCacheDataElseLoad, // back/forward or encoding change - allow stale data
     42    ReturnCacheDataDontLoad  // results of a post - allow stale data and only use cache
     43};
     44
     45enum HTTPBodyUpdatePolicy {
     46    DoNotUpdateHTTPBody,
     47    UpdateHTTPBody
     48};
     49
     50class ResourceRequest;
     51struct CrossThreadResourceRequestData;
     52
     53// Do not use this type directly.  Use ResourceRequest instead.
     54class ResourceRequestBase {
     55    WTF_MAKE_FAST_ALLOCATED;
     56public:
     57    ResourceRequest isolatedCopy() const;
     58    WEBCORE_EXPORT void setAsIsolatedCopy(const ResourceRequestBase&);
     59
     60    WEBCORE_EXPORT bool isNull() const;
     61    WEBCORE_EXPORT bool isEmpty() const;
     62
     63    WEBCORE_EXPORT const URL& url() const;
     64    WEBCORE_EXPORT void setURL(const URL& url);
     65
     66    WEBCORE_EXPORT void removeCredentials();
     67
     68    WEBCORE_EXPORT ResourceRequestCachePolicy cachePolicy() const;
     69    WEBCORE_EXPORT void setCachePolicy(ResourceRequestCachePolicy cachePolicy);
     70   
     71    double timeoutInterval() const; // May return 0 when using platform default.
     72    void setTimeoutInterval(double timeoutInterval);
     73   
     74    WEBCORE_EXPORT const URL& firstPartyForCookies() const;
     75    WEBCORE_EXPORT void setFirstPartyForCookies(const URL&);
     76   
     77    WEBCORE_EXPORT const String& httpMethod() const;
     78    WEBCORE_EXPORT void setHTTPMethod(const String& httpMethod);
     79   
     80    WEBCORE_EXPORT const HTTPHeaderMap& httpHeaderFields() const;
     81    WEBCORE_EXPORT void setHTTPHeaderFields(HTTPHeaderMap);
     82
     83    WEBCORE_EXPORT String httpHeaderField(const String& name) const;
     84    WEBCORE_EXPORT String httpHeaderField(HTTPHeaderName) const;
     85    WEBCORE_EXPORT void setHTTPHeaderField(const String& name, const String& value);
     86    WEBCORE_EXPORT void setHTTPHeaderField(HTTPHeaderName, const String& value);
     87    void addHTTPHeaderField(HTTPHeaderName, const String& value);
     88    void addHTTPHeaderField(const String& name, const String& value);
     89
     90    // Instead of passing a string literal to any of these functions, just use a HTTPHeaderName instead.
     91    template<size_t length> String httpHeaderField(const char (&)[length]) const = delete;
     92    template<size_t length> void setHTTPHeaderField(const char (&)[length], const String&) = delete;
     93    template<size_t length> void addHTTPHeaderField(const char (&)[length], const String&) = delete;
     94
     95    WEBCORE_EXPORT void clearHTTPAuthorization();
     96
     97    WEBCORE_EXPORT String httpContentType() const;
     98    WEBCORE_EXPORT void setHTTPContentType(const String&);
     99    void clearHTTPContentType();
     100
     101    WEBCORE_EXPORT String httpReferrer() const;
     102    WEBCORE_EXPORT void setHTTPReferrer(const String&);
     103    WEBCORE_EXPORT void clearHTTPReferrer();
     104   
     105    String httpOrigin() const;
     106    void setHTTPOrigin(const String&);
     107    WEBCORE_EXPORT void clearHTTPOrigin();
     108
     109    WEBCORE_EXPORT String httpUserAgent() const;
     110    WEBCORE_EXPORT void setHTTPUserAgent(const String&);
     111    void clearHTTPUserAgent();
     112
     113    String httpAccept() const;
     114    void setHTTPAccept(const String&);
     115    void clearHTTPAccept();
     116
     117    void clearHTTPAcceptEncoding();
     118
     119    const Vector<String>& responseContentDispositionEncodingFallbackArray() const { return m_responseContentDispositionEncodingFallbackArray; }
     120    WEBCORE_EXPORT void setResponseContentDispositionEncodingFallbackArray(const String& encoding1, const String& encoding2 = String(), const String& encoding3 = String());
     121
     122    WEBCORE_EXPORT FormData* httpBody() const;
     123    WEBCORE_EXPORT void setHTTPBody(RefPtr<FormData>&&);
     124
     125    bool allowCookies() const;
     126    void setAllowCookies(bool allowCookies);
     127
     128    WEBCORE_EXPORT ResourceLoadPriority priority() const;
     129    WEBCORE_EXPORT void setPriority(ResourceLoadPriority);
     130
     131    WEBCORE_EXPORT bool isConditional() const;
     132    WEBCORE_EXPORT void makeUnconditional();
     133
     134    // Whether the associated ResourceHandleClient needs to be notified of
     135    // upload progress made for that resource.
     136    bool reportUploadProgress() const { return m_reportUploadProgress; }
     137    void setReportUploadProgress(bool reportUploadProgress) { m_reportUploadProgress = reportUploadProgress; }
     138
     139    // Whether the timing information should be collected for the request.
     140    bool reportLoadTiming() const { return m_reportLoadTiming; }
     141    void setReportLoadTiming(bool reportLoadTiming) { m_reportLoadTiming = reportLoadTiming; }
     142
     143    // Whether actual headers being sent/received should be collected and reported for the request.
     144    bool reportRawHeaders() const { return m_reportRawHeaders; }
     145    void setReportRawHeaders(bool reportRawHeaders) { m_reportRawHeaders = reportRawHeaders; }
     146
     147    // Whether this request should be hidden from the Inspector.
     148    bool hiddenFromInspector() const { return m_hiddenFromInspector; }
     149    void setHiddenFromInspector(bool hiddenFromInspector) { m_hiddenFromInspector = hiddenFromInspector; }
     150
     151    enum class Requester { Unspecified, Main, XHR, Media };
     152    Requester requester() const { return m_requester; }
     153    void setRequester(Requester requester) { m_requester = requester; }
    156154
    157155#if !PLATFORM(COCOA)
    158         bool encodingRequiresPlatformData() const { return true; }
    159 #endif
    160         template<class Encoder> void encodeWithoutPlatformData(Encoder&) const;
    161         template<class Decoder> bool decodeWithoutPlatformData(Decoder&);
    162 
    163         WEBCORE_EXPORT static double defaultTimeoutInterval(); // May return 0 when using platform default.
    164         WEBCORE_EXPORT static void setDefaultTimeoutInterval(double);
     156    bool encodingRequiresPlatformData() const { return true; }
     157#endif
     158    template<class Encoder> void encodeWithoutPlatformData(Encoder&) const;
     159    template<class Decoder> bool decodeWithoutPlatformData(Decoder&);
     160
     161    WEBCORE_EXPORT static double defaultTimeoutInterval(); // May return 0 when using platform default.
     162    WEBCORE_EXPORT static void setDefaultTimeoutInterval(double);
    165163
    166164#if PLATFORM(IOS)
    167         WEBCORE_EXPORT static bool defaultAllowCookies();
    168         WEBCORE_EXPORT static void setDefaultAllowCookies(bool);
    169 #endif
    170 
    171         static bool compare(const ResourceRequest&, const ResourceRequest&);
    172 
    173     protected:
    174         // Used when ResourceRequest is initialized from a platform representation of the request
    175         ResourceRequestBase()
    176             : m_platformRequestUpdated(true)
    177             , m_platformRequestBodyUpdated(true)
    178         {
    179         }
    180 
    181         ResourceRequestBase(const URL& url, ResourceRequestCachePolicy policy)
    182             : m_url(url)
    183             , m_timeoutInterval(s_defaultTimeoutInterval)
    184             , m_httpMethod(ASCIILiteral("GET"))
    185             , m_cachePolicy(policy)
     165    WEBCORE_EXPORT static bool defaultAllowCookies();
     166    WEBCORE_EXPORT static void setDefaultAllowCookies(bool);
     167#endif
     168
     169    static bool compare(const ResourceRequest&, const ResourceRequest&);
     170
     171protected:
     172    // Used when ResourceRequest is initialized from a platform representation of the request
     173    ResourceRequestBase()
     174        : m_platformRequestUpdated(true)
     175        , m_platformRequestBodyUpdated(true)
     176    {
     177    }
     178
     179    ResourceRequestBase(const URL& url, ResourceRequestCachePolicy policy)
     180        : m_url(url)
     181        , m_timeoutInterval(s_defaultTimeoutInterval)
     182        , m_httpMethod(ASCIILiteral("GET"))
     183        , m_cachePolicy(policy)
    186184#if !PLATFORM(IOS)
    187             , m_allowCookies(true)
     185        , m_allowCookies(true)
    188186#else
    189             , m_allowCookies(ResourceRequestBase::defaultAllowCookies())
    190 #endif
    191             , m_resourceRequestUpdated(true)
    192             , m_resourceRequestBodyUpdated(true)
    193         {
    194         }
    195 
    196         void updatePlatformRequest(HTTPBodyUpdatePolicy = DoNotUpdateHTTPBody) const;
    197         void updateResourceRequest(HTTPBodyUpdatePolicy = DoNotUpdateHTTPBody) const;
    198 
    199         // The ResourceRequest subclass may "shadow" this method to compare platform specific fields
    200         static bool platformCompare(const ResourceRequest&, const ResourceRequest&) { return true; }
    201 
    202         URL m_url;
    203         double m_timeoutInterval; // 0 is a magic value for platform default on platforms that have one.
    204         URL m_firstPartyForCookies;
    205         String m_httpMethod;
    206         HTTPHeaderMap m_httpHeaderFields;
    207         Vector<String> m_responseContentDispositionEncodingFallbackArray;
    208         RefPtr<FormData> m_httpBody;
    209         ResourceRequestCachePolicy m_cachePolicy { UseProtocolCachePolicy };
    210         bool m_allowCookies { false };
    211         mutable bool m_resourceRequestUpdated { false };
    212         mutable bool m_platformRequestUpdated { false };
    213         mutable bool m_resourceRequestBodyUpdated { false };
    214         mutable bool m_platformRequestBodyUpdated { false };
    215         bool m_reportUploadProgress { false };
    216         bool m_reportLoadTiming { false };
    217         bool m_reportRawHeaders { false };
    218         bool m_hiddenFromInspector { false };
    219         ResourceLoadPriority m_priority { ResourceLoadPriority::Low };
    220         Requester m_requester { Requester::Unspecified };
    221 
    222     private:
    223         const ResourceRequest& asResourceRequest() const;
    224 
    225         WEBCORE_EXPORT static double s_defaultTimeoutInterval;
     187        , m_allowCookies(ResourceRequestBase::defaultAllowCookies())
     188#endif
     189        , m_resourceRequestUpdated(true)
     190        , m_resourceRequestBodyUpdated(true)
     191    {
     192    }
     193
     194    void updatePlatformRequest(HTTPBodyUpdatePolicy = DoNotUpdateHTTPBody) const;
     195    void updateResourceRequest(HTTPBodyUpdatePolicy = DoNotUpdateHTTPBody) const;
     196
     197    // The ResourceRequest subclass may "shadow" this method to compare platform specific fields
     198    static bool platformCompare(const ResourceRequest&, const ResourceRequest&) { return true; }
     199
     200    URL m_url;
     201    double m_timeoutInterval; // 0 is a magic value for platform default on platforms that have one.
     202    URL m_firstPartyForCookies;
     203    String m_httpMethod;
     204    HTTPHeaderMap m_httpHeaderFields;
     205    Vector<String> m_responseContentDispositionEncodingFallbackArray;
     206    RefPtr<FormData> m_httpBody;
     207    ResourceRequestCachePolicy m_cachePolicy { UseProtocolCachePolicy };
     208    bool m_allowCookies { false };
     209    mutable bool m_resourceRequestUpdated { false };
     210    mutable bool m_platformRequestUpdated { false };
     211    mutable bool m_resourceRequestBodyUpdated { false };
     212    mutable bool m_platformRequestBodyUpdated { false };
     213    bool m_reportUploadProgress { false };
     214    bool m_reportLoadTiming { false };
     215    bool m_reportRawHeaders { false };
     216    bool m_hiddenFromInspector { false };
     217    ResourceLoadPriority m_priority { ResourceLoadPriority::Low };
     218    Requester m_requester { Requester::Unspecified };
     219
     220private:
     221    const ResourceRequest& asResourceRequest() const;
     222
     223    // Gets a copy of the data suitable for passing to another thread.
     224    std::unique_ptr<CrossThreadResourceRequestData> copyData() const;
     225
     226    WEBCORE_EXPORT static double s_defaultTimeoutInterval;
    226227#if PLATFORM(IOS)
    227         static bool s_defaultAllowCookies;
    228 #endif
    229     };
    230 
    231     bool equalIgnoringHeaderFields(const ResourceRequestBase&, const ResourceRequestBase&);
    232 
    233     inline bool operator==(const ResourceRequest& a, const ResourceRequest& b) { return ResourceRequestBase::compare(a, b); }
    234     inline bool operator!=(ResourceRequest& a, const ResourceRequest& b) { return !(a == b); }
    235 
    236     struct CrossThreadResourceRequestDataBase {
    237         URL url;
    238         ResourceRequestCachePolicy cachePolicy;
    239         double timeoutInterval;
    240         URL firstPartyForCookies;
    241         String httpMethod;
    242         std::unique_ptr<CrossThreadHTTPHeaderMapData> httpHeaders;
    243         Vector<String> responseContentDispositionEncodingFallbackArray;
    244         RefPtr<FormData> httpBody;
    245         bool allowCookies;
    246         ResourceLoadPriority priority;
    247         ResourceRequestBase::Requester requester;
    248     };
    249    
    250     WEBCORE_EXPORT unsigned initializeMaximumHTTPConnectionCountPerHost();
     228    static bool s_defaultAllowCookies;
     229#endif
     230};
     231
     232bool equalIgnoringHeaderFields(const ResourceRequestBase&, const ResourceRequestBase&);
     233
     234inline bool operator==(const ResourceRequest& a, const ResourceRequest& b) { return ResourceRequestBase::compare(a, b); }
     235inline bool operator!=(ResourceRequest& a, const ResourceRequest& b) { return !(a == b); }
     236
     237struct CrossThreadResourceRequestDataBase {
     238    URL url;
     239    ResourceRequestCachePolicy cachePolicy;
     240    double timeoutInterval;
     241    URL firstPartyForCookies;
     242    String httpMethod;
     243    std::unique_ptr<CrossThreadHTTPHeaderMapData> httpHeaders;
     244    Vector<String> responseContentDispositionEncodingFallbackArray;
     245    RefPtr<FormData> httpBody;
     246    bool allowCookies;
     247    ResourceLoadPriority priority;
     248    ResourceRequestBase::Requester requester;
     249};
     250
     251WEBCORE_EXPORT unsigned initializeMaximumHTTPConnectionCountPerHost();
    251252#if PLATFORM(IOS)
    252     WEBCORE_EXPORT void initializeHTTPConnectionSettingsOnStartup();
     253WEBCORE_EXPORT void initializeHTTPConnectionSettingsOnStartup();
    253254#endif
    254255
  • trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp

    r201324 r201603  
    6464}
    6565
    66 std::unique_ptr<ResourceResponse> ResourceResponseBase::adopt(std::unique_ptr<CrossThreadResourceResponseData> data)
    67 {
    68     auto response = std::make_unique<ResourceResponse>();
    69     response->setURL(data->m_url);
    70     response->setMimeType(data->m_mimeType);
    71     response->setExpectedContentLength(data->m_expectedContentLength);
    72     response->setTextEncodingName(data->m_textEncodingName);
    73 
    74     response->setHTTPStatusCode(data->m_httpStatusCode);
    75     response->setHTTPStatusText(data->m_httpStatusText);
    76     response->setHTTPVersion(data->m_httpVersion);
    77 
    78     response->lazyInit(AllFields);
    79     response->m_httpHeaderFields.adopt(WTFMove(data->m_httpHeaders));
    80     response->m_resourceLoadTiming = data->m_resourceLoadTiming;
    81     response->m_type = data->m_type;
    82     response->doPlatformAdopt(WTFMove(data));
     66ResourceResponse ResourceResponseBase::isolatedCopy() const
     67{
     68    ResourceResponse response;
     69    auto data = copyData();
     70
     71    response.setURL(data->m_url);
     72    response.setMimeType(data->m_mimeType);
     73    response.setExpectedContentLength(data->m_expectedContentLength);
     74    response.setTextEncodingName(data->m_textEncodingName);
     75
     76    response.setHTTPStatusCode(data->m_httpStatusCode);
     77    response.setHTTPStatusText(data->m_httpStatusText);
     78    response.setHTTPVersion(data->m_httpVersion);
     79
     80    response.lazyInit(AllFields);
     81    response.m_httpHeaderFields.adopt(WTFMove(data->m_httpHeaders));
     82    response.m_resourceLoadTiming = data->m_resourceLoadTiming;
     83    response.m_type = data->m_type;
     84    response.doPlatformAdopt(WTFMove(data));
     85
    8386    return response;
    8487}
  • trunk/Source/WebCore/platform/network/ResourceResponseBase.h

    r201324 r201603  
    2525 */
    2626
    27 #ifndef ResourceResponseBase_h
    28 #define ResourceResponseBase_h
     27#pragma once
    2928
    3029#include "CacheValidation.h"
     
    4847    WTF_MAKE_FAST_ALLOCATED;
    4948public:
    50     static std::unique_ptr<ResourceResponse> adopt(std::unique_ptr<CrossThreadResourceResponseData>);
    51 
    52     // Gets a copy of the data suitable for passing to another thread.
    53     std::unique_ptr<CrossThreadResourceResponseData> copyData() const;
     49    ResourceResponse isolatedCopy() const;
    5450
    5551    bool isNull() const { return m_isNull; }
     
    164160    void updateHeaderParsedState(HTTPHeaderName);
    165161
     162    // Gets a copy of the data suitable for passing to another thread.
     163    std::unique_ptr<CrossThreadResourceResponseData> copyData() const;
     164
    166165protected:
    167166    bool m_isNull;
     
    294293
    295294} // namespace WebCore
    296 
    297 #endif // ResourceResponseBase_h
  • trunk/Source/WebCore/platform/network/cf/ResourceError.h

    r201504 r201603  
    2424 */
    2525
    26 #ifndef ResourceError_h
    27 #define ResourceError_h
     26#pragma once
    2827
    2928#include "ResourceErrorBase.h"
     
    6160    WEBCORE_EXPORT CFErrorRef cfError() const;
    6261    WEBCORE_EXPORT operator CFErrorRef() const;
    63 
    64     ResourceError isolatedCopy() const { return copy(); }
    6562
    6663#if USE(CFNETWORK)
     
    103100
    104101} // namespace WebCore
    105 
    106 #endif // ResourceError_h
  • trunk/Source/WebCore/platform/network/cf/ResourceRequest.h

    r201504 r201603  
    3939namespace WebCore {
    4040
    41     class ResourceRequest : public ResourceRequestBase {
    42     public:
    43         ResourceRequest(const String& url)
    44             : ResourceRequestBase(URL(ParsedURLString, url), UseProtocolCachePolicy)
    45         {
    46         }
     41class ResourceRequest : public ResourceRequestBase {
     42public:
     43    ResourceRequest(const String& url)
     44        : ResourceRequestBase(URL(ParsedURLString, url), UseProtocolCachePolicy)
     45    {
     46    }
    4747
    48         ResourceRequest(const URL& url)
    49             : ResourceRequestBase(url, UseProtocolCachePolicy)
    50         {
    51         }
     48    ResourceRequest(const URL& url)
     49        : ResourceRequestBase(url, UseProtocolCachePolicy)
     50    {
     51    }
    5252
    53         ResourceRequest(const URL& url, const String& referrer, ResourceRequestCachePolicy policy = UseProtocolCachePolicy)
    54             : ResourceRequestBase(url, policy)
    55         {
    56             setHTTPReferrer(referrer);
    57         }
    58        
    59         ResourceRequest()
    60             : ResourceRequestBase(URL(), UseProtocolCachePolicy)
    61         {
    62         }
    63        
     53    ResourceRequest(const URL& url, const String& referrer, ResourceRequestCachePolicy policy = UseProtocolCachePolicy)
     54        : ResourceRequestBase(url, policy)
     55    {
     56        setHTTPReferrer(referrer);
     57    }
     58   
     59    ResourceRequest()
     60        : ResourceRequestBase(URL(), UseProtocolCachePolicy)
     61    {
     62    }
     63   
    6464#if USE(CFNETWORK)
    6565#if PLATFORM(COCOA)
    66         WEBCORE_EXPORT ResourceRequest(NSURLRequest *);
    67         void updateNSURLRequest();
    68         void clearOrUpdateNSURLRequest();
     66    WEBCORE_EXPORT ResourceRequest(NSURLRequest *);
     67    void updateNSURLRequest();
     68    void clearOrUpdateNSURLRequest();
    6969#endif
    7070
    71         ResourceRequest(CFURLRequestRef cfRequest)
    72             : ResourceRequestBase()
    73             , m_cfRequest(cfRequest)
    74         {
    75         }
     71    ResourceRequest(CFURLRequestRef cfRequest)
     72        : ResourceRequestBase()
     73        , m_cfRequest(cfRequest)
     74    {
     75    }
    7676#else
    77         ResourceRequest(NSURLRequest *nsRequest)
    78             : ResourceRequestBase()
    79             , m_nsRequest(nsRequest)
    80         {
    81         }
     77    ResourceRequest(NSURLRequest *nsRequest)
     78        : ResourceRequestBase()
     79        , m_nsRequest(nsRequest)
     80    {
     81    }
    8282#endif
    8383
    84         ResourceRequest isolatedCopy() const { return *ResourceRequest::adopt(copyData()); }
    85 
    86         WEBCORE_EXPORT void updateFromDelegatePreservingOldProperties(const ResourceRequest&);
     84    WEBCORE_EXPORT void updateFromDelegatePreservingOldProperties(const ResourceRequest&);
    8785
    8886#if PLATFORM(MAC)
    89         void applyWebArchiveHackForMail();
     87    void applyWebArchiveHackForMail();
    9088#endif
    9189#if PLATFORM(COCOA)
    9290#if USE(CFNETWORK)
    93         bool encodingRequiresPlatformData() const { return m_httpBody || m_cfRequest; }
     91    bool encodingRequiresPlatformData() const { return m_httpBody || m_cfRequest; }
    9492#else
    95         bool encodingRequiresPlatformData() const { return m_httpBody || m_nsRequest; }
     93    bool encodingRequiresPlatformData() const { return m_httpBody || m_nsRequest; }
    9694#endif
    97         WEBCORE_EXPORT NSURLRequest *nsURLRequest(HTTPBodyUpdatePolicy) const;
     95    WEBCORE_EXPORT NSURLRequest *nsURLRequest(HTTPBodyUpdatePolicy) const;
    9896
    99         WEBCORE_EXPORT static CFStringRef isUserInitiatedKey();
     97    WEBCORE_EXPORT static CFStringRef isUserInitiatedKey();
    10098#endif
    10199
    102100#if ENABLE(CACHE_PARTITIONING)
    103         WEBCORE_EXPORT static String partitionName(const String& domain);
    104         const String& cachePartition() const { return m_cachePartition.isNull() ? emptyString() : m_cachePartition; }
    105         void setCachePartition(const String& cachePartition)
    106         {
    107             ASSERT(cachePartition == partitionName(cachePartition));
    108             m_cachePartition = cachePartition;
    109         }
    110         void setDomainForCachePartition(const String& domain) { m_cachePartition = partitionName(domain); }
     101    WEBCORE_EXPORT static String partitionName(const String& domain);
     102    const String& cachePartition() const { return m_cachePartition.isNull() ? emptyString() : m_cachePartition; }
     103    void setCachePartition(const String& cachePartition)
     104    {
     105        ASSERT(cachePartition == partitionName(cachePartition));
     106        m_cachePartition = cachePartition;
     107    }
     108    void setDomainForCachePartition(const String& domain) { m_cachePartition = partitionName(domain); }
    111109#endif
    112110
    113111#if PLATFORM(COCOA) || USE(CFNETWORK)
    114         WEBCORE_EXPORT CFURLRequestRef cfURLRequest(HTTPBodyUpdatePolicy) const;
    115         void setStorageSession(CFURLStorageSessionRef);
     112    WEBCORE_EXPORT CFURLRequestRef cfURLRequest(HTTPBodyUpdatePolicy) const;
     113    void setStorageSession(CFURLStorageSessionRef);
    116114#endif
    117115
    118         WEBCORE_EXPORT static bool httpPipeliningEnabled();
    119         WEBCORE_EXPORT static void setHTTPPipeliningEnabled(bool);
     116    WEBCORE_EXPORT static bool httpPipeliningEnabled();
     117    WEBCORE_EXPORT static void setHTTPPipeliningEnabled(bool);
    120118
    121         static bool resourcePrioritiesEnabled();
     119    static bool resourcePrioritiesEnabled();
    122120
    123     private:
    124         friend class ResourceRequestBase;
     121private:
     122    friend class ResourceRequestBase;
    125123
    126         void doUpdatePlatformRequest();
    127         void doUpdateResourceRequest();
    128         void doUpdatePlatformHTTPBody();
    129         void doUpdateResourceHTTPBody();
     124    void doUpdatePlatformRequest();
     125    void doUpdateResourceRequest();
     126    void doUpdatePlatformHTTPBody();
     127    void doUpdateResourceHTTPBody();
    130128
    131         std::unique_ptr<CrossThreadResourceRequestData> doPlatformCopyData(std::unique_ptr<CrossThreadResourceRequestData>) const;
    132         void doPlatformAdopt(std::unique_ptr<CrossThreadResourceRequestData>);
     129    std::unique_ptr<CrossThreadResourceRequestData> doPlatformCopyData(std::unique_ptr<CrossThreadResourceRequestData>) const;
     130    void doPlatformAdopt(std::unique_ptr<CrossThreadResourceRequestData>);
    133131
    134132#if USE(CFNETWORK)
    135         RetainPtr<CFURLRequestRef> m_cfRequest;
     133    RetainPtr<CFURLRequestRef> m_cfRequest;
    136134#endif
    137135#if PLATFORM(COCOA)
    138         RetainPtr<NSURLRequest> m_nsRequest;
     136    RetainPtr<NSURLRequest> m_nsRequest;
    139137#endif
    140138#if ENABLE(CACHE_PARTITIONING)
    141         String m_cachePartition;
     139    String m_cachePartition;
    142140#endif
    143141
    144         static bool s_httpPipeliningEnabled;
    145     };
     142    static bool s_httpPipeliningEnabled;
     143};
    146144
    147     struct CrossThreadResourceRequestData : public CrossThreadResourceRequestDataBase {
     145struct CrossThreadResourceRequestData : public CrossThreadResourceRequestDataBase {
    148146#if ENABLE(CACHE_PARTITIONING)
    149         String m_cachePartition;
     147    String m_cachePartition;
    150148#endif
    151     };
     149};
    152150
    153     inline bool ResourceRequest::resourcePrioritiesEnabled()
    154     {
     151inline bool ResourceRequest::resourcePrioritiesEnabled()
     152{
    155153#if PLATFORM(MAC)
    156154    return true;
     
    160158    return false;
    161159#endif
    162     }
    163 
     160}
    164161
    165162} // namespace WebCore
  • trunk/Source/WebCore/platform/network/cf/ResourceResponse.h

    r201504 r201603  
    7373    }
    7474
    75     ResourceResponse isolatedCopy() const { return *ResourceResponse::adopt(copyData()); }
    76 
    7775    unsigned memoryUsage() const
    7876    {
  • trunk/Source/WebKit2/ChangeLog

    r201602 r201603  
     12016-06-02  Brady Eidson  <beidson@apple.com>
     2
     3        Overhaul cross-thread use of ResourceRequest, ResourceResponse, and ResourceError.
     4        https://bugs.webkit.org/show_bug.cgi?id=158293
     5
     6        Reviewed by Darin Adler.
     7
     8        * NetworkProcess/cache/NetworkCacheEntry.cpp:
     9        (WebKit::NetworkCache::Entry::Entry):
     10
    1112016-06-02  Chris Dumez  <cdumez@apple.com>
    212
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheEntry.cpp

    r197879 r201603  
    5555    , m_response(response)
    5656    , m_varyingRequestHeaders(varyingRequestHeaders)
    57     , m_redirectRequest(WebCore::ResourceRequest::adopt(redirectRequest.copyData())) // Don't include the underlying platform request object.
    5857{
    5958    ASSERT(m_key.type() == "resource");
    6059    // Redirect body is not needed even if exists.
     60
     61    m_redirectRequest = std::make_unique<WebCore::ResourceRequest>();
     62    m_redirectRequest->setAsIsolatedCopy(redirectRequest);
    6163    m_redirectRequest->setHTTPBody(nullptr);
    6264}
Note: See TracChangeset for help on using the changeset viewer.