summaryrefslogtreecommitdiffstats
path: root/net/http
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-04 22:53:16 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-04 22:53:16 +0000
commitca2f19e15442db908f02e9fcfc1e35243d4689d7 (patch)
tree2ac8309b0eded29e787f6f09d98f870df767442f /net/http
parentcb4ff9d7374c09b4ff0c8e257e15b81bb7bb42ed (diff)
downloadchromium_src-ca2f19e15442db908f02e9fcfc1e35243d4689d7.zip
chromium_src-ca2f19e15442db908f02e9fcfc1e35243d4689d7.tar.gz
chromium_src-ca2f19e15442db908f02e9fcfc1e35243d4689d7.tar.bz2
Update the request time of http cache entries on 304.
BUG=http://crbug.com/20594 TEST=HttpCache.UpdatesRequestResponseTimeOn304 Review URL: http://codereview.chromium.org/199028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25541 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http')
-rw-r--r--net/http/http_cache.cc1
-rw-r--r--net/http/http_cache_unittest.cc20
-rw-r--r--net/http/http_transaction_unittest.cc5
-rw-r--r--net/http/http_transaction_unittest.h5
4 files changed, 25 insertions, 6 deletions
diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc
index 44b5d00..12d0844 100644
--- a/net/http/http_cache.cc
+++ b/net/http/http_cache.cc
@@ -1444,6 +1444,7 @@ void HttpCache::Transaction::OnNetworkInfoAvailable(int result) {
// (response_.ssl_info), too?
response_.headers->Update(*new_response->headers);
response_.response_time = new_response->response_time;
+ response_.request_time = new_response->request_time;
if (response_.headers->HasHeaderValue("cache-control", "no-store")) {
cache_->DoomEntry(cache_key_);
diff --git a/net/http/http_cache_unittest.cc b/net/http/http_cache_unittest.cc
index fa20f13..8d01b6a 100644
--- a/net/http/http_cache_unittest.cc
+++ b/net/http/http_cache_unittest.cc
@@ -458,6 +458,7 @@ bool FastTransactionServer::no_store;
const MockTransaction kFastNoStoreGET_Transaction = {
"http://www.google.com/nostore",
"GET",
+ base::Time(),
"",
net::LOAD_VALIDATE_CACHE,
"HTTP/1.1 200 OK",
@@ -562,6 +563,7 @@ void RangeTransactionServer::RangeHandler(const net::HttpRequestInfo* request,
const MockTransaction kRangeGET_TransactionOK = {
"http://www.google.com/range",
"GET",
+ base::Time(),
"Range: bytes = 40-49\r\n",
net::LOAD_NORMAL,
"HTTP/1.1 206 Partial Content",
@@ -2498,9 +2500,10 @@ TEST(HttpCache, CacheDisabledMode) {
// Other tests check that the response headers of the cached response
// get updated on 304. Here we specifically check that the
-// HttpResponseHeaders::response_time field also gets updated.
+// HttpResponseHeaders::request_time and HttpResponseHeaders::response_time
+// fields also gets updated.
// http://crbug.com/20594.
-TEST(HttpCache, UpdatesResponseTimeOn304) {
+TEST(HttpCache, UpdatesRequestResponseTimeOn304) {
MockHttpCache cache;
const char* kUrl = "http://foobar";
@@ -2543,14 +2546,19 @@ TEST(HttpCache, UpdatesResponseTimeOn304) {
kNetResponse2.AssignTo(&mock_network_response);
- base::Time t = base::Time() + base::TimeDelta::FromHours(1234);
- mock_network_response.response_time = t;
+ base::Time request_time = base::Time() + base::TimeDelta::FromHours(1234);
+ base::Time response_time = base::Time() + base::TimeDelta::FromHours(1235);
+
+ mock_network_response.request_time = request_time;
+ mock_network_response.response_time = response_time;
net::HttpResponseInfo response;
RunTransactionTestWithResponseInfo(cache.http_cache(), request, &response);
- // The response time should have been updated.
- EXPECT_EQ(t.ToInternalValue(),
+ // The request and response times should have been updated.
+ EXPECT_EQ(request_time.ToInternalValue(),
+ response.request_time.ToInternalValue());
+ EXPECT_EQ(response_time.ToInternalValue(),
response.response_time.ToInternalValue());
std::string headers;
diff --git a/net/http/http_transaction_unittest.cc b/net/http/http_transaction_unittest.cc
index 4a0cef7..01e6ea5 100644
--- a/net/http/http_transaction_unittest.cc
+++ b/net/http/http_transaction_unittest.cc
@@ -22,6 +22,7 @@
const MockTransaction kSimpleGET_Transaction = {
"http://www.google.com/",
"GET",
+ base::Time(),
"",
net::LOAD_NORMAL,
"HTTP/1.1 200 OK",
@@ -36,6 +37,7 @@ const MockTransaction kSimpleGET_Transaction = {
const MockTransaction kSimplePOST_Transaction = {
"http://bugdatabase.com/edit",
"POST",
+ base::Time(),
"",
net::LOAD_NORMAL,
"HTTP/1.1 200 OK",
@@ -50,6 +52,7 @@ const MockTransaction kSimplePOST_Transaction = {
const MockTransaction kTypicalGET_Transaction = {
"http://www.example.com/~foo/bar.html",
"GET",
+ base::Time(),
"",
net::LOAD_NORMAL,
"HTTP/1.1 200 OK",
@@ -65,6 +68,7 @@ const MockTransaction kTypicalGET_Transaction = {
const MockTransaction kETagGET_Transaction = {
"http://www.google.com/foopy",
"GET",
+ base::Time(),
"",
net::LOAD_NORMAL,
"HTTP/1.1 200 OK",
@@ -80,6 +84,7 @@ const MockTransaction kETagGET_Transaction = {
const MockTransaction kRangeGET_Transaction = {
"http://www.google.com/",
"GET",
+ base::Time(),
"Range: 0-100\r\n",
net::LOAD_NORMAL,
"HTTP/1.1 200 OK",
diff --git a/net/http/http_transaction_unittest.h b/net/http/http_transaction_unittest.h
index 1f4919f..d2e2115 100644
--- a/net/http/http_transaction_unittest.h
+++ b/net/http/http_transaction_unittest.h
@@ -43,6 +43,8 @@ typedef void (*MockTransactionHandler)(const net::HttpRequestInfo* request,
struct MockTransaction {
const char* url;
const char* method;
+ // If |request_time| is unspecified, the current time will be used.
+ base::Time request_time;
const char* request_headers;
int load_flags;
const char* status;
@@ -219,6 +221,9 @@ class MockNetworkTransaction : public net::HttpTransaction {
std::replace(header_data.begin(), header_data.end(), '\n', '\0');
response_.request_time = base::Time::Now();
+ if (!t->request_time.is_null())
+ response_.request_time = t->request_time;
+
response_.was_cached = false;
response_.response_time = base::Time::Now();