OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_
observer.h" | 5 #include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_
observer.h" |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_
test_harness.h" | 9 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_
test_harness.h" |
10 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" | 10 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
11 #include "third_party/WebKit/public/platform/WebMouseEvent.h" | 11 #include "third_party/WebKit/public/platform/WebMouseEvent.h" |
12 | 12 |
13 namespace { | 13 namespace { |
14 const char kExampleUrl[] = "http://www.example.com/"; | 14 const char kExampleUrl[] = "http://www.example.com/"; |
15 const char kGoogleSearchResultsUrl[] = "https://www.google.com/webhp?q=d"; | 15 const char kGoogleSearchResultsUrl[] = "https://www.google.com/webhp?q=d"; |
16 } // namespace | 16 } // namespace |
17 | 17 |
18 class FromGWSPageLoadMetricsObserverTest | 18 class FromGWSPageLoadMetricsObserverTest |
19 : public page_load_metrics::PageLoadMetricsObserverTestHarness { | 19 : public page_load_metrics::PageLoadMetricsObserverTestHarness { |
20 public: | 20 public: |
21 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { | 21 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { |
22 FromGWSPageLoadMetricsObserver* observer = | 22 FromGWSPageLoadMetricsObserver* observer = |
23 new FromGWSPageLoadMetricsObserver(); | 23 new FromGWSPageLoadMetricsObserver(); |
24 tracker->AddObserver(base::WrapUnique(observer)); | 24 tracker->AddObserver(base::WrapUnique(observer)); |
25 } | 25 } |
26 | 26 |
27 void SimulateTimingWithoutPaint() { | 27 void SimulateTimingWithoutPaint() { |
28 page_load_metrics::PageLoadTiming timing; | 28 page_load_metrics::mojom::PageLoadTiming timing; |
| 29 page_load_metrics::InitPageLoadTimingForTest(&timing); |
29 timing.navigation_start = base::Time::FromDoubleT(1); | 30 timing.navigation_start = base::Time::FromDoubleT(1); |
30 SimulateTimingUpdate(timing); | 31 SimulateTimingUpdate(timing); |
31 } | 32 } |
32 | 33 |
33 void SimulateTimingWithFirstPaint() { | 34 void SimulateTimingWithFirstPaint() { |
34 page_load_metrics::PageLoadTiming timing; | 35 page_load_metrics::mojom::PageLoadTiming timing; |
| 36 page_load_metrics::InitPageLoadTimingForTest(&timing); |
35 timing.navigation_start = base::Time::FromDoubleT(1); | 37 timing.navigation_start = base::Time::FromDoubleT(1); |
36 timing.paint_timing.first_paint = base::TimeDelta::FromMilliseconds(0); | 38 timing.paint_timing->first_paint = base::TimeDelta::FromMilliseconds(0); |
37 PopulateRequiredTimingFields(&timing); | 39 PopulateRequiredTimingFields(&timing); |
38 SimulateTimingUpdate(timing); | 40 SimulateTimingUpdate(timing); |
39 } | 41 } |
40 | 42 |
41 void SimulateMouseEvent() { | 43 void SimulateMouseEvent() { |
42 blink::WebMouseEvent mouse_event( | 44 blink::WebMouseEvent mouse_event( |
43 blink::WebInputEvent::kMouseDown, blink::WebInputEvent::kNoModifiers, | 45 blink::WebInputEvent::kMouseDown, blink::WebInputEvent::kNoModifiers, |
44 blink::WebInputEvent::kTimeStampForTesting); | 46 blink::WebInputEvent::kTimeStampForTesting); |
45 mouse_event.button = blink::WebMouseEvent::Button::kLeft; | 47 mouse_event.button = blink::WebMouseEvent::Button::kLeft; |
46 mouse_event.SetPositionInWidget(7, 7); | 48 mouse_event.SetPositionInWidget(7, 7); |
47 mouse_event.click_count = 1; | 49 mouse_event.click_count = 1; |
48 SimulateInputEvent(mouse_event); | 50 SimulateInputEvent(mouse_event); |
49 } | 51 } |
50 }; | 52 }; |
51 | 53 |
52 class FromGWSPageLoadMetricsLoggerTest : public testing::Test {}; | 54 class FromGWSPageLoadMetricsLoggerTest : public testing::Test {}; |
53 | 55 |
54 TEST_F(FromGWSPageLoadMetricsObserverTest, NoMetrics) { | 56 TEST_F(FromGWSPageLoadMetricsObserverTest, NoMetrics) { |
55 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 57 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
56 0); | 58 0); |
57 } | 59 } |
58 | 60 |
59 TEST_F(FromGWSPageLoadMetricsObserverTest, NoPreviousCommittedUrl) { | 61 TEST_F(FromGWSPageLoadMetricsObserverTest, NoPreviousCommittedUrl) { |
60 page_load_metrics::PageLoadTiming timing; | 62 page_load_metrics::mojom::PageLoadTiming timing; |
| 63 page_load_metrics::InitPageLoadTimingForTest(&timing); |
61 timing.navigation_start = base::Time::FromDoubleT(1); | 64 timing.navigation_start = base::Time::FromDoubleT(1); |
62 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 65 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
63 PopulateRequiredTimingFields(&timing); | 66 PopulateRequiredTimingFields(&timing); |
64 NavigateAndCommit(GURL(kExampleUrl)); | 67 NavigateAndCommit(GURL(kExampleUrl)); |
65 | 68 |
66 SimulateTimingUpdate(timing); | 69 SimulateTimingUpdate(timing); |
67 | 70 |
68 // Navigate again to force logging. | 71 // Navigate again to force logging. |
69 NavigateAndCommit(GURL("http://www.final.com")); | 72 NavigateAndCommit(GURL("http://www.final.com")); |
70 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 73 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
71 0); | 74 0); |
72 } | 75 } |
73 | 76 |
74 TEST_F(FromGWSPageLoadMetricsObserverTest, NonSearchPreviousCommittedUrl) { | 77 TEST_F(FromGWSPageLoadMetricsObserverTest, NonSearchPreviousCommittedUrl) { |
75 page_load_metrics::PageLoadTiming timing; | 78 page_load_metrics::mojom::PageLoadTiming timing; |
| 79 page_load_metrics::InitPageLoadTimingForTest(&timing); |
76 timing.navigation_start = base::Time::FromDoubleT(1); | 80 timing.navigation_start = base::Time::FromDoubleT(1); |
77 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 81 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
78 PopulateRequiredTimingFields(&timing); | 82 PopulateRequiredTimingFields(&timing); |
79 NavigateAndCommit(GURL("http://www.other.com")); | 83 NavigateAndCommit(GURL("http://www.other.com")); |
80 NavigateAndCommit(GURL(kExampleUrl)); | 84 NavigateAndCommit(GURL(kExampleUrl)); |
81 | 85 |
82 SimulateTimingUpdate(timing); | 86 SimulateTimingUpdate(timing); |
83 | 87 |
84 // Navigate again to force logging. | 88 // Navigate again to force logging. |
85 NavigateAndCommit(GURL("http://www.final.com")); | 89 NavigateAndCommit(GURL("http://www.final.com")); |
86 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 90 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
87 0); | 91 0); |
88 } | 92 } |
89 | 93 |
90 TEST_F(FromGWSPageLoadMetricsObserverTest, | 94 TEST_F(FromGWSPageLoadMetricsObserverTest, |
91 GoogleNonSearchPreviousCommittedUrl1) { | 95 GoogleNonSearchPreviousCommittedUrl1) { |
92 page_load_metrics::PageLoadTiming timing; | 96 page_load_metrics::mojom::PageLoadTiming timing; |
| 97 page_load_metrics::InitPageLoadTimingForTest(&timing); |
93 timing.navigation_start = base::Time::FromDoubleT(1); | 98 timing.navigation_start = base::Time::FromDoubleT(1); |
94 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 99 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
95 PopulateRequiredTimingFields(&timing); | 100 PopulateRequiredTimingFields(&timing); |
96 NavigateAndCommit(GURL("https://www.google.com/")); | 101 NavigateAndCommit(GURL("https://www.google.com/")); |
97 NavigateAndCommit(GURL(kExampleUrl)); | 102 NavigateAndCommit(GURL(kExampleUrl)); |
98 | 103 |
99 SimulateTimingUpdate(timing); | 104 SimulateTimingUpdate(timing); |
100 | 105 |
101 // Navigate again to force logging. | 106 // Navigate again to force logging. |
102 NavigateAndCommit(GURL("http://www.final.com")); | 107 NavigateAndCommit(GURL("http://www.final.com")); |
103 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 108 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
104 0); | 109 0); |
105 } | 110 } |
106 | 111 |
107 TEST_F(FromGWSPageLoadMetricsObserverTest, | 112 TEST_F(FromGWSPageLoadMetricsObserverTest, |
108 GoogleNonSearchPreviousCommittedUrl2) { | 113 GoogleNonSearchPreviousCommittedUrl2) { |
109 page_load_metrics::PageLoadTiming timing; | 114 page_load_metrics::mojom::PageLoadTiming timing; |
| 115 page_load_metrics::InitPageLoadTimingForTest(&timing); |
110 timing.navigation_start = base::Time::FromDoubleT(1); | 116 timing.navigation_start = base::Time::FromDoubleT(1); |
111 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 117 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
112 PopulateRequiredTimingFields(&timing); | 118 PopulateRequiredTimingFields(&timing); |
113 // Navigation from /search, but missing a query string, so can't have been a | 119 // Navigation from /search, but missing a query string, so can't have been a |
114 // search results page. | 120 // search results page. |
115 NavigateAndCommit(GURL("https://www.google.com/search?a=b&c=d")); | 121 NavigateAndCommit(GURL("https://www.google.com/search?a=b&c=d")); |
116 NavigateAndCommit(GURL(kExampleUrl)); | 122 NavigateAndCommit(GURL(kExampleUrl)); |
117 | 123 |
118 SimulateTimingUpdate(timing); | 124 SimulateTimingUpdate(timing); |
119 | 125 |
120 // Navigate again to force logging. | 126 // Navigate again to force logging. |
121 NavigateAndCommit(GURL("http://www.final.com")); | 127 NavigateAndCommit(GURL("http://www.final.com")); |
122 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 128 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
123 0); | 129 0); |
124 } | 130 } |
125 | 131 |
126 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchPreviousCommittedUrl1) { | 132 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchPreviousCommittedUrl1) { |
127 page_load_metrics::PageLoadTiming timing; | 133 page_load_metrics::mojom::PageLoadTiming timing; |
| 134 page_load_metrics::InitPageLoadTimingForTest(&timing); |
128 timing.navigation_start = base::Time::FromDoubleT(1); | 135 timing.navigation_start = base::Time::FromDoubleT(1); |
129 timing.parse_timing.parse_start = base::TimeDelta::FromMilliseconds(10); | 136 timing.parse_timing->parse_start = base::TimeDelta::FromMilliseconds(10); |
130 timing.paint_timing.first_paint = base::TimeDelta::FromMilliseconds(20); | 137 timing.paint_timing->first_paint = base::TimeDelta::FromMilliseconds(20); |
131 timing.paint_timing.first_contentful_paint = | 138 timing.paint_timing->first_contentful_paint = |
132 base::TimeDelta::FromMilliseconds(40); | 139 base::TimeDelta::FromMilliseconds(40); |
133 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(80); | 140 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(80); |
134 timing.paint_timing.first_image_paint = | 141 timing.paint_timing->first_image_paint = |
135 base::TimeDelta::FromMilliseconds(160); | 142 base::TimeDelta::FromMilliseconds(160); |
136 timing.parse_timing.parse_stop = base::TimeDelta::FromMilliseconds(320); | 143 timing.parse_timing->parse_stop = base::TimeDelta::FromMilliseconds(320); |
137 timing.document_timing.dom_content_loaded_event_start = | 144 timing.document_timing->dom_content_loaded_event_start = |
138 base::TimeDelta::FromMilliseconds(640); | 145 base::TimeDelta::FromMilliseconds(640); |
139 timing.document_timing.load_event_start = | 146 timing.document_timing->load_event_start = |
140 base::TimeDelta::FromMilliseconds(1280); | 147 base::TimeDelta::FromMilliseconds(1280); |
141 PopulateRequiredTimingFields(&timing); | 148 PopulateRequiredTimingFields(&timing); |
142 NavigateAndCommit(GURL("https://www.google.com/webhp?q=test")); | 149 NavigateAndCommit(GURL("https://www.google.com/webhp?q=test")); |
143 NavigateAndCommit(GURL(kExampleUrl)); | 150 NavigateAndCommit(GURL(kExampleUrl)); |
144 | 151 |
145 SimulateTimingUpdate(timing); | 152 SimulateTimingUpdate(timing); |
146 | 153 |
147 // Navigate again to force logging. | 154 // Navigate again to force logging. |
148 NavigateAndCommit(GURL("http://www.final.com")); | 155 NavigateAndCommit(GURL("http://www.final.com")); |
149 | 156 |
150 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSParseStart, 1); | 157 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSParseStart, 1); |
151 histogram_tester().ExpectBucketCount( | 158 histogram_tester().ExpectBucketCount( |
152 internal::kHistogramFromGWSParseStart, | 159 internal::kHistogramFromGWSParseStart, |
153 timing.parse_timing.parse_start.value().InMilliseconds(), 1); | 160 timing.parse_timing->parse_start.value().InMilliseconds(), 1); |
154 | 161 |
155 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstPaint, 1); | 162 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstPaint, 1); |
156 histogram_tester().ExpectBucketCount( | 163 histogram_tester().ExpectBucketCount( |
157 internal::kHistogramFromGWSFirstPaint, | 164 internal::kHistogramFromGWSFirstPaint, |
158 timing.paint_timing.first_paint.value().InMilliseconds(), 1); | 165 timing.paint_timing->first_paint.value().InMilliseconds(), 1); |
159 | 166 |
160 histogram_tester().ExpectTotalCount( | 167 histogram_tester().ExpectTotalCount( |
161 internal::kHistogramFromGWSFirstContentfulPaint, 1); | 168 internal::kHistogramFromGWSFirstContentfulPaint, 1); |
162 histogram_tester().ExpectBucketCount( | 169 histogram_tester().ExpectBucketCount( |
163 internal::kHistogramFromGWSFirstContentfulPaint, | 170 internal::kHistogramFromGWSFirstContentfulPaint, |
164 timing.paint_timing.first_contentful_paint.value().InMilliseconds(), 1); | 171 timing.paint_timing->first_contentful_paint.value().InMilliseconds(), 1); |
165 | 172 |
166 histogram_tester().ExpectTotalCount( | 173 histogram_tester().ExpectTotalCount( |
167 internal::kHistogramFromGWSParseStartToFirstContentfulPaint, 1); | 174 internal::kHistogramFromGWSParseStartToFirstContentfulPaint, 1); |
168 histogram_tester().ExpectBucketCount( | 175 histogram_tester().ExpectBucketCount( |
169 internal::kHistogramFromGWSParseStartToFirstContentfulPaint, | 176 internal::kHistogramFromGWSParseStartToFirstContentfulPaint, |
170 (timing.paint_timing.first_contentful_paint.value() - | 177 (timing.paint_timing->first_contentful_paint.value() - |
171 timing.parse_timing.parse_start.value()) | 178 timing.parse_timing->parse_start.value()) |
172 .InMilliseconds(), | 179 .InMilliseconds(), |
173 1); | 180 1); |
174 | 181 |
175 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 182 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
176 1); | 183 1); |
177 histogram_tester().ExpectBucketCount( | 184 histogram_tester().ExpectBucketCount( |
178 internal::kHistogramFromGWSFirstTextPaint, | 185 internal::kHistogramFromGWSFirstTextPaint, |
179 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 186 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
180 | 187 |
181 histogram_tester().ExpectTotalCount( | 188 histogram_tester().ExpectTotalCount( |
182 internal::kHistogramFromGWSFirstImagePaint, 1); | 189 internal::kHistogramFromGWSFirstImagePaint, 1); |
183 histogram_tester().ExpectBucketCount( | 190 histogram_tester().ExpectBucketCount( |
184 internal::kHistogramFromGWSFirstImagePaint, | 191 internal::kHistogramFromGWSFirstImagePaint, |
185 timing.paint_timing.first_image_paint.value().InMilliseconds(), 1); | 192 timing.paint_timing->first_image_paint.value().InMilliseconds(), 1); |
186 | 193 |
187 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSParseDuration, | 194 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSParseDuration, |
188 1); | 195 1); |
189 histogram_tester().ExpectBucketCount(internal::kHistogramFromGWSParseDuration, | 196 histogram_tester().ExpectBucketCount( |
190 (timing.parse_timing.parse_stop.value() - | 197 internal::kHistogramFromGWSParseDuration, |
191 timing.parse_timing.parse_start.value()) | 198 (timing.parse_timing->parse_stop.value() - |
192 .InMilliseconds(), | 199 timing.parse_timing->parse_start.value()) |
193 1); | 200 .InMilliseconds(), |
| 201 1); |
194 | 202 |
195 histogram_tester().ExpectTotalCount( | 203 histogram_tester().ExpectTotalCount( |
196 internal::kHistogramFromGWSDomContentLoaded, 1); | 204 internal::kHistogramFromGWSDomContentLoaded, 1); |
197 histogram_tester().ExpectBucketCount( | 205 histogram_tester().ExpectBucketCount( |
198 internal::kHistogramFromGWSDomContentLoaded, | 206 internal::kHistogramFromGWSDomContentLoaded, |
199 timing.document_timing.dom_content_loaded_event_start.value() | 207 timing.document_timing->dom_content_loaded_event_start.value() |
200 .InMilliseconds(), | 208 .InMilliseconds(), |
201 1); | 209 1); |
202 | 210 |
203 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSLoad, 1); | 211 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSLoad, 1); |
204 histogram_tester().ExpectBucketCount( | 212 histogram_tester().ExpectBucketCount( |
205 internal::kHistogramFromGWSLoad, | 213 internal::kHistogramFromGWSLoad, |
206 timing.document_timing.load_event_start.value().InMilliseconds(), 1); | 214 timing.document_timing->load_event_start.value().InMilliseconds(), 1); |
207 } | 215 } |
208 | 216 |
209 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchPreviousCommittedUrl2) { | 217 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchPreviousCommittedUrl2) { |
210 page_load_metrics::PageLoadTiming timing; | 218 page_load_metrics::mojom::PageLoadTiming timing; |
| 219 page_load_metrics::InitPageLoadTimingForTest(&timing); |
211 timing.navigation_start = base::Time::FromDoubleT(1); | 220 timing.navigation_start = base::Time::FromDoubleT(1); |
212 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 221 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
213 PopulateRequiredTimingFields(&timing); | 222 PopulateRequiredTimingFields(&timing); |
214 NavigateAndCommit(GURL("https://www.google.com/#q=test")); | 223 NavigateAndCommit(GURL("https://www.google.com/#q=test")); |
215 NavigateAndCommit(GURL(kExampleUrl)); | 224 NavigateAndCommit(GURL(kExampleUrl)); |
216 | 225 |
217 SimulateTimingUpdate(timing); | 226 SimulateTimingUpdate(timing); |
218 | 227 |
219 // Navigate again to force logging. | 228 // Navigate again to force logging. |
220 NavigateAndCommit(GURL("http://www.final.com")); | 229 NavigateAndCommit(GURL("http://www.final.com")); |
221 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 230 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
222 1); | 231 1); |
223 histogram_tester().ExpectBucketCount( | 232 histogram_tester().ExpectBucketCount( |
224 internal::kHistogramFromGWSFirstTextPaint, | 233 internal::kHistogramFromGWSFirstTextPaint, |
225 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 234 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
226 } | 235 } |
227 | 236 |
228 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchPreviousCommittedUrl3) { | 237 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchPreviousCommittedUrl3) { |
229 page_load_metrics::PageLoadTiming timing; | 238 page_load_metrics::mojom::PageLoadTiming timing; |
| 239 page_load_metrics::InitPageLoadTimingForTest(&timing); |
230 timing.navigation_start = base::Time::FromDoubleT(1); | 240 timing.navigation_start = base::Time::FromDoubleT(1); |
231 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 241 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
232 PopulateRequiredTimingFields(&timing); | 242 PopulateRequiredTimingFields(&timing); |
233 NavigateAndCommit(GURL("https://www.google.com/webhp#q=test")); | 243 NavigateAndCommit(GURL("https://www.google.com/webhp#q=test")); |
234 NavigateAndCommit(GURL(kExampleUrl)); | 244 NavigateAndCommit(GURL(kExampleUrl)); |
235 | 245 |
236 SimulateTimingUpdate(timing); | 246 SimulateTimingUpdate(timing); |
237 | 247 |
238 // Navigate again to force logging. | 248 // Navigate again to force logging. |
239 NavigateAndCommit(GURL("http://www.final.com")); | 249 NavigateAndCommit(GURL("http://www.final.com")); |
240 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 250 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
241 1); | 251 1); |
242 histogram_tester().ExpectBucketCount( | 252 histogram_tester().ExpectBucketCount( |
243 internal::kHistogramFromGWSFirstTextPaint, | 253 internal::kHistogramFromGWSFirstTextPaint, |
244 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 254 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
245 } | 255 } |
246 | 256 |
247 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchPreviousCommittedUrl4) { | 257 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchPreviousCommittedUrl4) { |
248 page_load_metrics::PageLoadTiming timing; | 258 page_load_metrics::mojom::PageLoadTiming timing; |
| 259 page_load_metrics::InitPageLoadTimingForTest(&timing); |
249 timing.navigation_start = base::Time::FromDoubleT(1); | 260 timing.navigation_start = base::Time::FromDoubleT(1); |
250 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 261 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
251 PopulateRequiredTimingFields(&timing); | 262 PopulateRequiredTimingFields(&timing); |
252 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); | 263 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); |
253 NavigateAndCommit(GURL(kExampleUrl)); | 264 NavigateAndCommit(GURL(kExampleUrl)); |
254 | 265 |
255 SimulateTimingUpdate(timing); | 266 SimulateTimingUpdate(timing); |
256 | 267 |
257 // Navigate again to force logging. | 268 // Navigate again to force logging. |
258 NavigateAndCommit(GURL("http://www.final.com")); | 269 NavigateAndCommit(GURL("http://www.final.com")); |
259 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 270 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
260 1); | 271 1); |
261 histogram_tester().ExpectBucketCount( | 272 histogram_tester().ExpectBucketCount( |
262 internal::kHistogramFromGWSFirstTextPaint, | 273 internal::kHistogramFromGWSFirstTextPaint, |
263 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 274 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
264 } | 275 } |
265 | 276 |
266 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchToNonSearchToOtherPage) { | 277 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchToNonSearchToOtherPage) { |
267 page_load_metrics::PageLoadTiming timing; | 278 page_load_metrics::mojom::PageLoadTiming timing; |
| 279 page_load_metrics::InitPageLoadTimingForTest(&timing); |
268 timing.navigation_start = base::Time::FromDoubleT(1); | 280 timing.navigation_start = base::Time::FromDoubleT(1); |
269 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 281 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
270 page_load_metrics::PageLoadTiming timing2; | 282 page_load_metrics::mojom::PageLoadTiming timing2; |
| 283 page_load_metrics::InitPageLoadTimingForTest(&timing2); |
271 timing2.navigation_start = base::Time::FromDoubleT(2); | 284 timing2.navigation_start = base::Time::FromDoubleT(2); |
272 timing2.paint_timing.first_text_paint = | 285 timing2.paint_timing->first_text_paint = |
273 base::TimeDelta::FromMilliseconds(100); | 286 base::TimeDelta::FromMilliseconds(100); |
274 PopulateRequiredTimingFields(&timing); | 287 PopulateRequiredTimingFields(&timing); |
275 PopulateRequiredTimingFields(&timing2); | 288 PopulateRequiredTimingFields(&timing2); |
276 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); | 289 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); |
277 NavigateAndCommit(GURL(kExampleUrl)); | 290 NavigateAndCommit(GURL(kExampleUrl)); |
278 SimulateTimingUpdate(timing); | 291 SimulateTimingUpdate(timing); |
279 NavigateAndCommit(GURL("http://www.example.com/other")); | 292 NavigateAndCommit(GURL("http://www.example.com/other")); |
280 SimulateTimingUpdate(timing2); | 293 SimulateTimingUpdate(timing2); |
281 | 294 |
282 // Navigate again to force logging. We expect to log timing for the page | 295 // Navigate again to force logging. We expect to log timing for the page |
283 // navigated from search, but not for the page navigated from that page. | 296 // navigated from search, but not for the page navigated from that page. |
284 NavigateAndCommit(GURL("http://www.final.com")); | 297 NavigateAndCommit(GURL("http://www.final.com")); |
285 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 298 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
286 1); | 299 1); |
287 histogram_tester().ExpectBucketCount( | 300 histogram_tester().ExpectBucketCount( |
288 internal::kHistogramFromGWSFirstTextPaint, | 301 internal::kHistogramFromGWSFirstTextPaint, |
289 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 302 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
290 } | 303 } |
291 | 304 |
292 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchToNonSearchToSearch) { | 305 TEST_F(FromGWSPageLoadMetricsObserverTest, SearchToNonSearchToSearch) { |
293 page_load_metrics::PageLoadTiming timing; | 306 page_load_metrics::mojom::PageLoadTiming timing; |
| 307 page_load_metrics::InitPageLoadTimingForTest(&timing); |
294 timing.navigation_start = base::Time::FromDoubleT(1); | 308 timing.navigation_start = base::Time::FromDoubleT(1); |
295 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 309 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
296 page_load_metrics::PageLoadTiming timing2; | 310 page_load_metrics::mojom::PageLoadTiming timing2; |
| 311 page_load_metrics::InitPageLoadTimingForTest(&timing2); |
297 timing2.navigation_start = base::Time::FromDoubleT(2); | 312 timing2.navigation_start = base::Time::FromDoubleT(2); |
298 timing2.paint_timing.first_text_paint = | 313 timing2.paint_timing->first_text_paint = |
299 base::TimeDelta::FromMilliseconds(100); | 314 base::TimeDelta::FromMilliseconds(100); |
300 PopulateRequiredTimingFields(&timing); | 315 PopulateRequiredTimingFields(&timing); |
301 PopulateRequiredTimingFields(&timing2); | 316 PopulateRequiredTimingFields(&timing2); |
302 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); | 317 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); |
303 NavigateAndCommit(GURL(kExampleUrl)); | 318 NavigateAndCommit(GURL(kExampleUrl)); |
304 SimulateTimingUpdate(timing); | 319 SimulateTimingUpdate(timing); |
305 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); | 320 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); |
306 SimulateTimingUpdate(timing2); | 321 SimulateTimingUpdate(timing2); |
307 | 322 |
308 // Navigate again to force logging. We expect to log timing for the page | 323 // Navigate again to force logging. We expect to log timing for the page |
309 // navigated from search, but not for the search page we navigated to. | 324 // navigated from search, but not for the search page we navigated to. |
310 NavigateAndCommit(GURL("http://www.final.com")); | 325 NavigateAndCommit(GURL("http://www.final.com")); |
311 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 326 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
312 1); | 327 1); |
313 histogram_tester().ExpectBucketCount( | 328 histogram_tester().ExpectBucketCount( |
314 internal::kHistogramFromGWSFirstTextPaint, | 329 internal::kHistogramFromGWSFirstTextPaint, |
315 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 330 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
316 } | 331 } |
317 | 332 |
318 TEST_F(FromGWSPageLoadMetricsObserverTest, | 333 TEST_F(FromGWSPageLoadMetricsObserverTest, |
319 SearchToNonSearchToSearchToNonSearch) { | 334 SearchToNonSearchToSearchToNonSearch) { |
320 page_load_metrics::PageLoadTiming timing; | 335 page_load_metrics::mojom::PageLoadTiming timing; |
| 336 page_load_metrics::InitPageLoadTimingForTest(&timing); |
321 timing.navigation_start = base::Time::FromDoubleT(1); | 337 timing.navigation_start = base::Time::FromDoubleT(1); |
322 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 338 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
323 page_load_metrics::PageLoadTiming timing2; | 339 page_load_metrics::mojom::PageLoadTiming timing2; |
| 340 page_load_metrics::InitPageLoadTimingForTest(&timing2); |
324 timing2.navigation_start = base::Time::FromDoubleT(2); | 341 timing2.navigation_start = base::Time::FromDoubleT(2); |
325 timing2.paint_timing.first_text_paint = | 342 timing2.paint_timing->first_text_paint = |
326 base::TimeDelta::FromMilliseconds(100); | 343 base::TimeDelta::FromMilliseconds(100); |
327 page_load_metrics::PageLoadTiming timing3; | 344 page_load_metrics::mojom::PageLoadTiming timing3; |
| 345 page_load_metrics::InitPageLoadTimingForTest(&timing3); |
328 timing3.navigation_start = base::Time::FromDoubleT(3); | 346 timing3.navigation_start = base::Time::FromDoubleT(3); |
329 timing3.paint_timing.first_text_paint = | 347 timing3.paint_timing->first_text_paint = |
330 base::TimeDelta::FromMilliseconds(1000); | 348 base::TimeDelta::FromMilliseconds(1000); |
331 PopulateRequiredTimingFields(&timing); | 349 PopulateRequiredTimingFields(&timing); |
332 PopulateRequiredTimingFields(&timing2); | 350 PopulateRequiredTimingFields(&timing2); |
333 PopulateRequiredTimingFields(&timing3); | 351 PopulateRequiredTimingFields(&timing3); |
334 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); | 352 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); |
335 NavigateAndCommit(GURL(kExampleUrl)); | 353 NavigateAndCommit(GURL(kExampleUrl)); |
336 SimulateTimingUpdate(timing); | 354 SimulateTimingUpdate(timing); |
337 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); | 355 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); |
338 SimulateTimingUpdate(timing2); | 356 SimulateTimingUpdate(timing2); |
339 NavigateAndCommit(GURL(kExampleUrl)); | 357 NavigateAndCommit(GURL(kExampleUrl)); |
340 SimulateTimingUpdate(timing3); | 358 SimulateTimingUpdate(timing3); |
341 | 359 |
342 // Navigate again to force logging. We expect to log timing for both pages | 360 // Navigate again to force logging. We expect to log timing for both pages |
343 // navigated from search, but not for the search pages we navigated to. | 361 // navigated from search, but not for the search pages we navigated to. |
344 NavigateAndCommit(GURL("http://www.final.com")); | 362 NavigateAndCommit(GURL("http://www.final.com")); |
345 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 363 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
346 2); | 364 2); |
347 histogram_tester().ExpectBucketCount( | 365 histogram_tester().ExpectBucketCount( |
348 internal::kHistogramFromGWSFirstTextPaint, | 366 internal::kHistogramFromGWSFirstTextPaint, |
349 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 367 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
350 histogram_tester().ExpectBucketCount( | 368 histogram_tester().ExpectBucketCount( |
351 internal::kHistogramFromGWSFirstTextPaint, | 369 internal::kHistogramFromGWSFirstTextPaint, |
352 timing3.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 370 timing3.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
353 } | 371 } |
354 | 372 |
355 TEST_F(FromGWSPageLoadMetricsObserverTest, | 373 TEST_F(FromGWSPageLoadMetricsObserverTest, |
356 SearchToNonSearchToSearchToNonSearchBackgrounded) { | 374 SearchToNonSearchToSearchToNonSearchBackgrounded) { |
357 page_load_metrics::PageLoadTiming timing; | 375 page_load_metrics::mojom::PageLoadTiming timing; |
| 376 page_load_metrics::InitPageLoadTimingForTest(&timing); |
358 timing.navigation_start = base::Time::FromDoubleT(1); | 377 timing.navigation_start = base::Time::FromDoubleT(1); |
359 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 378 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
360 page_load_metrics::PageLoadTiming timing2; | 379 page_load_metrics::mojom::PageLoadTiming timing2; |
| 380 page_load_metrics::InitPageLoadTimingForTest(&timing2); |
361 timing2.navigation_start = base::Time::FromDoubleT(2); | 381 timing2.navigation_start = base::Time::FromDoubleT(2); |
362 timing2.paint_timing.first_text_paint = | 382 timing2.paint_timing->first_text_paint = |
363 base::TimeDelta::FromMilliseconds(100); | 383 base::TimeDelta::FromMilliseconds(100); |
364 page_load_metrics::PageLoadTiming timing3; | 384 page_load_metrics::mojom::PageLoadTiming timing3; |
| 385 page_load_metrics::InitPageLoadTimingForTest(&timing3); |
365 timing3.navigation_start = base::Time::FromDoubleT(3); | 386 timing3.navigation_start = base::Time::FromDoubleT(3); |
366 timing3.paint_timing.first_text_paint = | 387 timing3.paint_timing->first_text_paint = |
367 base::TimeDelta::FromMilliseconds(1000); | 388 base::TimeDelta::FromMilliseconds(1000); |
368 PopulateRequiredTimingFields(&timing); | 389 PopulateRequiredTimingFields(&timing); |
369 PopulateRequiredTimingFields(&timing2); | 390 PopulateRequiredTimingFields(&timing2); |
370 PopulateRequiredTimingFields(&timing3); | 391 PopulateRequiredTimingFields(&timing3); |
371 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); | 392 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); |
372 NavigateAndCommit(GURL(kExampleUrl)); | 393 NavigateAndCommit(GURL(kExampleUrl)); |
373 SimulateTimingUpdate(timing); | 394 SimulateTimingUpdate(timing); |
374 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); | 395 NavigateAndCommit(GURL("https://www.google.co.uk/search#q=test")); |
375 web_contents()->WasHidden(); | 396 web_contents()->WasHidden(); |
376 SimulateTimingUpdate(timing2); | 397 SimulateTimingUpdate(timing2); |
377 NavigateAndCommit(GURL(kExampleUrl)); | 398 NavigateAndCommit(GURL(kExampleUrl)); |
378 SimulateTimingUpdate(timing3); | 399 SimulateTimingUpdate(timing3); |
379 | 400 |
380 // Navigate again to force logging. We expect to log timing for the first page | 401 // Navigate again to force logging. We expect to log timing for the first page |
381 // navigated from search, but not the second since it was backgrounded. | 402 // navigated from search, but not the second since it was backgrounded. |
382 NavigateAndCommit(GURL("http://www.final.com")); | 403 NavigateAndCommit(GURL("http://www.final.com")); |
383 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 404 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
384 1); | 405 1); |
385 histogram_tester().ExpectBucketCount( | 406 histogram_tester().ExpectBucketCount( |
386 internal::kHistogramFromGWSFirstTextPaint, | 407 internal::kHistogramFromGWSFirstTextPaint, |
387 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 408 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
388 } | 409 } |
389 | 410 |
390 TEST_F(FromGWSPageLoadMetricsObserverTest, | 411 TEST_F(FromGWSPageLoadMetricsObserverTest, |
391 SearchRedirectorPreviousCommittedUrl) { | 412 SearchRedirectorPreviousCommittedUrl) { |
392 page_load_metrics::PageLoadTiming timing; | 413 page_load_metrics::mojom::PageLoadTiming timing; |
| 414 page_load_metrics::InitPageLoadTimingForTest(&timing); |
393 timing.navigation_start = base::Time::FromDoubleT(1); | 415 timing.navigation_start = base::Time::FromDoubleT(1); |
394 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 416 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
395 PopulateRequiredTimingFields(&timing); | 417 PopulateRequiredTimingFields(&timing); |
396 NavigateAndCommit(GURL("https://www.google.com/search#q=test")); | 418 NavigateAndCommit(GURL("https://www.google.com/search#q=test")); |
397 NavigateAndCommit(GURL("https://www.google.com/url?source=web")); | 419 NavigateAndCommit(GURL("https://www.google.com/url?source=web")); |
398 NavigateAndCommit(GURL(kExampleUrl)); | 420 NavigateAndCommit(GURL(kExampleUrl)); |
399 | 421 |
400 SimulateTimingUpdate(timing); | 422 SimulateTimingUpdate(timing); |
401 | 423 |
402 // Navigate again to force logging. | 424 // Navigate again to force logging. |
403 NavigateAndCommit(GURL("http://www.final.com")); | 425 NavigateAndCommit(GURL("http://www.final.com")); |
404 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 426 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
405 1); | 427 1); |
406 histogram_tester().ExpectBucketCount( | 428 histogram_tester().ExpectBucketCount( |
407 internal::kHistogramFromGWSFirstTextPaint, | 429 internal::kHistogramFromGWSFirstTextPaint, |
408 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 430 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
409 } | 431 } |
410 | 432 |
411 TEST_F(FromGWSPageLoadMetricsObserverTest, | 433 TEST_F(FromGWSPageLoadMetricsObserverTest, |
412 NonSearchRedirectorPreviousCommittedUrl) { | 434 NonSearchRedirectorPreviousCommittedUrl) { |
413 page_load_metrics::PageLoadTiming timing; | 435 page_load_metrics::mojom::PageLoadTiming timing; |
| 436 page_load_metrics::InitPageLoadTimingForTest(&timing); |
414 timing.navigation_start = base::Time::FromDoubleT(1); | 437 timing.navigation_start = base::Time::FromDoubleT(1); |
415 timing.paint_timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 438 timing.paint_timing->first_text_paint = base::TimeDelta::FromMilliseconds(1); |
416 PopulateRequiredTimingFields(&timing); | 439 PopulateRequiredTimingFields(&timing); |
417 NavigateAndCommit(GURL("https://www.google.com/webhp?q=test")); | 440 NavigateAndCommit(GURL("https://www.google.com/webhp?q=test")); |
418 NavigateAndCommit(GURL("https://www.google.com/url?a=b&c=d")); | 441 NavigateAndCommit(GURL("https://www.google.com/url?a=b&c=d")); |
419 NavigateAndCommit(GURL(kExampleUrl)); | 442 NavigateAndCommit(GURL(kExampleUrl)); |
420 | 443 |
421 SimulateTimingUpdate(timing); | 444 SimulateTimingUpdate(timing); |
422 | 445 |
423 // Navigate again to force logging. | 446 // Navigate again to force logging. |
424 NavigateAndCommit(GURL("http://www.final.com")); | 447 NavigateAndCommit(GURL("http://www.final.com")); |
425 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, | 448 histogram_tester().ExpectTotalCount(internal::kHistogramFromGWSFirstTextPaint, |
426 0); | 449 0); |
427 } | 450 } |
428 | 451 |
429 TEST_F(FromGWSPageLoadMetricsObserverTest, | 452 TEST_F(FromGWSPageLoadMetricsObserverTest, |
430 SearchPreviousCommittedUrlBackgroundLater) { | 453 SearchPreviousCommittedUrlBackgroundLater) { |
431 page_load_metrics::PageLoadTiming timing; | 454 page_load_metrics::mojom::PageLoadTiming timing; |
| 455 page_load_metrics::InitPageLoadTimingForTest(&timing); |
432 timing.navigation_start = base::Time::FromDoubleT(1); | 456 timing.navigation_start = base::Time::FromDoubleT(1); |
433 timing.paint_timing.first_text_paint = base::TimeDelta::FromMicroseconds(1); | 457 timing.paint_timing->first_text_paint = base::TimeDelta::FromMicroseconds(1); |
434 PopulateRequiredTimingFields(&timing); | 458 PopulateRequiredTimingFields(&timing); |
435 | 459 |
436 NavigateAndCommit(GURL("https://www.google.com/search#q=test")); | 460 NavigateAndCommit(GURL("https://www.google.com/search#q=test")); |
437 NavigateAndCommit(GURL(kExampleUrl)); | 461 NavigateAndCommit(GURL(kExampleUrl)); |
438 | 462 |
439 web_contents()->WasHidden(); | 463 web_contents()->WasHidden(); |
440 SimulateTimingUpdate(timing); | 464 SimulateTimingUpdate(timing); |
441 | 465 |
442 page_load_metrics::PageLoadExtraInfo info = | 466 page_load_metrics::PageLoadExtraInfo info = |
443 GetPageLoadExtraInfoForCommittedLoad(); | 467 GetPageLoadExtraInfoForCommittedLoad(); |
444 | 468 |
445 // If the system clock is low resolution PageLoadTracker's background_time_ | 469 // If the system clock is low resolution PageLoadTracker's background_time_ |
446 // may be < timing.first_text_paint. | 470 // may be < timing.first_text_paint. |
447 if (page_load_metrics::WasStartedInForegroundOptionalEventInForeground( | 471 if (page_load_metrics::WasStartedInForegroundOptionalEventInForeground( |
448 timing.paint_timing.first_text_paint, info)) { | 472 timing.paint_timing->first_text_paint, info)) { |
449 histogram_tester().ExpectTotalCount( | 473 histogram_tester().ExpectTotalCount( |
450 internal::kHistogramFromGWSFirstTextPaint, 1); | 474 internal::kHistogramFromGWSFirstTextPaint, 1); |
451 histogram_tester().ExpectBucketCount( | 475 histogram_tester().ExpectBucketCount( |
452 internal::kHistogramFromGWSFirstTextPaint, | 476 internal::kHistogramFromGWSFirstTextPaint, |
453 timing.paint_timing.first_text_paint.value().InMilliseconds(), 1); | 477 timing.paint_timing->first_text_paint.value().InMilliseconds(), 1); |
454 } else { | 478 } else { |
455 histogram_tester().ExpectTotalCount( | 479 histogram_tester().ExpectTotalCount( |
456 internal::kHistogramFromGWSFirstTextPaint, 0); | 480 internal::kHistogramFromGWSFirstTextPaint, 0); |
457 } | 481 } |
458 } | 482 } |
459 | 483 |
460 TEST_F(FromGWSPageLoadMetricsObserverTest, NewNavigationBeforeCommit) { | 484 TEST_F(FromGWSPageLoadMetricsObserverTest, NewNavigationBeforeCommit) { |
461 NavigateAndCommit(GURL(kGoogleSearchResultsUrl)); | 485 NavigateAndCommit(GURL(kGoogleSearchResultsUrl)); |
462 StartNavigation(GURL("http://example.test")); | 486 StartNavigation(GURL("http://example.test")); |
463 | 487 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 TEST_F(FromGWSPageLoadMetricsObserverTest, NoAbortNewNavigationFromAboutURL) { | 628 TEST_F(FromGWSPageLoadMetricsObserverTest, NoAbortNewNavigationFromAboutURL) { |
605 NavigateAndCommit(GURL(kGoogleSearchResultsUrl)); | 629 NavigateAndCommit(GURL(kGoogleSearchResultsUrl)); |
606 NavigateAndCommit(GURL("about:blank")); | 630 NavigateAndCommit(GURL("about:blank")); |
607 NavigateAndCommit(GURL("https://www.example.com")); | 631 NavigateAndCommit(GURL("https://www.example.com")); |
608 histogram_tester().ExpectTotalCount( | 632 histogram_tester().ExpectTotalCount( |
609 internal::kHistogramFromGWSAbortNewNavigationBeforePaint, 0); | 633 internal::kHistogramFromGWSAbortNewNavigationBeforePaint, 0); |
610 } | 634 } |
611 | 635 |
612 TEST_F(FromGWSPageLoadMetricsObserverTest, NoAbortNewNavigationAfterPaint) { | 636 TEST_F(FromGWSPageLoadMetricsObserverTest, NoAbortNewNavigationAfterPaint) { |
613 NavigateAndCommit(GURL(kGoogleSearchResultsUrl)); | 637 NavigateAndCommit(GURL(kGoogleSearchResultsUrl)); |
614 page_load_metrics::PageLoadTiming timing; | 638 page_load_metrics::mojom::PageLoadTiming timing; |
| 639 page_load_metrics::InitPageLoadTimingForTest(&timing); |
615 timing.navigation_start = base::Time::FromDoubleT(1); | 640 timing.navigation_start = base::Time::FromDoubleT(1); |
616 timing.paint_timing.first_paint = base::TimeDelta::FromMicroseconds(1); | 641 timing.paint_timing->first_paint = base::TimeDelta::FromMicroseconds(1); |
617 PopulateRequiredTimingFields(&timing); | 642 PopulateRequiredTimingFields(&timing); |
618 NavigateAndCommit(GURL("https://example.test")); | 643 NavigateAndCommit(GURL("https://example.test")); |
619 SimulateTimingUpdate(timing); | 644 SimulateTimingUpdate(timing); |
620 | 645 |
621 // The test cannot assume that abort time will be > first_paint | 646 // The test cannot assume that abort time will be > first_paint |
622 // (1 micro-sec). If the system clock is low resolution, PageLoadTracker's | 647 // (1 micro-sec). If the system clock is low resolution, PageLoadTracker's |
623 // abort time may be <= first_paint. In that case the histogram will be | 648 // abort time may be <= first_paint. In that case the histogram will be |
624 // logged. Thus both 0 and 1 counts of histograms are considered good. | 649 // logged. Thus both 0 and 1 counts of histograms are considered good. |
625 | 650 |
626 NavigateAndCommit(GURL("https://example.test2")); | 651 NavigateAndCommit(GURL("https://example.test2")); |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
927 logger.ShouldLogPostCommitMetrics(GURL("https://www.google.com/about/"))); | 952 logger.ShouldLogPostCommitMetrics(GURL("https://www.google.com/about/"))); |
928 } | 953 } |
929 | 954 |
930 TEST_F(FromGWSPageLoadMetricsLoggerTest, NavigationFromSearchRedirector) { | 955 TEST_F(FromGWSPageLoadMetricsLoggerTest, NavigationFromSearchRedirector) { |
931 FromGWSPageLoadMetricsLogger logger; | 956 FromGWSPageLoadMetricsLogger logger; |
932 logger.SetPreviouslyCommittedUrl( | 957 logger.SetPreviouslyCommittedUrl( |
933 GURL("https://www.google.com/url?source=web")); | 958 GURL("https://www.google.com/url?source=web")); |
934 logger.set_navigation_initiated_via_link(true); | 959 logger.set_navigation_initiated_via_link(true); |
935 ASSERT_TRUE(logger.ShouldLogPostCommitMetrics(GURL(kExampleUrl))); | 960 ASSERT_TRUE(logger.ShouldLogPostCommitMetrics(GURL(kExampleUrl))); |
936 } | 961 } |
OLD | NEW |