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

Side by Side Diff: third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp

Issue 2932003002: Implement nextHopProtocol in PerformanceResourceTiming and PerformanceNavigationTiming. (Closed)
Patch Set: Do not default to http/1.1; add github issue reference Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Intel Inc. All rights reserved. 3 * Copyright (C) 2012 Intel Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 "resource", 50 "resource",
51 PerformanceBase::MonotonicTimeToDOMHighResTimeStamp( 51 PerformanceBase::MonotonicTimeToDOMHighResTimeStamp(
52 time_origin, 52 time_origin,
53 start_time, 53 start_time,
54 info.NegativeAllowed()), 54 info.NegativeAllowed()),
55 PerformanceBase::MonotonicTimeToDOMHighResTimeStamp( 55 PerformanceBase::MonotonicTimeToDOMHighResTimeStamp(
56 time_origin, 56 time_origin,
57 info.LoadFinishTime(), 57 info.LoadFinishTime(),
58 info.NegativeAllowed())), 58 info.NegativeAllowed())),
59 initiator_type_(info.InitiatorType()), 59 initiator_type_(info.InitiatorType()),
60 alpn_negotiated_protocol_(info.FinalResponse().AlpnNegotiatedProtocol()),
61 connection_info_(info.FinalResponse().ConnectionInfoString()),
60 time_origin_(time_origin), 62 time_origin_(time_origin),
61 timing_(info.FinalResponse().GetResourceLoadTiming()), 63 timing_(info.FinalResponse().GetResourceLoadTiming()),
62 last_redirect_end_time_(last_redirect_end_time), 64 last_redirect_end_time_(last_redirect_end_time),
63 finish_time_(info.LoadFinishTime()), 65 finish_time_(info.LoadFinishTime()),
64 transfer_size_(info.TransferSize()), 66 transfer_size_(info.TransferSize()),
65 encoded_body_size_(info.FinalResponse().EncodedBodyLength()), 67 encoded_body_size_(info.FinalResponse().EncodedBodyLength()),
66 decoded_body_size_(info.FinalResponse().DecodedBodyLength()), 68 decoded_body_size_(info.FinalResponse().DecodedBodyLength()),
67 did_reuse_connection_(info.FinalResponse().ConnectionReused()), 69 did_reuse_connection_(info.FinalResponse().ConnectionReused()),
68 allow_timing_details_(allow_timing_details), 70 allow_timing_details_(allow_timing_details),
69 allow_redirect_details_(allow_redirect_details), 71 allow_redirect_details_(allow_redirect_details),
(...skipping 29 matching lines...) Expand all
99 } 101 }
100 102
101 unsigned long long PerformanceResourceTiming::GetDecodedBodySize() const { 103 unsigned long long PerformanceResourceTiming::GetDecodedBodySize() const {
102 return decoded_body_size_; 104 return decoded_body_size_;
103 } 105 }
104 106
105 AtomicString PerformanceResourceTiming::initiatorType() const { 107 AtomicString PerformanceResourceTiming::initiatorType() const {
106 return initiator_type_; 108 return initiator_type_;
107 } 109 }
108 110
111 AtomicString PerformanceResourceTiming::AlpnNegotiatedProtocol() const {
112 return alpn_negotiated_protocol_;
113 }
114
115 AtomicString PerformanceResourceTiming::ConnectionInfo() const {
116 return connection_info_;
117 }
118
119 AtomicString PerformanceResourceTiming::GetNextHopProtocol(
120 const AtomicString& alpn_negotiated_protocol,
121 const AtomicString& connection_info) {
122 // Fallback to connection_info when alpn_negotiated_protocol is unknown.
123 AtomicString returnedProtocol = (alpn_negotiated_protocol == "unknown")
124 ? connection_info
125 : alpn_negotiated_protocol;
126 // If connection_info is also unknown, return empty string.
127 // (https://github.com/w3c/navigation-timing/issues/71)
Yoav Weiss 2017/06/16 15:25:04 This probably should be documented elsewhere, but
panicker 2017/06/16 22:41:17 What else is there to document exactly (and which
128 returnedProtocol = (returnedProtocol == "unknown") ? "" : returnedProtocol;
129 // If the protocol is http over quic (e.g. http/2+quic/37), convert it to the
130 // alpn id "hq". (https://github.com/w3c/navigation-timing/issues/71)
Yoav Weiss 2017/06/16 15:25:04 I don't think we should convert Google's QUIC into
panicker 2017/06/16 17:37:27 What are you proposing instead? I'm fine with star
panicker 2017/06/16 22:41:17 As Ilya suggested on bug, let's stick with "hq" an
131 if (returnedProtocol.Contains("quic"))
132 returnedProtocol = "hq";
133
134 return returnedProtocol;
135 }
136
137 AtomicString PerformanceResourceTiming::nextHopProtocol() const {
138 return PerformanceResourceTiming::GetNextHopProtocol(AlpnNegotiatedProtocol(),
139 ConnectionInfo());
140 }
141
109 DOMHighResTimeStamp PerformanceResourceTiming::workerStart() const { 142 DOMHighResTimeStamp PerformanceResourceTiming::workerStart() const {
110 ResourceLoadTiming* timing = GetResourceLoadTiming(); 143 ResourceLoadTiming* timing = GetResourceLoadTiming();
111 if (!timing || timing->WorkerStart() == 0.0) 144 if (!timing || timing->WorkerStart() == 0.0)
112 return 0.0; 145 return 0.0;
113 146
114 return PerformanceBase::MonotonicTimeToDOMHighResTimeStamp( 147 return PerformanceBase::MonotonicTimeToDOMHighResTimeStamp(
115 time_origin_, timing->WorkerStart(), allow_negative_value_); 148 time_origin_, timing->WorkerStart(), allow_negative_value_);
116 } 149 }
117 150
118 DOMHighResTimeStamp PerformanceResourceTiming::WorkerReady() const { 151 DOMHighResTimeStamp PerformanceResourceTiming::WorkerReady() const {
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 unsigned long long PerformanceResourceTiming::decodedBodySize() const { 303 unsigned long long PerformanceResourceTiming::decodedBodySize() const {
271 if (!AllowTimingDetails()) 304 if (!AllowTimingDetails())
272 return 0; 305 return 0;
273 306
274 return GetDecodedBodySize(); 307 return GetDecodedBodySize();
275 } 308 }
276 309
277 void PerformanceResourceTiming::BuildJSONValue(V8ObjectBuilder& builder) const { 310 void PerformanceResourceTiming::BuildJSONValue(V8ObjectBuilder& builder) const {
278 PerformanceEntry::BuildJSONValue(builder); 311 PerformanceEntry::BuildJSONValue(builder);
279 builder.AddString("initiatorType", initiatorType()); 312 builder.AddString("initiatorType", initiatorType());
313 builder.AddString("nextHopProtocol", nextHopProtocol());
280 builder.AddNumber("workerStart", workerStart()); 314 builder.AddNumber("workerStart", workerStart());
281 builder.AddNumber("redirectStart", redirectStart()); 315 builder.AddNumber("redirectStart", redirectStart());
282 builder.AddNumber("redirectEnd", redirectEnd()); 316 builder.AddNumber("redirectEnd", redirectEnd());
283 builder.AddNumber("fetchStart", fetchStart()); 317 builder.AddNumber("fetchStart", fetchStart());
284 builder.AddNumber("domainLookupStart", domainLookupStart()); 318 builder.AddNumber("domainLookupStart", domainLookupStart());
285 builder.AddNumber("domainLookupEnd", domainLookupEnd()); 319 builder.AddNumber("domainLookupEnd", domainLookupEnd());
286 builder.AddNumber("connectStart", connectStart()); 320 builder.AddNumber("connectStart", connectStart());
287 builder.AddNumber("connectEnd", connectEnd()); 321 builder.AddNumber("connectEnd", connectEnd());
288 builder.AddNumber("secureConnectionStart", secureConnectionStart()); 322 builder.AddNumber("secureConnectionStart", secureConnectionStart());
289 builder.AddNumber("requestStart", requestStart()); 323 builder.AddNumber("requestStart", requestStart());
290 builder.AddNumber("responseStart", responseStart()); 324 builder.AddNumber("responseStart", responseStart());
291 builder.AddNumber("responseEnd", responseEnd()); 325 builder.AddNumber("responseEnd", responseEnd());
292 builder.AddNumber("transferSize", transferSize()); 326 builder.AddNumber("transferSize", transferSize());
293 builder.AddNumber("encodedBodySize", encodedBodySize()); 327 builder.AddNumber("encodedBodySize", encodedBodySize());
294 builder.AddNumber("decodedBodySize", decodedBodySize()); 328 builder.AddNumber("decodedBodySize", decodedBodySize());
295 } 329 }
296 330
297 } // namespace blink 331 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698