1545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch/* 2545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Copyright (C) 2003, 2006 Apple Computer, Inc. All rights reserved. 3545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> 4545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Copyright (C) 2008 Google, Inc. 5545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 6545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Redistribution and use in source and binary forms, with or without 7545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * modification, are permitted provided that the following conditions 8545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * are met: 9545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 1. Redistributions of source code must retain the above copyright 10545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * notice, this list of conditions and the following disclaimer. 11545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 12545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * notice, this list of conditions and the following disclaimer in the 13545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * documentation and/or other materials provided with the distribution. 14545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * 1506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 1606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 19545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 23545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch */ 2706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 28545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#ifndef ResourceRequest_h 29545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#define ResourceRequest_h 30545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 31545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "ResourceRequestBase.h" 32545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 33545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochnamespace WebCore { 34545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 35545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch class Frame; 36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch class ResourceRequest : public ResourceRequestBase { 38545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch public: 3906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen ResourceRequest(const String& url) 40545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch : ResourceRequestBase(KURL(ParsedURLString, url), UseProtocolCachePolicy) 4106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_requestorID(0) 4206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_requestorProcessID(0) 4306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_appCacheHostID(0) 4406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_hasUserGesture(false) 4506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_downloadToFile(false) 4606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen { 4706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen } 4806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 4906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen ResourceRequest(const KURL& url) 5006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen : ResourceRequestBase(url, UseProtocolCachePolicy) 5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_requestorID(0) 52545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_requestorProcessID(0) 5306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_appCacheHostID(0) 5406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen , m_hasUserGesture(false) 55545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_downloadToFile(false) 56545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch { 57545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 58545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 59545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ResourceRequest(const KURL& url, const String& referrer, ResourceRequestCachePolicy policy = UseProtocolCachePolicy) 60545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch : ResourceRequestBase(url, policy) 61545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_requestorID(0) 62545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_requestorProcessID(0) 63545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_appCacheHostID(0) 64545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_hasUserGesture(false) 65545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_downloadToFile(false) 66545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch { 67545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch setHTTPReferrer(referrer); 68545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 69545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 70545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch ResourceRequest() 71545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch : ResourceRequestBase(KURL(), UseProtocolCachePolicy) 72545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_requestorID(0) 73545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_requestorProcessID(0) 74545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_appCacheHostID(0) 75545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_hasUserGesture(false) 76545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch , m_downloadToFile(false) 77545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch { 78545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch } 79545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 80545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // Allows the request to be matched up with its requestor. 81545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch int requestorID() const { return m_requestorID; } 82545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void setRequestorID(int requestorID) { m_requestorID = requestorID; } 83545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 84545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // The process id of the process from which this request originated. In 85545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // the case of out-of-process plugins, this allows to link back the 86545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // request to the plugin process (as it is processed through a render 87545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // view process). 88545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch int requestorProcessID() const { return m_requestorProcessID; } 89545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void setRequestorProcessID(int requestorProcessID) { m_requestorProcessID = requestorProcessID; } 90545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 91545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // Allows the request to be matched up with its app cache host. 92545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch int appCacheHostID() const { return m_appCacheHostID; } 93545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void setAppCacheHostID(int id) { m_appCacheHostID = id; } 94545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 95545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // True if request was user initiated. 96545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool hasUserGesture() const { return m_hasUserGesture; } 97545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void setHasUserGesture(bool hasUserGesture) { m_hasUserGesture = hasUserGesture; } 98dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 99545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch // True if request should be downloaded to file. 100545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool downloadToFile() const { return m_downloadToFile; } 101dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch void setDownloadToFile(bool downloadToFile) { m_downloadToFile = downloadToFile; } 102dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 103dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch private: 104545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch friend class ResourceRequestBase; 105545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 106dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch void doUpdatePlatformRequest() {} 107545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void doUpdateResourceRequest() {} 108545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 109545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch PassOwnPtr<CrossThreadResourceRequestData> doPlatformCopyData(PassOwnPtr<CrossThreadResourceRequestData>) const; 110545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch void doPlatformAdopt(PassOwnPtr<CrossThreadResourceRequestData>); 111545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 112dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch int m_requestorID; 113545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch int m_requestorProcessID; 114545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch int m_appCacheHostID; 115545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool m_hasUserGesture; 116545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool m_downloadToFile; 117545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch }; 118545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 119545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch struct CrossThreadResourceRequestData : public CrossThreadResourceRequestDataBase { 120545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch int m_requestorID; 121545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch int m_requestorProcessID; 122dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch int m_appCacheHostID; 123545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool m_hasUserGesture; 124545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch bool m_downloadToFile; 125545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch }; 126545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 127545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} // namespace WebCore 128545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 129545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif 130545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch