Chromium Code Reviews| Index: third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp |
| diff --git a/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp b/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp |
| index 48678a8993855bdb47ea6837809bb3b98a80c850..eb3ca52a353be14f1091bbbb10c7283095317171 100644 |
| --- a/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp |
| +++ b/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp |
| @@ -57,6 +57,8 @@ PerformanceResourceTiming::PerformanceResourceTiming( |
| info.LoadFinishTime(), |
| info.NegativeAllowed())), |
| initiator_type_(info.InitiatorType()), |
| + alpn_negotiated_protocol_(info.FinalResponse().AlpnNegotiatedProtocol()), |
| + connection_info_(info.FinalResponse().ConnectionInfoString()), |
| time_origin_(time_origin), |
| timing_(info.FinalResponse().GetResourceLoadTiming()), |
| last_redirect_end_time_(last_redirect_end_time), |
| @@ -106,6 +108,36 @@ AtomicString PerformanceResourceTiming::initiatorType() const { |
| return initiator_type_; |
| } |
| +AtomicString PerformanceResourceTiming::AlpnNegotiatedProtocol() const { |
| + return alpn_negotiated_protocol_; |
| +} |
| + |
| +AtomicString PerformanceResourceTiming::ConnectionInfo() const { |
| + return connection_info_; |
| +} |
| + |
| +AtomicString PerformanceResourceTiming::GetNextHopProtocol( |
| + const AtomicString& alpn_negotiated_protocol, |
| + const AtomicString& connection_info) { |
| + // Fallback to connection_info when alpn_negotiated_protocol is unknown. |
| + AtomicString returnedProtocol = alpn_negotiated_protocol == "unknown" |
|
Yoav Weiss
2017/06/10 05:31:33
Nit: Can you add parenthesis around the condition?
shaseley
2017/06/13 23:14:17
Done.
|
| + ? connection_info |
| + : alpn_negotiated_protocol; |
| + // Fallback to "http/1.1" when connection_info is also unknown. |
| + returnedProtocol = |
| + returnedProtocol == "unknown" ? "http/1.1" : returnedProtocol; |
|
Yoav Weiss
2017/06/10 05:31:33
Nit: Can you add parenthesis around the condition?
shaseley
2017/06/13 23:14:17
Done.
|
| + |
| + if (returnedProtocol.Contains("quic")) |
| + returnedProtocol = "hq"; |
|
Yoav Weiss
2017/06/10 05:31:33
Can you add a comment linking to the place this is
kinuko
2017/06/12 00:48:23
Where is it also defined this should return http/1
panicker
2017/06/13 22:09:47
"hq" is based on ietf working group discussion - I
kinuko
2017/06/14 00:00:06
Should we file a github issue for spec discussion
panicker
2017/06/14 19:46:47
SGTM, let's reference this issue: https://github.c
shaseley
2017/06/15 00:11:01
Per the Github issue thread, the latest patchset f
|
| + |
| + return returnedProtocol; |
| +} |
| + |
| +AtomicString PerformanceResourceTiming::nextHopProtocol() const { |
| + return PerformanceResourceTiming::GetNextHopProtocol(AlpnNegotiatedProtocol(), |
| + ConnectionInfo()); |
| +} |
| + |
| DOMHighResTimeStamp PerformanceResourceTiming::workerStart() const { |
| ResourceLoadTiming* timing = GetResourceLoadTiming(); |
| if (!timing || timing->WorkerStart() == 0.0) |
| @@ -277,6 +309,7 @@ unsigned long long PerformanceResourceTiming::decodedBodySize() const { |
| void PerformanceResourceTiming::BuildJSONValue(V8ObjectBuilder& builder) const { |
| PerformanceEntry::BuildJSONValue(builder); |
| builder.AddString("initiatorType", initiatorType()); |
| + builder.AddString("nextHopProtocol", nextHopProtocol()); |
| builder.AddNumber("workerStart", workerStart()); |
| builder.AddNumber("redirectStart", redirectStart()); |
| builder.AddNumber("redirectEnd", redirectEnd()); |