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

Unified Diff: net/http/http_response_headers.h

Issue 154243006: Add GetExpirationTimes() to HttpResponseHeader. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: catch some users Created 4 years, 8 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
Index: net/http/http_response_headers.h
diff --git a/net/http/http_response_headers.h b/net/http/http_response_headers.h
index 653eacc4d44e30b86d15c41532ec2514ef8ba435..43639916d1fb0e5f4c816cae8181c966a313e97f 100644
--- a/net/http/http_response_headers.h
+++ b/net/http/http_response_headers.h
@@ -30,12 +30,6 @@ namespace net {
class HttpByteRange;
-enum ValidationType {
- VALIDATION_NONE, // The resource is fresh.
- VALIDATION_ASYNCHRONOUS, // The resource requires async revalidation.
- VALIDATION_SYNCHRONOUS // The resource requires sync revalidation.
-};
-
// HttpResponseHeaders: parses and holds HTTP response headers.
class NET_EXPORT HttpResponseHeaders
: public base::RefCountedThreadSafe<HttpResponseHeaders> {
@@ -51,12 +45,26 @@ class NET_EXPORT HttpResponseHeaders
static const PersistOptions PERSIST_SANS_RANGES = 1 << 4;
static const PersistOptions PERSIST_SANS_SECURITY_STATE = 1 << 5;
- struct FreshnessLifetimes {
+ struct ExpirationTimes {
+ base::Time GetFreshnessExpiry() const {
+ return corrected_response_time + freshness_lifetime;
+ }
+
+ base::Time GetStalenessExpiry() const {
+ return corrected_response_time + staleness_lifetime;
+ }
+
+ // The |base::Time::Now()| value for which this request would have an age of
+ // exactly zero. You can subtract this from |base::Time::Now()| to get the
+ // current age.
+ base::Time corrected_response_time;
+
// How long the resource will be fresh for.
- base::TimeDelta freshness;
+ base::TimeDelta freshness_lifetime;
+
// How long after becoming not fresh that the resource will be stale but
// usable (if async revalidation is enabled).
- base::TimeDelta staleness;
+ base::TimeDelta staleness_lifetime;
};
static const char kContentRange[];
@@ -225,17 +233,12 @@ class NET_EXPORT HttpResponseHeaders
// redirect.
static bool IsRedirectResponseCode(int response_code);
- // Returns VALIDATION_NONE if the response can be reused without
- // validation. VALIDATION_ASYNCHRONOUS means the response can be re-used, but
- // asynchronous revalidation must be performed. VALIDATION_SYNCHRONOUS means
- // that the result cannot be reused without revalidation.
- // The result is relative to the current_time parameter, which is
- // a parameter to support unit testing. The request_time parameter indicates
- // the time at which the request was made that resulted in this response,
- // which was received at response_time.
- ValidationType RequiresValidation(const base::Time& request_time,
- const base::Time& response_time,
- const base::Time& current_time) const;
+ // Returns an ExpirationTimes struct which can be used to calculate the
+ // freshness and stale-white-revalidate status of this response. The values in
+ // the ExpirationTimes struct do not depend on the current time, so they can
+ // be stored and used later as well.
+ ExpirationTimes GetExpirationTimes(const base::Time& request_time,
+ const base::Time& response_time) const;
// Calculates the amount of time the server claims the response is fresh from
// the time the response was generated. See section 13.2.4 of RFC 2616. See
@@ -243,14 +246,9 @@ class NET_EXPORT HttpResponseHeaders
// the definition of FreshnessLifetimes above for the meaning of the return
// value. See RFC 5861 section 3 for the definition of
// stale-while-revalidate.
- FreshnessLifetimes GetFreshnessLifetimes(
- const base::Time& response_time) const;
-
- // Returns the age of the response. See section 13.2.3 of RFC 2616.
- // See RequiresValidation for a description of this method's parameters.
- base::TimeDelta GetCurrentAge(const base::Time& request_time,
- const base::Time& response_time,
- const base::Time& current_time) const;
+ void CalculateLifetimes(const base::Time& response_time,
+ base::TimeDelta* out_freshness_lifetime,
+ base::TimeDelta* out_staleness_lifetime) const;
// The following methods extract values from the response headers. If a
// value is not present, or is invalid, then false is returned. Otherwise,

Powered by Google App Engine
This is Rietveld 408576698