Index: Source/platform/network/ResourceRequest.cpp |
diff --git a/Source/platform/network/ResourceRequest.cpp b/Source/platform/network/ResourceRequest.cpp |
index b3d16b8b4bf1185f3f46e15fa50080c3bf4cf033..2c46ef15cf671772fccf1162e4eb35ce9d132d3d 100644 |
--- a/Source/platform/network/ResourceRequest.cpp |
+++ b/Source/platform/network/ResourceRequest.cpp |
@@ -314,8 +314,41 @@ bool ResourceRequest::isConditional() const |
|| m_httpHeaderFields.contains("If-Modified-Since") |
|| m_httpHeaderFields.contains("If-None-Match") |
|| m_httpHeaderFields.contains("If-Range") |
- || m_httpHeaderFields.contains("If-Unmodified-Since") |
- || m_httpHeaderFields.contains("Cache-Control")); |
+ || m_httpHeaderFields.contains("If-Unmodified-Since")); |
+} |
+ |
+ |
+static const AtomicString& cacheControlHeaderString() |
+{ |
+ DEFINE_STATIC_LOCAL(const AtomicString, cacheControlHeader, ("cache-control", AtomicString::ConstructFromLiteral)); |
+ return cacheControlHeader; |
+} |
+ |
+static const AtomicString& pragmaHeaderString() |
+{ |
+ DEFINE_STATIC_LOCAL(const AtomicString, pragmaHeader, ("pragma", AtomicString::ConstructFromLiteral)); |
+ return pragmaHeader; |
+} |
+ |
+bool ResourceRequest::cacheControlContainsNoCache() |
+{ |
+ if (!m_cacheControlHeader.parsed) |
+ m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.get(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); |
+ return m_cacheControlHeader.containsNoCache; |
+} |
+ |
+bool ResourceRequest::cacheControlContainsNoStore() |
+{ |
+ if (!m_cacheControlHeader.parsed) |
+ m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.get(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); |
+ return m_cacheControlHeader.containsNoStore; |
+} |
+ |
+bool ResourceRequest::hasCacheValidatorFields() |
+{ |
+ DEFINE_STATIC_LOCAL(const AtomicString, lastModifiedHeader, ("last-modified", AtomicString::ConstructFromLiteral)); |
+ DEFINE_STATIC_LOCAL(const AtomicString, eTagHeader, ("etag", AtomicString::ConstructFromLiteral)); |
+ return !m_httpHeaderFields.get(lastModifiedHeader).isEmpty() || !m_httpHeaderFields.get(eTagHeader).isEmpty(); |
} |
double ResourceRequest::defaultTimeoutInterval() |