1bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)/* 2bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * Copyright (C) 2003, 2006 Apple Computer, Inc. All rights reserved. 3bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> 4bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * Copyright (C) 2009, 2012 Google Inc. All rights reserved. 5bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * 6bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 7bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * modification, are permitted provided that the following conditions 8bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * are met: 9bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 10bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 11bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 12bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 13bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 14bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * 15bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 16bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 19bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 23bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) */ 27bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 28bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#ifndef ResourceRequest_h 29bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#define ResourceRequest_h 30bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 31bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#include "platform/network/FormData.h" 32bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#include "platform/network/HTTPHeaderMap.h" 336f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch#include "platform/network/HTTPParsers.h" 34bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#include "platform/network/ResourceLoadPriority.h" 3551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "platform/weborigin/KURL.h" 3609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "platform/weborigin/Referrer.h" 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "public/platform/WebURLRequest.h" 38bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#include "wtf/OwnPtr.h" 39bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 41bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 42bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)enum ResourceRequestCachePolicy { 43bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) UseProtocolCachePolicy, // normal load 44bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ReloadIgnoringCacheData, // reload 45bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ReturnCacheDataElseLoad, // back/forward or encoding change - allow stale data 46f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) ReturnCacheDataDontLoad, // results of a post - allow stale data and only use cache 47f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) ReloadBypassingCache, // end-to-end reload 48bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)}; 49bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 50bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)struct CrossThreadResourceRequestData; 51bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 52bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)class PLATFORM_EXPORT ResourceRequest { 53bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) WTF_MAKE_FAST_ALLOCATED; 54bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)public: 55bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) class ExtraData : public RefCounted<ExtraData> { 56bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) public: 57bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) virtual ~ExtraData() { } 58bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) }; 59bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 60bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceRequest() 61bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 62bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) initialize(KURL(), UseProtocolCachePolicy); 63bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) } 64bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 65bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceRequest(const String& urlString) 66bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 67bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) initialize(KURL(ParsedURLString, urlString), UseProtocolCachePolicy); 68bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) } 69bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 70bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceRequest(const KURL& url) 71bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 72bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) initialize(url, UseProtocolCachePolicy); 73bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) } 74bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 7509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ResourceRequest(const KURL& url, const Referrer& referrer, ResourceRequestCachePolicy cachePolicy = UseProtocolCachePolicy) 76bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) { 77bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) initialize(url, cachePolicy); 78bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) setHTTPReferrer(referrer); 79bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) } 80bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 81bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) static PassOwnPtr<ResourceRequest> adopt(PassOwnPtr<CrossThreadResourceRequestData>); 82bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 83bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // Gets a copy of the data suitable for passing to another thread. 84bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) PassOwnPtr<CrossThreadResourceRequestData> copyData() const; 85bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 86bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool isNull() const; 87bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool isEmpty() const; 88bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 89bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) const KURL& url() const; 90bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setURL(const KURL& url); 91bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 92bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void removeCredentials(); 93bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 94bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceRequestCachePolicy cachePolicy() const; 95bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setCachePolicy(ResourceRequestCachePolicy cachePolicy); 96bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 97bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) double timeoutInterval() const; // May return 0 when using platform default. 98bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setTimeoutInterval(double timeoutInterval); 99bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 100bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) const KURL& firstPartyForCookies() const; 101bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setFirstPartyForCookies(const KURL& firstPartyForCookies); 102bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 103a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const AtomicString& httpMethod() const; 104a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) void setHTTPMethod(const AtomicString&); 105bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 106bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) const HTTPHeaderMap& httpHeaderFields() const; 107a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const AtomicString& httpHeaderField(const AtomicString& name) const; 108a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const AtomicString& httpHeaderField(const char* name) const; 109a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) void setHTTPHeaderField(const AtomicString& name, const AtomicString& value); 110a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) void setHTTPHeaderField(const char* name, const AtomicString& value); 111a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) void addHTTPHeaderField(const AtomicString& name, const AtomicString& value); 112bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void addHTTPHeaderFields(const HTTPHeaderMap& headerFields); 113bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void clearHTTPHeaderField(const AtomicString& name); 114bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 115bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void clearHTTPAuthorization(); 116bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 117a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const AtomicString& httpContentType() const { return httpHeaderField("Content-Type"); } 118a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) void setHTTPContentType(const AtomicString& httpContentType) { setHTTPHeaderField("Content-Type", httpContentType); } 119bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 120a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const AtomicString& httpReferrer() const { return httpHeaderField("Referer"); } 12109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ReferrerPolicy referrerPolicy() const { return m_referrerPolicy; } 12209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) void setHTTPReferrer(const Referrer& httpReferrer) { setHTTPHeaderField("Referer", httpReferrer.referrer); m_referrerPolicy = httpReferrer.referrerPolicy; } 123bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void clearHTTPReferrer(); 124bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 125a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const AtomicString& httpOrigin() const { return httpHeaderField("Origin"); } 126a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) void setHTTPOrigin(const AtomicString& httpOrigin) { setHTTPHeaderField("Origin", httpOrigin); } 127bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void clearHTTPOrigin(); 128197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void addHTTPOriginIfNeeded(const AtomicString& origin); 129bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 130a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const AtomicString& httpUserAgent() const { return httpHeaderField("User-Agent"); } 131a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) void setHTTPUserAgent(const AtomicString& httpUserAgent) { setHTTPHeaderField("User-Agent", httpUserAgent); } 132bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void clearHTTPUserAgent(); 133bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 134a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const AtomicString& httpAccept() const { return httpHeaderField("Accept"); } 135a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) void setHTTPAccept(const AtomicString& httpAccept) { setHTTPHeaderField("Accept", httpAccept); } 136bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 137bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) FormData* httpBody() const; 138bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setHTTPBody(PassRefPtr<FormData> httpBody); 139bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 140d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool allowStoredCredentials() const; 141d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void setAllowStoredCredentials(bool allowCredentials); 142bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 143bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceLoadPriority priority() const; 14407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch void setPriority(ResourceLoadPriority, int intraPriorityValue = 0); 145bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 146bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool isConditional() const; 147bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 148bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // Whether the associated ResourceHandleClient needs to be notified of 149bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // upload progress made for that resource. 150bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool reportUploadProgress() const { return m_reportUploadProgress; } 151bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setReportUploadProgress(bool reportUploadProgress) { m_reportUploadProgress = reportUploadProgress; } 152bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 153bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // Whether actual headers being sent/received should be collected and reported for the request. 154bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool reportRawHeaders() const { return m_reportRawHeaders; } 155bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setReportRawHeaders(bool reportRawHeaders) { m_reportRawHeaders = reportRawHeaders; } 156bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 157bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // Allows the request to be matched up with its requestor. 158bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int requestorID() const { return m_requestorID; } 159bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setRequestorID(int requestorID) { m_requestorID = requestorID; } 160bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 161bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // The process id of the process from which this request originated. In 162bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // the case of out-of-process plugins, this allows to link back the 163bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // request to the plugin process (as it is processed through a render 164bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // view process). 165bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int requestorProcessID() const { return m_requestorProcessID; } 166bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setRequestorProcessID(int requestorProcessID) { m_requestorProcessID = requestorProcessID; } 167bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 168bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // Allows the request to be matched up with its app cache host. 169bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int appCacheHostID() const { return m_appCacheHostID; } 170bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setAppCacheHostID(int id) { m_appCacheHostID = id; } 171bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 172bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // True if request was user initiated. 173bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool hasUserGesture() const { return m_hasUserGesture; } 174bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setHasUserGesture(bool hasUserGesture) { m_hasUserGesture = hasUserGesture; } 175bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 176bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // True if request should be downloaded to file. 177bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool downloadToFile() const { return m_downloadToFile; } 178bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setDownloadToFile(bool downloadToFile) { m_downloadToFile = downloadToFile; } 179bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 1807242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci // True if the request should not be handled by the ServiceWorker. 1817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool skipServiceWorker() const { return m_skipServiceWorker; } 1827242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setSkipServiceWorker(bool skipServiceWorker) { m_skipServiceWorker = skipServiceWorker; } 1837242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 184bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) // Extra data associated with this request. 185bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ExtraData* extraData() const { return m_extraData.get(); } 186bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void setExtraData(PassRefPtr<ExtraData> extraData) { m_extraData = extraData; } 187bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 188197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch blink::WebURLRequest::RequestContext requestContext() const { return m_requestContext; } 189197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setRequestContext(blink::WebURLRequest::RequestContext context) { m_requestContext = context; } 190197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 191197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch blink::WebURLRequest::FrameType frameType() const { return m_frameType; } 192197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void setFrameType(blink::WebURLRequest::FrameType frameType) { m_frameType = frameType; } 193bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 194197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool cacheControlContainsNoCache() const; 195197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool cacheControlContainsNoStore() const; 196197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool hasCacheValidatorFields() const; 1976f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch 198bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) static double defaultTimeoutInterval(); // May return 0 when using platform default. 199bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) static void setDefaultTimeoutInterval(double); 200bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 201bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) static bool compare(const ResourceRequest&, const ResourceRequest&); 202bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 203bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)private: 204bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) void initialize(const KURL& url, ResourceRequestCachePolicy cachePolicy); 205bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 206197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch const CacheControlHeader& cacheControlHeader() const; 207197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 208bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) KURL m_url; 209bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceRequestCachePolicy m_cachePolicy; 210bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) double m_timeoutInterval; // 0 is a magic value for platform default on platforms that have one. 211bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) KURL m_firstPartyForCookies; 212bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) AtomicString m_httpMethod; 213bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) HTTPHeaderMap m_httpHeaderFields; 214bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) RefPtr<FormData> m_httpBody; 215d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool m_allowStoredCredentials : 1; 216bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool m_reportUploadProgress : 1; 217bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool m_reportRawHeaders : 1; 218bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool m_hasUserGesture : 1; 219bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool m_downloadToFile : 1; 2207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool m_skipServiceWorker : 1; 221bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceLoadPriority m_priority; 22207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch int m_intraPriorityValue; 223bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int m_requestorID; 224bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int m_requestorProcessID; 225bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int m_appCacheHostID; 226bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) RefPtr<ExtraData> m_extraData; 227197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch blink::WebURLRequest::RequestContext m_requestContext; 228197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch blink::WebURLRequest::FrameType m_frameType; 22909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ReferrerPolicy m_referrerPolicy; 230197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 231197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch mutable CacheControlHeader m_cacheControlHeaderCache; 232bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 233bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) static double s_defaultTimeoutInterval; 234bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)}; 235bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 236bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)bool equalIgnoringHeaderFields(const ResourceRequest&, const ResourceRequest&); 237bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 238bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)inline bool operator==(const ResourceRequest& a, const ResourceRequest& b) { return ResourceRequest::compare(a, b); } 239bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)inline bool operator!=(ResourceRequest& a, const ResourceRequest& b) { return !(a == b); } 240bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 241bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)struct CrossThreadResourceRequestData { 242bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) WTF_MAKE_NONCOPYABLE(CrossThreadResourceRequestData); WTF_MAKE_FAST_ALLOCATED; 243bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)public: 244bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) CrossThreadResourceRequestData() { } 245bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) KURL m_url; 246bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 247bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceRequestCachePolicy m_cachePolicy; 248bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) double m_timeoutInterval; 249bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) KURL m_firstPartyForCookies; 250bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 251bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) String m_httpMethod; 252bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) OwnPtr<CrossThreadHTTPHeaderMapData> m_httpHeaders; 253bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) RefPtr<FormData> m_httpBody; 254d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool m_allowStoredCredentials; 25551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) bool m_reportUploadProgress; 256bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool m_hasUserGesture; 257bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) bool m_downloadToFile; 2587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci bool m_skipServiceWorker; 259bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) ResourceLoadPriority m_priority; 26007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch int m_intraPriorityValue; 261bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int m_requestorID; 262bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int m_requestorProcessID; 263bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) int m_appCacheHostID; 264197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch blink::WebURLRequest::RequestContext m_requestContext; 265197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch blink::WebURLRequest::FrameType m_frameType; 26609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ReferrerPolicy m_referrerPolicy; 267bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)}; 268bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 269bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)unsigned initializeMaximumHTTPConnectionCountPerHost(); 270bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 271c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 272bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) 273bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)#endif // ResourceRequest_h 274