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

Unified Diff: net/url_request/url_request_unittest.cc

Issue 14625012: net: Return LoadTiming information in the case of a cache hit (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fix tests, add tests Created 7 years, 7 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/url_request/url_request.cc ('K') | « net/url_request/url_request_http_job.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/url_request/url_request_unittest.cc
===================================================================
--- net/url_request/url_request_unittest.cc (revision 199488)
+++ net/url_request/url_request_unittest.cc (working copy)
@@ -156,14 +156,32 @@
EXPECT_LE(load_timing_info.send_end, load_timing_info.receive_headers_end);
}
-// Tests load timing in the case that there is no underlying connection. This
-// can be used to test in the case of cached responses, errors, or non-HTTP
-// requests.
-void TestLoadTimingNoHttpConnection(
+// Tests load timing information in the case of a cache hit, when no cache
+// validation request was sent over the wire.
+void TestLoadTimingCacheHitNoNetwork(
const net::LoadTimingInfo& load_timing_info) {
EXPECT_FALSE(load_timing_info.socket_reused);
EXPECT_EQ(net::NetLog::Source::kInvalidId, load_timing_info.socket_log_id);
+ EXPECT_FALSE(load_timing_info.request_start_time.is_null());
+ EXPECT_FALSE(load_timing_info.request_start.is_null());
+
+ ExpectConnectTimingHasNoTimes(load_timing_info.connect_timing);
+ EXPECT_LE(load_timing_info.request_start, load_timing_info.send_start);
+ EXPECT_LE(load_timing_info.send_start, load_timing_info.send_end);
+ EXPECT_LE(load_timing_info.send_end, load_timing_info.receive_headers_end);
+
+ EXPECT_TRUE(load_timing_info.proxy_resolve_start.is_null());
+ EXPECT_TRUE(load_timing_info.proxy_resolve_end.is_null());
+}
+
+// Tests load timing in the case that there is no HTTP response. This can be
+// used to test in the case of errors or non-HTTP requests.
+void TestLoadTimingNoHttpResponse(
+ const net::LoadTimingInfo& load_timing_info) {
+ EXPECT_FALSE(load_timing_info.socket_reused);
+ EXPECT_EQ(net::NetLog::Source::kInvalidId, load_timing_info.socket_log_id);
+
// Only the request times should be non-null.
EXPECT_FALSE(load_timing_info.request_start_time.is_null());
EXPECT_FALSE(load_timing_info.request_start.is_null());
@@ -4023,7 +4041,7 @@
TEST_F(URLRequestTestHTTP, VaryHeader) {
ASSERT_TRUE(test_server_.Start());
- // populate the cache
+ // Populate the cache.
{
TestDelegate d;
URLRequest req(
@@ -4033,9 +4051,13 @@
req.SetExtraRequestHeaders(headers);
req.Start();
MessageLoop::current()->Run();
+
+ LoadTimingInfo load_timing_info;
+ req.GetLoadTimingInfo(&load_timing_info);
+ TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES);
}
- // expect a cache hit
+ // Expect a cache hit.
{
TestDelegate d;
URLRequest req(
@@ -4047,9 +4069,13 @@
MessageLoop::current()->Run();
EXPECT_TRUE(req.was_cached());
+
+ LoadTimingInfo load_timing_info;
+ req.GetLoadTimingInfo(&load_timing_info);
+ TestLoadTimingCacheHitNoNetwork(load_timing_info);
}
- // expect a cache miss
+ // Expect a cache miss.
{
TestDelegate d;
URLRequest req(
@@ -4061,6 +4087,10 @@
MessageLoop::current()->Run();
EXPECT_FALSE(req.was_cached());
+
+ LoadTimingInfo load_timing_info;
+ req.GetLoadTimingInfo(&load_timing_info);
+ TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES);
}
}
@@ -4194,8 +4224,8 @@
load_timing_info.connect_timing.connect_start);
}
- // repeat request with end-to-end validation. since auth-basic results in a
- // cachable page, we expect this test to result in a 304. in which case, the
+ // Repeat request with end-to-end validation. Since auth-basic results in a
+ // cachable page, we expect this test to result in a 304. In which case, the
// response should be fetched from the cache.
{
TestDelegate d;
@@ -4212,9 +4242,11 @@
// Should be the same cached document.
EXPECT_TRUE(r.was_cached());
+ // Since there was a request that went over the wire, the load timing
+ // information should include connection times.
LoadTimingInfo load_timing_info;
r.GetLoadTimingInfo(&load_timing_info);
- TestLoadTimingNoHttpConnection(load_timing_info);
+ TestLoadTimingNotReused(load_timing_info, CONNECT_TIMING_HAS_DNS_TIMES);
}
}
@@ -5576,7 +5608,7 @@
LoadTimingInfo load_timing_info;
r.GetLoadTimingInfo(&load_timing_info);
- TestLoadTimingNoHttpConnection(load_timing_info);
+ TestLoadTimingNoHttpResponse(load_timing_info);
}
}
« net/url_request/url_request.cc ('K') | « net/url_request/url_request_http_job.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698