Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(319)

Side by Side Diff: Source/platform/network/ResourceResponse.h

Issue 229053004: Allow cache reuse of some requests with Cache-Control headers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * Copyright (C) 2009 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 12 matching lines...) Expand all
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 25 */
26 26
27 #ifndef ResourceResponse_h 27 #ifndef ResourceResponse_h
28 #define ResourceResponse_h 28 #define ResourceResponse_h
29 29
30 #include "platform/PlatformExport.h" 30 #include "platform/PlatformExport.h"
31 #include "platform/blob/BlobData.h" 31 #include "platform/blob/BlobData.h"
32 #include "platform/network/HTTPHeaderMap.h" 32 #include "platform/network/HTTPHeaderMap.h"
33 #include "platform/network/HTTPParsers.h"
33 #include "platform/network/ResourceLoadInfo.h" 34 #include "platform/network/ResourceLoadInfo.h"
34 #include "platform/network/ResourceLoadTiming.h" 35 #include "platform/network/ResourceLoadTiming.h"
35 #include "platform/weborigin/KURL.h" 36 #include "platform/weborigin/KURL.h"
36 #include "wtf/PassOwnPtr.h" 37 #include "wtf/PassOwnPtr.h"
37 #include "wtf/RefPtr.h" 38 #include "wtf/RefPtr.h"
38 #include "wtf/text/CString.h" 39 #include "wtf/text/CString.h"
39 40
40 namespace WebCore { 41 namespace WebCore {
41 42
42 struct CrossThreadResourceResponseData; 43 struct CrossThreadResourceResponseData;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 97
97 bool isAttachment() const; 98 bool isAttachment() const;
98 99
99 // FIXME: These are used by PluginStream on some platforms. Calculations may differ from just returning plain Last-Modified header. 100 // FIXME: These are used by PluginStream on some platforms. Calculations may differ from just returning plain Last-Modified header.
100 // Leaving it for now but this should go away in favor of generic solution. 101 // Leaving it for now but this should go away in favor of generic solution.
101 void setLastModifiedDate(time_t); 102 void setLastModifiedDate(time_t);
102 time_t lastModifiedDate() const; 103 time_t lastModifiedDate() const;
103 104
104 // These functions return parsed values of the corresponding response header s. 105 // These functions return parsed values of the corresponding response header s.
105 // NaN means that the header was not present or had invalid value. 106 // NaN means that the header was not present or had invalid value.
106 bool cacheControlContainsNoCache() const; 107 bool cacheControlContainsNoCache();
107 bool cacheControlContainsNoStore() const; 108 bool cacheControlContainsNoStore();
108 bool cacheControlContainsMustRevalidate() const; 109 bool cacheControlContainsMustRevalidate();
109 bool hasCacheValidatorFields() const; 110 bool hasCacheValidatorFields() const;
110 double cacheControlMaxAge() const; 111 double cacheControlMaxAge();
111 double date() const; 112 double date() const;
112 double age() const; 113 double age() const;
113 double expires() const; 114 double expires() const;
114 double lastModified() const; 115 double lastModified() const;
115 116
116 unsigned connectionID() const; 117 unsigned connectionID() const;
117 void setConnectionID(unsigned); 118 void setConnectionID(unsigned);
118 119
119 bool connectionReused() const; 120 bool connectionReused() const;
120 void setConnectionReused(bool); 121 void setConnectionReused(bool);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 // The ResourceResponse subclass may "shadow" this method to provide platfor m-specific memory usage information 181 // The ResourceResponse subclass may "shadow" this method to provide platfor m-specific memory usage information
181 unsigned memoryUsage() const 182 unsigned memoryUsage() const
182 { 183 {
183 // average size, mostly due to URL and Header Map strings 184 // average size, mostly due to URL and Header Map strings
184 return 1280; 185 return 1280;
185 } 186 }
186 187
187 static bool compare(const ResourceResponse&, const ResourceResponse&); 188 static bool compare(const ResourceResponse&, const ResourceResponse&);
188 189
189 private: 190 private:
190 void parseCacheControlDirectives() const;
191 void updateHeaderParsedState(const AtomicString& name); 191 void updateHeaderParsedState(const AtomicString& name);
192 192
193 KURL m_url; 193 KURL m_url;
194 AtomicString m_mimeType; 194 AtomicString m_mimeType;
195 long long m_expectedContentLength; 195 long long m_expectedContentLength;
196 AtomicString m_textEncodingName; 196 AtomicString m_textEncodingName;
197 String m_suggestedFilename; 197 String m_suggestedFilename;
198 int m_httpStatusCode; 198 int m_httpStatusCode;
199 AtomicString m_httpStatusText; 199 AtomicString m_httpStatusText;
200 HTTPHeaderMap m_httpHeaderFields; 200 HTTPHeaderMap m_httpHeaderFields;
201 time_t m_lastModifiedDate; 201 time_t m_lastModifiedDate;
202 bool m_wasCached : 1; 202 bool m_wasCached : 1;
203 unsigned m_connectionID; 203 unsigned m_connectionID;
204 bool m_connectionReused : 1; 204 bool m_connectionReused : 1;
205 RefPtr<ResourceLoadTiming> m_resourceLoadTiming; 205 RefPtr<ResourceLoadTiming> m_resourceLoadTiming;
206 RefPtr<ResourceLoadInfo> m_resourceLoadInfo; 206 RefPtr<ResourceLoadInfo> m_resourceLoadInfo;
207 207
208 bool m_isNull : 1; 208 bool m_isNull : 1;
209 209
210 mutable bool m_haveParsedCacheControlHeader : 1; 210 CacheControlHeader m_cacheControlHeader;
211
211 mutable bool m_haveParsedAgeHeader : 1; 212 mutable bool m_haveParsedAgeHeader : 1;
212 mutable bool m_haveParsedDateHeader : 1; 213 mutable bool m_haveParsedDateHeader : 1;
213 mutable bool m_haveParsedExpiresHeader : 1; 214 mutable bool m_haveParsedExpiresHeader : 1;
214 mutable bool m_haveParsedLastModifiedHeader : 1; 215 mutable bool m_haveParsedLastModifiedHeader : 1;
215 216
216 mutable bool m_cacheControlContainsNoCache : 1;
217 mutable bool m_cacheControlContainsNoStore : 1;
218 mutable bool m_cacheControlContainsMustRevalidate : 1;
219 mutable double m_cacheControlMaxAge;
220
221 mutable double m_age; 217 mutable double m_age;
222 mutable double m_date; 218 mutable double m_date;
223 mutable double m_expires; 219 mutable double m_expires;
224 mutable double m_lastModified; 220 mutable double m_lastModified;
225 221
226 // An opaque value that contains some information regarding the security of 222 // An opaque value that contains some information regarding the security of
227 // the connection for this request, such as SSL connection info (empty 223 // the connection for this request, such as SSL connection info (empty
228 // string if not over HTTPS). 224 // string if not over HTTPS).
229 CString m_securityInfo; 225 CString m_securityInfo;
230 226
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 double m_responseTime; 301 double m_responseTime;
306 String m_remoteIPAddress; 302 String m_remoteIPAddress;
307 unsigned short m_remotePort; 303 unsigned short m_remotePort;
308 String m_downloadedFilePath; 304 String m_downloadedFilePath;
309 RefPtr<BlobDataHandle> m_downloadedFileHandle; 305 RefPtr<BlobDataHandle> m_downloadedFileHandle;
310 }; 306 };
311 307
312 } // namespace WebCore 308 } // namespace WebCore
313 309
314 #endif // ResourceResponse_h 310 #endif // ResourceResponse_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698