Index: chrome/browser/net/load_timing_browsertest.cc |
=================================================================== |
--- chrome/browser/net/load_timing_browsertest.cc (revision 199488) |
+++ chrome/browser/net/load_timing_browsertest.cc (working copy) |
@@ -89,7 +89,7 @@ |
// and for times retrieved from the renderer process. |
// |
// Times used for mock requests are all expressed as TimeDeltas relative to |
-// request_start. Null RelativeTimes correspond to null TimeTicks(). |
+// when the Job starts. Null RelativeTimes correspond to null TimeTicks(). |
// |
// Times read from the renderer are expressed relative to fetchStart (Which is |
// not the same as request_start). Null RelativeTimes correspond to times that |
@@ -127,6 +127,7 @@ |
// net::URLRequestFileJob implementation: |
virtual void Start() OVERRIDE { |
base::TimeDelta time_to_wait; |
+ start_time_ = base::TimeTicks::Now(); |
if (!load_timing_deltas_.receive_headers_end.is_null()) { |
// Need to delay starting until the largest of the times has elapsed. |
// Wait a little longer than necessary, to be on the safe side. |
@@ -143,15 +144,11 @@ |
virtual void GetLoadTimingInfo( |
net::LoadTimingInfo* load_timing_info) const OVERRIDE { |
- // This should have been set by the URLRequest. |
- base::TimeTicks request_start = load_timing_info->request_start; |
- ASSERT_FALSE(request_start.is_null()); |
- |
// Make sure enough time has elapsed since start was called. If this |
// fails, the test fixture itself is flaky. |
if (!load_timing_deltas_.receive_headers_end.is_null()) { |
EXPECT_LE( |
- request_start + load_timing_deltas_.receive_headers_end.GetDelta(), |
+ start_time_ + load_timing_deltas_.receive_headers_end.GetDelta(), |
base::TimeTicks::Now()); |
} |
@@ -165,20 +162,20 @@ |
} |
load_timing_info->proxy_resolve_start = |
- load_timing_deltas_.proxy_resolve_start.ToTimeTicks(request_start); |
+ load_timing_deltas_.proxy_resolve_start.ToTimeTicks(start_time_); |
load_timing_info->proxy_resolve_end = |
- load_timing_deltas_.proxy_resolve_end.ToTimeTicks(request_start); |
+ load_timing_deltas_.proxy_resolve_end.ToTimeTicks(start_time_); |
load_timing_info->connect_timing.dns_start = |
- load_timing_deltas_.dns_start.ToTimeTicks(request_start); |
+ load_timing_deltas_.dns_start.ToTimeTicks(start_time_); |
load_timing_info->connect_timing.dns_end = |
- load_timing_deltas_.dns_end.ToTimeTicks(request_start); |
+ load_timing_deltas_.dns_end.ToTimeTicks(start_time_); |
load_timing_info->connect_timing.connect_start = |
- load_timing_deltas_.connect_start.ToTimeTicks(request_start); |
+ load_timing_deltas_.connect_start.ToTimeTicks(start_time_); |
load_timing_info->connect_timing.ssl_start = |
- load_timing_deltas_.ssl_start.ToTimeTicks(request_start); |
+ load_timing_deltas_.ssl_start.ToTimeTicks(start_time_); |
load_timing_info->connect_timing.connect_end = |
- load_timing_deltas_.connect_end.ToTimeTicks(request_start); |
+ load_timing_deltas_.connect_end.ToTimeTicks(start_time_); |
// If there's an SSL start time, use connect end as the SSL end time. |
// The NavigationTiming API does not have a corresponding field, and there's |
@@ -189,11 +186,11 @@ |
} |
load_timing_info->send_start = |
- load_timing_deltas_.send_start.ToTimeTicks(request_start); |
+ load_timing_deltas_.send_start.ToTimeTicks(start_time_); |
load_timing_info->send_end= |
- load_timing_deltas_.send_end.ToTimeTicks(request_start); |
+ load_timing_deltas_.send_end.ToTimeTicks(start_time_); |
load_timing_info->receive_headers_end = |
- load_timing_deltas_.receive_headers_end.ToTimeTicks(request_start); |
+ load_timing_deltas_.receive_headers_end.ToTimeTicks(start_time_); |
} |
private: |
@@ -204,8 +201,9 @@ |
net::URLRequestFileJob::Start(); |
} |
- // Load times to use, relative to request_start from the URLRequest. |
+ // Load times to use, relative to |start_time_|. |
const TimingDeltas load_timing_deltas_; |
+ base::TimeTicks start_time_; |
base::WeakPtrFactory<MockUrlRequestJobWithTiming> weak_factory_; |
@@ -257,7 +255,7 @@ |
// Path of the file to use as the response body. |
const base::FilePath path_; |
- // Load times for each request to use, relative to their request_start times. |
+ // Load times for each request to use, relative to when the Job starts. |
const TimingDeltas load_timing_deltas_; |
DISALLOW_COPY_AND_ASSIGN(TestProtocolHandler); |
@@ -503,10 +501,10 @@ |
// Preconnect case. Connect times are all before the request was started. |
IN_PROC_BROWSER_TEST_F(LoadTimingBrowserTest, Preconnect) { |
TimingDeltas load_timing_deltas; |
- load_timing_deltas.dns_start = RelativeTime(-100300); |
- load_timing_deltas.dns_end = RelativeTime(-100200); |
- load_timing_deltas.connect_start = RelativeTime(-100100); |
- load_timing_deltas.connect_end = RelativeTime(-100000); |
+ load_timing_deltas.dns_start = RelativeTime(-1000300); |
+ load_timing_deltas.dns_end = RelativeTime(-1000200); |
+ load_timing_deltas.connect_start = RelativeTime(-1000100); |
+ load_timing_deltas.connect_end = RelativeTime(-1000000); |
load_timing_deltas.send_start = RelativeTime(0); |
load_timing_deltas.send_end = RelativeTime(100); |
load_timing_deltas.receive_headers_end = RelativeTime(200); |
@@ -514,15 +512,15 @@ |
TimingDeltas navigation_deltas; |
RunTest(load_timing_deltas, &navigation_deltas); |
- // Connect times should all be the same as request_start, which is also the |
- // same as send_start (Since send_start is 0). |
+ // Connect times should all be the same as request_start. |
EXPECT_EQ(navigation_deltas.dns_start.GetDelta(), |
navigation_deltas.dns_end.GetDelta()); |
EXPECT_EQ(navigation_deltas.dns_start.GetDelta(), |
navigation_deltas.connect_start.GetDelta()); |
EXPECT_EQ(navigation_deltas.dns_start.GetDelta(), |
navigation_deltas.connect_end.GetDelta()); |
- EXPECT_EQ(navigation_deltas.dns_start.GetDelta(), |
+ |
+ EXPECT_LE(navigation_deltas.dns_start.GetDelta(), |
navigation_deltas.send_start.GetDelta()); |
EXPECT_LT(navigation_deltas.send_start.GetDelta(), |
@@ -539,9 +537,9 @@ |
TimingDeltas load_timing_deltas; |
load_timing_deltas.proxy_resolve_start = RelativeTime(0); |
load_timing_deltas.proxy_resolve_end = RelativeTime(100); |
- load_timing_deltas.dns_start = RelativeTime(-300); |
- load_timing_deltas.dns_end = RelativeTime(-200); |
- load_timing_deltas.connect_start = RelativeTime(-100); |
+ load_timing_deltas.dns_start = RelativeTime(-3000000); |
+ load_timing_deltas.dns_end = RelativeTime(-2000000); |
+ load_timing_deltas.connect_start = RelativeTime(-1000000); |
load_timing_deltas.ssl_start = RelativeTime(0); |
load_timing_deltas.connect_end = RelativeTime(100); |
load_timing_deltas.send_start = RelativeTime(100); |
@@ -587,7 +585,7 @@ |
EXPECT_LE(navigation_deltas.connect_end.GetDelta(), |
navigation_deltas.send_start.GetDelta()); |
// The only times that are guaranteed to be distinct are send_start and |
- // received_headers end. |
+ // received_headers_end. |
EXPECT_LT(navigation_deltas.send_start.GetDelta(), |
navigation_deltas.receive_headers_end.GetDelta()); |