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

Unified Diff: net/http/http_response_headers.cc

Issue 391763002: Initial implementation of Chrome-Freshness header. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rename header and move GetStaleWhileRevalidateValue Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« net/http/http_response_headers.h ('K') | « net/http/http_response_headers.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_response_headers.cc
diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc
index b7ef98a5980633485902bdf522dbb77e2a5c0f02..1a2f2531ec0c14eff3afcc92200c36eef76fcbd2 100644
--- a/net/http/http_response_headers.cc
+++ b/net/http/http_response_headers.cc
@@ -1092,29 +1092,7 @@ TimeDelta HttpResponseHeaders::GetCurrentAge(const Time& request_time,
}
bool HttpResponseHeaders::GetMaxAgeValue(TimeDelta* result) const {
- std::string name = "cache-control";
- std::string value;
-
- const char kMaxAgePrefix[] = "max-age=";
- const size_t kMaxAgePrefixLen = arraysize(kMaxAgePrefix) - 1;
-
- void* iter = NULL;
- while (EnumerateHeader(&iter, name, &value)) {
- if (value.size() > kMaxAgePrefixLen) {
- if (LowerCaseEqualsASCII(value.begin(),
- value.begin() + kMaxAgePrefixLen,
- kMaxAgePrefix)) {
- int64 seconds;
- base::StringToInt64(StringPiece(value.begin() + kMaxAgePrefixLen,
- value.end()),
- &seconds);
- *result = TimeDelta::FromSeconds(seconds);
- return true;
- }
- }
- }
-
- return false;
+ return GetCacheControlDirective("max-age", result);
}
bool HttpResponseHeaders::GetAgeValue(TimeDelta* result) const {
@@ -1140,6 +1118,37 @@ bool HttpResponseHeaders::GetExpiresValue(Time* result) const {
return GetTimeValuedHeader("Expires", result);
}
+bool HttpResponseHeaders::GetStaleWhileRevalidateValue(
rvargas (doing something else) 2014/07/28 19:24:00 Please add HttpResponseHeaders unit tests to make
Adam Rice 2014/07/29 17:04:45 Done. I didn't add as many tests as for max-age as
rvargas (doing something else) 2014/07/29 19:21:22 The tests look great, thanks.
+ TimeDelta* result) const {
+ return GetCacheControlDirective("stale-while-revalidate", result);
+}
+
+bool HttpResponseHeaders::GetCacheControlDirective(const StringPiece& directive,
+ TimeDelta* result) const {
+ StringPiece name("cache-control");
+ std::string value;
+
+ const size_t directive_size = directive.size();
rvargas (doing something else) 2014/07/28 19:24:00 nit: no const
Adam Rice 2014/07/29 17:04:45 May I ask why? const clarifies for the reader that
rvargas (doing something else) 2014/07/29 19:21:22 To me it goes with the overall spirit of not going
Adam Rice 2014/07/30 02:00:59 Okay, you're the owner so I took it out. For me, a
+
+ void* iter = NULL;
+ while (EnumerateHeader(&iter, name, &value)) {
+ if (value.size() > directive_size + 1 &&
rvargas (doing something else) 2014/07/28 19:24:01 This '+ 1' is a slight change from the previous co
Adam Rice 2014/07/29 17:04:45 I added unit tests for GetMaxAgeValue() and verifi
+ LowerCaseEqualsASCII(value.begin(),
+ value.begin() + directive_size,
+ directive.begin()) &&
+ value[directive_size] == '=') {
+ int64 seconds;
+ base::StringToInt64(
+ StringPiece(value.begin() + directive_size + 1, value.end()),
+ &seconds);
+ *result = TimeDelta::FromSeconds(seconds);
+ return true;
+ }
+ }
+
+ return false;
+}
+
bool HttpResponseHeaders::GetTimeValuedHeader(const std::string& name,
Time* result) const {
std::string value;
« net/http/http_response_headers.h ('K') | « net/http/http_response_headers.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698