#include <wtf/PassOwnPtr.h>
#include <wtf/RefPtr.h>
+#if OS(SOLARIS)
+#include <sys/time.h> // For time_t structure.
+#endif
+
namespace WebCore {
class ResourceResponse;
struct CrossThreadResourceResponseData;
// Do not use this class directly, use the class ResponseResponse instead
-class ResourceResponseBase : public FastAllocBase {
+class ResourceResponseBase {
+ WTF_MAKE_FAST_ALLOCATED;
public:
static PassOwnPtr<ResourceResponse> adopt(PassOwnPtr<CrossThreadResourceResponseData>);
bool cacheControlContainsNoCache() const;
bool cacheControlContainsNoStore() const;
bool cacheControlContainsMustRevalidate() const;
+ bool hasCacheValidatorFields() const;
double cacheControlMaxAge() const;
double date() const;
double age() const;
static bool compare(const ResourceResponse&, const ResourceResponse&);
protected:
+ enum InitLevel {
+ Uninitialized,
+ CommonFieldsOnly,
+ AllFields
+ };
+
ResourceResponseBase();
ResourceResponseBase(const KURL& url, const String& mimeType, long long expectedLength, const String& textEncodingName, const String& filename);
- void lazyInit() const;
+ void lazyInit(InitLevel) const;
// The ResourceResponse subclass may "shadow" this method to lazily initialize platform specific fields
- void platformLazyInit() { }
+ void platformLazyInit(InitLevel) { }
// The ResourceResponse subclass may "shadow" this method to compare platform specific fields
static bool platformCompare(const ResourceResponse&, const ResourceResponse&) { return true; }
inline bool operator==(const ResourceResponse& a, const ResourceResponse& b) { return ResourceResponseBase::compare(a, b); }
inline bool operator!=(const ResourceResponse& a, const ResourceResponse& b) { return !(a == b); }
-struct CrossThreadResourceResponseDataBase : Noncopyable {
+struct CrossThreadResourceResponseDataBase {
+ WTF_MAKE_NONCOPYABLE(CrossThreadResourceResponseDataBase);
+public:
+ CrossThreadResourceResponseDataBase() { }
KURL m_url;
String m_mimeType;
long long m_expectedContentLength;