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

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

Issue 2550883003: nav timing 2 redirect allow opt-in (Closed)
Patch Set: sync Created 4 years 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
« no previous file with comments | « third_party/WebKit/Source/core/timing/PerformanceNavigationTiming.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/timing/PerformanceNavigationTiming.h" 5 #include "core/timing/PerformanceNavigationTiming.h"
6 6
7 #include "bindings/core/v8/V8ObjectBuilder.h" 7 #include "bindings/core/v8/V8ObjectBuilder.h"
8 #include "core/timing/PerformanceBase.h" 8 #include "core/timing/PerformanceBase.h"
9 9
10 namespace blink { 10 namespace blink {
(...skipping 18 matching lines...) Expand all
29 unsigned short redirectCount, 29 unsigned short redirectCount,
30 double domInteractive, 30 double domInteractive,
31 double domContentLoadedEventStart, 31 double domContentLoadedEventStart,
32 double domContentLoadedEventEnd, 32 double domContentLoadedEventEnd,
33 double domComplete, 33 double domComplete,
34 NavigationType type, 34 NavigationType type,
35 double redirectStart, 35 double redirectStart,
36 double redirectEnd, 36 double redirectEnd,
37 double fetchStart, 37 double fetchStart,
38 double responseEnd, 38 double responseEnd,
39 bool hasCrossOriginRedirect, 39 bool allowRedirectDetails,
40 bool hasSameOriginAsPreviousDocument, 40 bool hasSameOriginAsPreviousDocument,
41 ResourceLoadTiming* timing, 41 ResourceLoadTiming* timing,
42 double lastRedirectEndTime, 42 double lastRedirectEndTime,
43 double finishTime, 43 double finishTime,
44 unsigned long long transferSize, 44 unsigned long long transferSize,
45 unsigned long long encodedBodyLength, 45 unsigned long long encodedBodyLength,
46 unsigned long long decodedBodyLength, 46 unsigned long long decodedBodyLength,
47 bool didReuseConnection) 47 bool didReuseConnection)
48 : PerformanceResourceTiming("", 48 : PerformanceResourceTiming("",
49 timeOrigin, 49 timeOrigin,
50 timing, 50 timing,
51 lastRedirectEndTime, 51 lastRedirectEndTime,
52 finishTime, 52 finishTime,
53 transferSize, 53 transferSize,
54 encodedBodyLength, 54 encodedBodyLength,
55 decodedBodyLength, 55 decodedBodyLength,
56 didReuseConnection, 56 didReuseConnection,
57 true /*allowTimingDetails*/, // TODO(sunjian): 57 true /*allowTimingDetails*/, // TODO(sunjian):
58 // Create an enum 58 // Create an enum
59 // for this. 59 // for this.
60 !hasCrossOriginRedirect, 60 allowRedirectDetails,
61 "document", 61 "document",
62 "navigation", 62 "navigation",
63 timeOrigin), 63 timeOrigin),
64 m_timeOrigin(timeOrigin), 64 m_timeOrigin(timeOrigin),
65 m_unloadEventStart(unloadEventStart), 65 m_unloadEventStart(unloadEventStart),
66 m_unloadEventEnd(unloadEventEnd), 66 m_unloadEventEnd(unloadEventEnd),
67 m_loadEventStart(loadEventStart), 67 m_loadEventStart(loadEventStart),
68 m_loadEventEnd(loadEventEnd), 68 m_loadEventEnd(loadEventEnd),
69 m_redirectCount(redirectCount), 69 m_redirectCount(redirectCount),
70 m_domInteractive(domInteractive), 70 m_domInteractive(domInteractive),
71 m_domContentLoadedEventStart(domContentLoadedEventStart), 71 m_domContentLoadedEventStart(domContentLoadedEventStart),
72 m_domContentLoadedEventEnd(domContentLoadedEventEnd), 72 m_domContentLoadedEventEnd(domContentLoadedEventEnd),
73 m_domComplete(domComplete), 73 m_domComplete(domComplete),
74 m_type(type), 74 m_type(type),
75 m_redirectStart(redirectStart), 75 m_redirectStart(redirectStart),
76 m_redirectEnd(redirectEnd), 76 m_redirectEnd(redirectEnd),
77 m_fetchStart(fetchStart), 77 m_fetchStart(fetchStart),
78 m_responseEnd(responseEnd), 78 m_responseEnd(responseEnd),
79 m_hasCrossOriginRedirect(hasCrossOriginRedirect), 79 m_allowRedirectDetails(allowRedirectDetails),
80 m_hasSameOriginAsPreviousDocument(hasSameOriginAsPreviousDocument) {} 80 m_hasSameOriginAsPreviousDocument(hasSameOriginAsPreviousDocument) {}
81 81
82 PerformanceNavigationTiming::~PerformanceNavigationTiming() {} 82 PerformanceNavigationTiming::~PerformanceNavigationTiming() {}
83 83
84 double PerformanceNavigationTiming::unloadEventStart() const { 84 double PerformanceNavigationTiming::unloadEventStart() const {
85 if (m_hasCrossOriginRedirect || !m_hasSameOriginAsPreviousDocument) 85 if (!m_allowRedirectDetails || !m_hasSameOriginAsPreviousDocument)
86 return 0; 86 return 0;
87 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_unloadEventStart); 87 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_unloadEventStart);
88 } 88 }
89 89
90 double PerformanceNavigationTiming::unloadEventEnd() const { 90 double PerformanceNavigationTiming::unloadEventEnd() const {
91 if (m_hasCrossOriginRedirect || !m_hasSameOriginAsPreviousDocument) 91 if (!m_allowRedirectDetails || !m_hasSameOriginAsPreviousDocument)
92 return 0; 92 return 0;
93 93
94 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_unloadEventEnd); 94 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_unloadEventEnd);
95 } 95 }
96 96
97 double PerformanceNavigationTiming::domInteractive() const { 97 double PerformanceNavigationTiming::domInteractive() const {
98 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_domInteractive); 98 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_domInteractive);
99 } 99 }
100 100
101 double PerformanceNavigationTiming::domContentLoadedEventStart() const { 101 double PerformanceNavigationTiming::domContentLoadedEventStart() const {
(...skipping 27 matching lines...) Expand all
129 case NavigationType::Prerender: 129 case NavigationType::Prerender:
130 return "prerender"; 130 return "prerender";
131 case NavigationType::Navigate: 131 case NavigationType::Navigate:
132 return "navigate"; 132 return "navigate";
133 } 133 }
134 NOTREACHED(); 134 NOTREACHED();
135 return "navigate"; 135 return "navigate";
136 } 136 }
137 137
138 unsigned short PerformanceNavigationTiming::redirectCount() const { 138 unsigned short PerformanceNavigationTiming::redirectCount() const {
139 // TODO(sunjian): Also check response headers to allow opt-in crbugs/665160 139 if (!m_allowRedirectDetails)
140 if (m_hasCrossOriginRedirect)
141 return 0; 140 return 0;
142 return m_redirectCount; 141 return m_redirectCount;
143 } 142 }
144 143
145 double PerformanceNavigationTiming::fetchStart() const { 144 double PerformanceNavigationTiming::fetchStart() const {
146 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_fetchStart); 145 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_fetchStart);
147 } 146 }
148 147
149 double PerformanceNavigationTiming::redirectStart() const { 148 double PerformanceNavigationTiming::redirectStart() const {
150 if (m_hasCrossOriginRedirect) 149 if (!m_allowRedirectDetails)
151 return 0; 150 return 0;
152 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_redirectStart); 151 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_redirectStart);
153 } 152 }
154 153
155 double PerformanceNavigationTiming::redirectEnd() const { 154 double PerformanceNavigationTiming::redirectEnd() const {
156 if (m_hasCrossOriginRedirect) 155 if (!m_allowRedirectDetails)
157 return 0; 156 return 0;
158 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_redirectEnd); 157 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_redirectEnd);
159 } 158 }
160 159
161 double PerformanceNavigationTiming::responseEnd() const { 160 double PerformanceNavigationTiming::responseEnd() const {
162 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_responseEnd); 161 return monotonicTimeToDOMHighResTimeStamp(m_timeOrigin, m_responseEnd);
163 } 162 }
164 163
165 void PerformanceNavigationTiming::buildJSONValue( 164 void PerformanceNavigationTiming::buildJSONValue(
166 V8ObjectBuilder& builder) const { 165 V8ObjectBuilder& builder) const {
167 PerformanceResourceTiming::buildJSONValue(builder); 166 PerformanceResourceTiming::buildJSONValue(builder);
168 builder.addNumber("unloadEventStart", unloadEventStart()); 167 builder.addNumber("unloadEventStart", unloadEventStart());
169 builder.addNumber("unloadEventEnd", unloadEventEnd()); 168 builder.addNumber("unloadEventEnd", unloadEventEnd());
170 builder.addNumber("domInteractive", domInteractive()); 169 builder.addNumber("domInteractive", domInteractive());
171 builder.addNumber("domContentLoadedEventStart", domContentLoadedEventStart()); 170 builder.addNumber("domContentLoadedEventStart", domContentLoadedEventStart());
172 builder.addNumber("domContentLoadedEventEnd", domContentLoadedEventEnd()); 171 builder.addNumber("domContentLoadedEventEnd", domContentLoadedEventEnd());
173 builder.addNumber("domComplete", domComplete()); 172 builder.addNumber("domComplete", domComplete());
174 builder.addNumber("loadEventStart", loadEventStart()); 173 builder.addNumber("loadEventStart", loadEventStart());
175 builder.addNumber("loadEventEnd", loadEventEnd()); 174 builder.addNumber("loadEventEnd", loadEventEnd());
176 builder.addString("type", type()); 175 builder.addString("type", type());
177 builder.addNumber("redirectCount", redirectCount()); 176 builder.addNumber("redirectCount", redirectCount());
178 } 177 }
179 } 178 }
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/timing/PerformanceNavigationTiming.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698