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

Unified Diff: third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp

Issue 2429063002: Implement nextHopProtocol in PerformanceResourceTiming and PerformanceNavigationTiming.
Patch Set: Added core_export for PerformanceResourceTiming Created 4 years, 2 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
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 bc8441f93083ed1450207b77a167a1a936e177f3..fd2fd66a0ab2a2fabef2d024e889575a37305942 100644
--- a/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp
+++ b/third_party/WebKit/Source/core/timing/PerformanceResourceTiming.cpp
@@ -36,6 +36,7 @@
#include "platform/network/ResourceRequest.h"
#include "platform/network/ResourceResponse.h"
#include "platform/network/ResourceTimingInfo.h"
+#include <regex>
namespace blink {
@@ -62,6 +63,8 @@ PerformanceResourceTiming::PerformanceResourceTiming(
monotonicTimeToDOMHighResTimeStamp(timeOrigin,
info.loadFinishTime())),
m_initiatorType(info.initiatorType()),
+ m_nextHopProtocol(info.finalResponse().alpnNegotiatedProtocol()),
+ m_connectionInfo(info.finalResponse().connectionInfo()),
m_timeOrigin(timeOrigin),
m_timing(info.finalResponse().resourceLoadTiming()),
m_lastRedirectEndTime(lastRedirectEndTime),
@@ -79,6 +82,29 @@ AtomicString PerformanceResourceTiming::initiatorType() const {
return m_initiatorType;
}
+AtomicString PerformanceResourceTiming::produceNextHopProtocol(
+ const AtomicString& alpnNegotiatedProtocol,
+ const AtomicString& connectionInfo) {
+ AtomicString returnedProtocol = alpnNegotiatedProtocol == "unknown"
+ ? connectionInfo
+ : alpnNegotiatedProtocol;
+ returnedProtocol =
panicker 2016/10/25 23:53:26 Add a comment explaining this
sunjian 2016/10/26 19:56:52 Done.
+ returnedProtocol == "unknown" ? "http/1.1" : returnedProtocol;
+ std::string returnedProtocolCopy = returnedProtocol.ascii().data();
panicker 2016/10/25 23:53:26 std::string and std::regex are not allowed in Sour
sunjian 2016/10/26 19:56:52 Done.
+ if (std::regex_match(returnedProtocolCopy, std::regex("(quic/)(.*)"))) {
+ returnedProtocol =
+ ("http2/+" +
+ returnedProtocolCopy.substr(0, returnedProtocolCopy.find('+')))
+ .c_str();
+ }
+ return returnedProtocol;
+}
+
+AtomicString PerformanceResourceTiming::nextHopProtocol() const {
+ return PerformanceResourceTiming::produceNextHopProtocol(m_nextHopProtocol,
+ m_connectionInfo);
+}
+
double PerformanceResourceTiming::workerStart() const {
if (!m_timing || m_timing->workerStart() == 0.0)
return 0.0;
@@ -242,6 +268,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());

Powered by Google App Engine
This is Rietveld 408576698