TEST(HTTPParsersTest, ParseCacheControl) { CacheControlHeader header; header = parseCacheControlDirectives("no-cache", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_TRUE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); header = parseCacheControlDirectives("no-cache no-store", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_TRUE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); header = parseCacheControlDirectives("no-store must-revalidate", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_FALSE(header.containsNoCache); EXPECT_TRUE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); header = parseCacheControlDirectives("max-age=0", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_FALSE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_EQ(0.0, header.maxAge); header = parseCacheControlDirectives("max-age", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_FALSE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); header = parseCacheControlDirectives("max-age=0 no-cache", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_FALSE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_EQ(0.0, header.maxAge); header = parseCacheControlDirectives("no-cache=foo", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_FALSE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); header = parseCacheControlDirectives("nonsense", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_FALSE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); header = parseCacheControlDirectives("\rno-cache\n\t\v\0\b", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_TRUE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); header = parseCacheControlDirectives(" no-cache ", AtomicString()); EXPECT_TRUE(header.parsed); EXPECT_TRUE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); header = parseCacheControlDirectives(AtomicString(), "no-cache"); EXPECT_TRUE(header.parsed); EXPECT_TRUE(header.containsNoCache); EXPECT_FALSE(header.containsNoStore); EXPECT_FALSE(header.containsMustRevalidate); EXPECT_TRUE(std::isnan(header.maxAge)); }
const CacheControlHeader& ResourceRequest::cacheControlHeader() const { if (!m_cacheControlHeaderCache.parsed) m_cacheControlHeaderCache = parseCacheControlDirectives(m_httpHeaderFields.get(HTTPNames::Cache_Control), m_httpHeaderFields.get(HTTPNames::Pragma)); return m_cacheControlHeaderCache; }
double ResourceResponse::cacheControlStaleWhileRevalidate() { if (!m_cacheControlHeader.parsed) m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.get(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); return m_cacheControlHeader.staleWhileRevalidate; }
double ResourceResponse::cacheControlMaxAge() { if (!m_cacheControlHeader.parsed) m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.get(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); return m_cacheControlHeader.maxAge; }
bool ResourceResponse::cacheControlContainsMustRevalidate() { if (!m_cacheControlHeader.parsed) m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.get(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); return m_cacheControlHeader.containsMustRevalidate; }
const CacheControlHeader& ResourceRequest::cacheControlHeader() const { if (!m_cacheControlHeaderCache.parsed) m_cacheControlHeaderCache = parseCacheControlDirectives(m_httpHeaderFields.get(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); return m_cacheControlHeaderCache; }
bool ResourceRequest::cacheControlContainsNoStore() { if (!m_cacheControlHeader.parsed) m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.get(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); return m_cacheControlHeader.containsNoStore; }