| 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 |