2009-03-13 John Abd-El-Malek <jam@google.com>
[WebKit-https.git] / WebCore / platform / network / chromium / ResourceRequest.h
1 /*
2  * Copyright (C) 2003, 2006 Apple Computer, Inc.  All rights reserved.
3  * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
4  * Copyright (C) 2008 Google, Inc.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
26  */
27
28 #ifndef ResourceRequest_h
29 #define ResourceRequest_h
30
31 #include "CString.h"
32 #include "ResourceRequestBase.h"
33
34 namespace WebCore {
35
36     class Frame;
37
38     struct ResourceRequest : public ResourceRequestBase {
39     public:
40         enum TargetType {
41             TargetIsMainFrame,
42             TargetIsSubFrame,
43             TargetIsSubResource,
44             TargetIsObject,
45             TargetIsMedia
46         };
47
48         ResourceRequest(const String& url) 
49             : ResourceRequestBase(KURL(url), UseProtocolCachePolicy)
50             , m_requestorID(0)
51             , m_requestorProcessID(0)
52             , m_targetType(TargetIsSubResource)
53         {
54         }
55
56         ResourceRequest(const KURL& url, const CString& securityInfo) 
57             : ResourceRequestBase(url, UseProtocolCachePolicy)
58             , m_requestorID(0)
59             , m_requestorProcessID(0)
60             , m_targetType(TargetIsSubResource)
61             , m_securityInfo(securityInfo)
62         {
63         }
64
65         ResourceRequest(const KURL& url) 
66             : ResourceRequestBase(url, UseProtocolCachePolicy)
67             , m_requestorID(0)
68             , m_requestorProcessID(0)
69             , m_targetType(TargetIsSubResource)
70         {
71         }
72
73         ResourceRequest(const KURL& url, const String& referrer, ResourceRequestCachePolicy policy = UseProtocolCachePolicy) 
74             : ResourceRequestBase(url, policy)
75             , m_requestorID(0)
76             , m_requestorProcessID(0)
77             , m_targetType(TargetIsSubResource)
78         {
79             setHTTPReferrer(referrer);
80         }
81         
82         ResourceRequest()
83             : ResourceRequestBase(KURL(), UseProtocolCachePolicy)
84             , m_requestorID(0)
85             , m_requestorProcessID(0)
86             , m_targetType(TargetIsSubResource)
87         {
88         }
89
90         // Allows the request to be matched up with its requestor.
91         int requestorID() const { return m_requestorID; }
92         void setRequestorID(int requestorID) { m_requestorID = requestorID; }
93
94         // What this request is for.
95         TargetType targetType() const { return m_targetType; }
96         void setTargetType(TargetType type) { m_targetType = type; }
97
98         // The document's policy base url.
99         KURL policyURL() const { return m_policyURL; }
100         void setPolicyURL(const KURL& policyURL) { m_policyURL = policyURL; }
101
102         // The process id of the process from which this request originated. In
103         // the case of out-of-process plugins, this allows to link back the
104         // request to the plugin process (as it is processed through a render
105         // view process).
106         int requestorProcessID() const { return m_requestorProcessID; }
107         void setRequestorProcessID(int requestorProcessID) { m_requestorProcessID = requestorProcessID; }
108
109         // Opaque buffer that describes the security state (including SSL
110         // connection state) for the resource that should be reported when the
111         // resource has been loaded.  This is used to simulate secure
112         // connection for request (typically when showing error page, so the
113         // error page has the errors of the page that actually failed).  Empty
114         // string if not a secure connection.
115         CString securityInfo() const { return m_securityInfo; }
116         void setSecurityInfo(const CString& value) { m_securityInfo = value; }
117
118     private:
119         friend class ResourceRequestBase;
120
121         void doUpdatePlatformRequest() {}
122         void doUpdateResourceRequest() {}
123
124         int m_requestorID;
125         int m_requestorProcessID;
126         TargetType m_targetType;
127         CString m_securityInfo;
128         KURL m_policyURL;
129     };
130
131 } // namespace WebCore
132
133 #endif