18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. 3635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2009 Google Inc. All rights reserved. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef ResourceResponseBase_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define ResourceResponseBase_h 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "HTTPHeaderMap.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "KURL.h" 324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "ResourceLoadInfo.h" 33ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include "ResourceLoadTiming.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 35dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#include <wtf/PassOwnPtr.h> 36ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block#include <wtf/RefPtr.h> 37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if OS(SOLARIS) 392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include <sys/time.h> // For time_t structure. 402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass ResourceResponse; 45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectstruct CrossThreadResourceResponseData; 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Do not use this class directly, use the class ResponseResponse instead 48ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass ResourceResponseBase { 49ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_FAST_ALLOCATED; 50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectpublic: 51dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static PassOwnPtr<ResourceResponse> adopt(PassOwnPtr<CrossThreadResourceResponseData>); 52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project // Gets a copy of the data suitable for passing to another thread. 54dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block PassOwnPtr<CrossThreadResourceResponseData> copyData() const; 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isNull() const { return m_isNull; } 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isHTTP() const; 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const KURL& url() const; 608f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian void setURL(const KURL& url); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const String& mimeType() const; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setMimeType(const String& mimeType); 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project long long expectedContentLength() const; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setExpectedContentLength(long long expectedContentLength); 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const String& textEncodingName() const; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setTextEncodingName(const String& name); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // FIXME should compute this on the fly 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const String& suggestedFilename() const; 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setSuggestedFilename(const String&); 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int httpStatusCode() const; 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setHTTPStatusCode(int); 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const String& httpStatusText() const; 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setHTTPStatusText(const String&); 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 81635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project String httpHeaderField(const AtomicString& name) const; 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block String httpHeaderField(const char* name) const; 83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void setHTTPHeaderField(const AtomicString& name, const String& value); 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const HTTPHeaderMap& httpHeaderFields() const; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isMultipart() const { return mimeType() == "multipart/x-mixed-replace"; } 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isAttachment() const; 895f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 905f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // FIXME: These are used by PluginStream on some platforms. Calculations may differ from just returning plain Last-odified header. 915f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // Leaving it for now but this should go away in favor of generic solution. 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void setLastModifiedDate(time_t); 935f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian time_t lastModifiedDate() const; 945f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 955f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // These functions return parsed values of the corresponding response headers. 965f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian // NaN means that the header was not present or had invalid value. 975f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian bool cacheControlContainsNoCache() const; 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool cacheControlContainsNoStore() const; 995f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian bool cacheControlContainsMustRevalidate() const; 1002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch bool hasCacheValidatorFields() const; 1015f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian double cacheControlMaxAge() const; 1025f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian double date() const; 1035f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian double age() const; 1045f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian double expires() const; 1055f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian double lastModified() const; 106635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 107e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke unsigned connectionID() const; 108e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke void setConnectionID(unsigned); 109e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 110967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch bool connectionReused() const; 111967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch void setConnectionReused(bool); 112967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 113e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke bool wasCached() const; 114e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke void setWasCached(bool); 115e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 116ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block ResourceLoadTiming* resourceLoadTiming() const; 117ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block void setResourceLoadTiming(PassRefPtr<ResourceLoadTiming>); 118ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block 1194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang PassRefPtr<ResourceLoadInfo> resourceLoadInfo() const; 1204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang void setResourceLoadInfo(PassRefPtr<ResourceLoadInfo>); 121a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 1228f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // The ResourceResponse subclass may "shadow" this method to provide platform-specific memory usage information 1238f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian unsigned memoryUsage() const 1248f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian { 1258f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // average size, mostly due to URL and Header Map strings 1268f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian return 1280; 1278f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian } 1288f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 129a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch static bool compare(const ResourceResponse&, const ResourceResponse&); 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 131635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectprotected: 1322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch enum InitLevel { 1332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch Uninitialized, 1342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch CommonFieldsOnly, 1352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch AllFields 1362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch }; 1372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1385f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ResourceResponseBase(); 1395f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ResourceResponseBase(const KURL& url, const String& mimeType, long long expectedLength, const String& textEncodingName, const String& filename); 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void lazyInit(InitLevel) const; 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // The ResourceResponse subclass may "shadow" this method to lazily initialize platform specific fields 1442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void platformLazyInit(InitLevel) { } 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // The ResourceResponse subclass may "shadow" this method to compare platform specific fields 147635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project static bool platformCompare(const ResourceResponse&, const ResourceResponse&) { return true; } 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project KURL m_url; 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String m_mimeType; 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project long long m_expectedContentLength; 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String m_textEncodingName; 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String m_suggestedFilename; 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_httpStatusCode; 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String m_httpStatusText; 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project HTTPHeaderMap m_httpHeaderFields; 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project time_t m_lastModifiedDate; 158967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch bool m_wasCached : 1; 159e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke unsigned m_connectionID; 160967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch bool m_connectionReused : 1; 161ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block RefPtr<ResourceLoadTiming> m_resourceLoadTiming; 1624576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang RefPtr<ResourceLoadInfo> m_resourceLoadInfo; 163635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 1645f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian bool m_isNull : 1; 1655f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 166635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectprivate: 167a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch const ResourceResponse& asResourceResponse() const; 168635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project void parseCacheControlDirectives() const; 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1705f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable bool m_haveParsedCacheControlHeader : 1; 1715f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable bool m_haveParsedAgeHeader : 1; 1725f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable bool m_haveParsedDateHeader : 1; 1735f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable bool m_haveParsedExpiresHeader : 1; 1745f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable bool m_haveParsedLastModifiedHeader : 1; 1755f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 176635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project mutable bool m_cacheControlContainsNoCache : 1; 1770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch mutable bool m_cacheControlContainsNoStore : 1; 1785f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable bool m_cacheControlContainsMustRevalidate : 1; 1795f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable double m_cacheControlMaxAge; 1805f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1815f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable double m_age; 1825f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable double m_date; 1835f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable double m_expires; 1845f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian mutable double m_lastModified; 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectinline bool operator==(const ResourceResponse& a, const ResourceResponse& b) { return ResourceResponseBase::compare(a, b); } 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectinline bool operator!=(const ResourceResponse& a, const ResourceResponse& b) { return !(a == b); } 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 190ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochstruct CrossThreadResourceResponseDataBase { 191ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(CrossThreadResourceResponseDataBase); 192ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochpublic: 193ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch CrossThreadResourceResponseDataBase() { } 194635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project KURL m_url; 195635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project String m_mimeType; 196635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project long long m_expectedContentLength; 197635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project String m_textEncodingName; 198635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project String m_suggestedFilename; 199635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project int m_httpStatusCode; 200635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project String m_httpStatusText; 201635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project OwnPtr<CrossThreadHTTPHeaderMapData> m_httpHeaders; 202635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project time_t m_lastModifiedDate; 203ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block RefPtr<ResourceLoadTiming> m_resourceLoadTiming; 204635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project}; 205635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ResourceResponseBase_h 209