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 abd783c3ff4b9d91ed6b2ca39c5b11e55fd7ea07..89cca858e3d3682d138a192b9e4520afce2e6c39 100644 |
| --- a/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp |
| +++ b/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp |
| @@ -55,6 +55,8 @@ PerformanceResourceTiming::PerformanceResourceTiming( |
| timeOrigin, |
| info.loadFinishTime())), |
| m_initiatorType(info.initiatorType()), |
| + m_alpnNegotiatedProtocol(info.finalResponse().alpnNegotiatedProtocol()), |
| + m_connectionInfo(info.finalResponse().connectionInfo()), |
| m_timeOrigin(timeOrigin), |
| m_timing(info.finalResponse().resourceLoadTiming()), |
| m_lastRedirectEndTime(lastRedirectEndTime), |
| @@ -103,6 +105,36 @@ AtomicString PerformanceResourceTiming::initiatorType() const { |
| return m_initiatorType; |
| } |
| +AtomicString PerformanceResourceTiming::alpnNegotiatedProtocol() const { |
| + return m_alpnNegotiatedProtocol; |
| +} |
| + |
| +AtomicString PerformanceResourceTiming::connectionInfo() const { |
| + return m_connectionInfo; |
| +} |
| + |
| +AtomicString PerformanceResourceTiming::getNextHopProtocol( |
| + const AtomicString& alpnNegotiatedProtocol, |
| + const AtomicString& connectionInfo) { |
| + // Fallback to connectionInfo when alpnNegotiatedProtocol is unknowm. |
|
kinuko
2017/04/18 05:46:25
unknowm -> unknown
|
| + AtomicString returnedProtocol = alpnNegotiatedProtocol == "unknown" |
| + ? connectionInfo |
| + : alpnNegotiatedProtocol; |
| + // Fallback to "http/1.1" when connectionInfo is also unknown. |
| + returnedProtocol = |
| + returnedProtocol == "unknown" ? "http/1.1" : returnedProtocol; |
| + |
| + if (returnedProtocol.contains("quic")) { |
| + returnedProtocol = "hq"; |
| + } |
|
kinuko
2017/04/18 05:46:25
nit: no braces needed for one-line body
|
| + return returnedProtocol; |
| +} |
| + |
| +AtomicString PerformanceResourceTiming::nextHopProtocol() const { |
| + return PerformanceResourceTiming::getNextHopProtocol(alpnNegotiatedProtocol(), |
| + connectionInfo()); |
|
kinuko
2017/04/18 05:46:25
nit: indent looks off (please just run git cl form
|
| +} |
| + |
| DOMHighResTimeStamp PerformanceResourceTiming::workerStart() const { |
| ResourceLoadTiming* timing = resourceLoadTiming(); |
| if (!timing || timing->workerStart() == 0.0) |
| @@ -274,6 +306,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()); |