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

Side by Side Diff: chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_unittest.cc

Issue 2874663005: [Page Load Metrics] Add mojom file to page load metrics. (Closed)
Patch Set: Remove unnecessary variable Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/page_load_metrics/observers/data_reduction_proxy_metric s_observer.h" 5 #include "chrome/browser/page_load_metrics/observers/data_reduction_proxy_metric s_observer.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <functional> 9 #include <functional>
10 #include <memory> 10 #include <memory>
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 133
134 class DataReductionProxyMetricsObserverTest 134 class DataReductionProxyMetricsObserverTest
135 : public page_load_metrics::PageLoadMetricsObserverTestHarness { 135 : public page_load_metrics::PageLoadMetricsObserverTestHarness {
136 public: 136 public:
137 DataReductionProxyMetricsObserverTest() 137 DataReductionProxyMetricsObserverTest()
138 : pingback_client_(new TestPingbackClient()), 138 : pingback_client_(new TestPingbackClient()),
139 data_reduction_proxy_used_(false), 139 data_reduction_proxy_used_(false),
140 is_using_lofi_(false) {} 140 is_using_lofi_(false) {}
141 141
142 void ResetTest() { 142 void ResetTest() {
143 page_load_metrics::InitPageLoadTimingForTest(&timing_);
143 // Reset to the default testing state. Does not reset histogram state. 144 // Reset to the default testing state. Does not reset histogram state.
144 timing_.navigation_start = base::Time::FromDoubleT(1); 145 timing_.navigation_start = base::Time::FromDoubleT(1);
145 timing_.response_start = base::TimeDelta::FromSeconds(2); 146 timing_.response_start = base::TimeDelta::FromSeconds(2);
146 timing_.parse_timing.parse_start = base::TimeDelta::FromSeconds(3); 147 timing_.parse_timing->parse_start = base::TimeDelta::FromSeconds(3);
147 timing_.paint_timing.first_contentful_paint = 148 timing_.paint_timing->first_contentful_paint =
148 base::TimeDelta::FromSeconds(4); 149 base::TimeDelta::FromSeconds(4);
149 timing_.paint_timing.first_paint = base::TimeDelta::FromSeconds(4); 150 timing_.paint_timing->first_paint = base::TimeDelta::FromSeconds(4);
150 timing_.paint_timing.first_meaningful_paint = 151 timing_.paint_timing->first_meaningful_paint =
151 base::TimeDelta::FromSeconds(8); 152 base::TimeDelta::FromSeconds(8);
152 timing_.paint_timing.first_image_paint = base::TimeDelta::FromSeconds(5); 153 timing_.paint_timing->first_image_paint = base::TimeDelta::FromSeconds(5);
153 timing_.paint_timing.first_text_paint = base::TimeDelta::FromSeconds(6); 154 timing_.paint_timing->first_text_paint = base::TimeDelta::FromSeconds(6);
154 timing_.document_timing.load_event_start = base::TimeDelta::FromSeconds(7); 155 timing_.document_timing->load_event_start = base::TimeDelta::FromSeconds(7);
155 timing_.parse_timing.parse_stop = base::TimeDelta::FromSeconds(4); 156 timing_.parse_timing->parse_stop = base::TimeDelta::FromSeconds(4);
156 timing_.parse_timing.parse_blocked_on_script_load_duration = 157 timing_.parse_timing->parse_blocked_on_script_load_duration =
157 base::TimeDelta::FromSeconds(1); 158 base::TimeDelta::FromSeconds(1);
158 PopulateRequiredTimingFields(&timing_); 159 PopulateRequiredTimingFields(&timing_);
159 } 160 }
160 161
161 void RunTest(bool data_reduction_proxy_used, bool is_using_lofi) { 162 void RunTest(bool data_reduction_proxy_used, bool is_using_lofi) {
162 data_reduction_proxy_used_ = data_reduction_proxy_used; 163 data_reduction_proxy_used_ = data_reduction_proxy_used;
163 is_using_lofi_ = is_using_lofi; 164 is_using_lofi_ = is_using_lofi;
164 NavigateAndCommit(GURL(kDefaultTestUrl)); 165 NavigateAndCommit(GURL(kDefaultTestUrl));
165 SimulateTimingUpdate(timing_); 166 SimulateTimingUpdate(timing_);
166 pingback_client_->Reset(); 167 pingback_client_->Reset();
(...skipping 14 matching lines...) Expand all
181 } else { 182 } else {
182 EXPECT_TRUE(!expected); 183 EXPECT_TRUE(!expected);
183 EXPECT_TRUE(!actual); 184 EXPECT_TRUE(!actual);
184 } 185 }
185 } 186 }
186 187
187 void ValidateTimes() { 188 void ValidateTimes() {
188 EXPECT_TRUE(pingback_client_->send_pingback_called()); 189 EXPECT_TRUE(pingback_client_->send_pingback_called());
189 EXPECT_EQ(timing_.navigation_start, 190 EXPECT_EQ(timing_.navigation_start,
190 pingback_client_->timing()->navigation_start); 191 pingback_client_->timing()->navigation_start);
191 ExpectEqualOrUnset(timing_.paint_timing.first_contentful_paint, 192 ExpectEqualOrUnset(timing_.paint_timing->first_contentful_paint,
192 pingback_client_->timing()->first_contentful_paint); 193 pingback_client_->timing()->first_contentful_paint);
193 ExpectEqualOrUnset( 194 ExpectEqualOrUnset(
194 timing_.paint_timing.first_meaningful_paint, 195 timing_.paint_timing->first_meaningful_paint,
195 pingback_client_->timing()->experimental_first_meaningful_paint); 196 pingback_client_->timing()->experimental_first_meaningful_paint);
196 ExpectEqualOrUnset(timing_.response_start, 197 ExpectEqualOrUnset(timing_.response_start,
197 pingback_client_->timing()->response_start); 198 pingback_client_->timing()->response_start);
198 ExpectEqualOrUnset(timing_.document_timing.load_event_start, 199 ExpectEqualOrUnset(timing_.document_timing->load_event_start,
199 pingback_client_->timing()->load_event_start); 200 pingback_client_->timing()->load_event_start);
200 ExpectEqualOrUnset(timing_.paint_timing.first_image_paint, 201 ExpectEqualOrUnset(timing_.paint_timing->first_image_paint,
201 pingback_client_->timing()->first_image_paint); 202 pingback_client_->timing()->first_image_paint);
202 } 203 }
203 204
204 void ValidateLoFiInPingback(bool lofi_expected) { 205 void ValidateLoFiInPingback(bool lofi_expected) {
205 EXPECT_TRUE(pingback_client_->send_pingback_called()); 206 EXPECT_TRUE(pingback_client_->send_pingback_called());
206 EXPECT_EQ(lofi_expected, pingback_client_->data().lofi_received()); 207 EXPECT_EQ(lofi_expected, pingback_client_->data().lofi_received());
207 } 208 }
208 209
209 void ValidateHistograms() { 210 void ValidateHistograms() {
210 ValidateHistogramsForSuffix( 211 ValidateHistogramsForSuffix(
211 internal::kHistogramDOMContentLoadedEventFiredSuffix, 212 internal::kHistogramDOMContentLoadedEventFiredSuffix,
212 timing_.document_timing.dom_content_loaded_event_start); 213 timing_.document_timing->dom_content_loaded_event_start);
213 ValidateHistogramsForSuffix(internal::kHistogramFirstLayoutSuffix, 214 ValidateHistogramsForSuffix(internal::kHistogramFirstLayoutSuffix,
214 timing_.document_timing.first_layout); 215 timing_.document_timing->first_layout);
215 ValidateHistogramsForSuffix(internal::kHistogramLoadEventFiredSuffix, 216 ValidateHistogramsForSuffix(internal::kHistogramLoadEventFiredSuffix,
216 timing_.document_timing.load_event_start); 217 timing_.document_timing->load_event_start);
217 ValidateHistogramsForSuffix(internal::kHistogramFirstContentfulPaintSuffix, 218 ValidateHistogramsForSuffix(internal::kHistogramFirstContentfulPaintSuffix,
218 timing_.paint_timing.first_contentful_paint); 219 timing_.paint_timing->first_contentful_paint);
219 ValidateHistogramsForSuffix(internal::kHistogramFirstMeaningfulPaintSuffix, 220 ValidateHistogramsForSuffix(internal::kHistogramFirstMeaningfulPaintSuffix,
220 timing_.paint_timing.first_meaningful_paint); 221 timing_.paint_timing->first_meaningful_paint);
221 ValidateHistogramsForSuffix(internal::kHistogramFirstImagePaintSuffix, 222 ValidateHistogramsForSuffix(internal::kHistogramFirstImagePaintSuffix,
222 timing_.paint_timing.first_image_paint); 223 timing_.paint_timing->first_image_paint);
223 ValidateHistogramsForSuffix(internal::kHistogramFirstPaintSuffix, 224 ValidateHistogramsForSuffix(internal::kHistogramFirstPaintSuffix,
224 timing_.paint_timing.first_paint); 225 timing_.paint_timing->first_paint);
225 ValidateHistogramsForSuffix(internal::kHistogramFirstTextPaintSuffix, 226 ValidateHistogramsForSuffix(internal::kHistogramFirstTextPaintSuffix,
226 timing_.paint_timing.first_text_paint); 227 timing_.paint_timing->first_text_paint);
227 ValidateHistogramsForSuffix(internal::kHistogramParseStartSuffix, 228 ValidateHistogramsForSuffix(internal::kHistogramParseStartSuffix,
228 timing_.parse_timing.parse_start); 229 timing_.parse_timing->parse_start);
229 ValidateHistogramsForSuffix( 230 ValidateHistogramsForSuffix(
230 internal::kHistogramParseBlockedOnScriptLoadSuffix, 231 internal::kHistogramParseBlockedOnScriptLoadSuffix,
231 timing_.parse_timing.parse_blocked_on_script_load_duration); 232 timing_.parse_timing->parse_blocked_on_script_load_duration);
232 ValidateHistogramsForSuffix(internal::kHistogramParseDurationSuffix, 233 ValidateHistogramsForSuffix(internal::kHistogramParseDurationSuffix,
233 timing_.parse_timing.parse_stop.value() - 234 timing_.parse_timing->parse_stop.value() -
234 timing_.parse_timing.parse_start.value()); 235 timing_.parse_timing->parse_start.value());
235 } 236 }
236 237
237 void ValidateHistogramsForSuffix( 238 void ValidateHistogramsForSuffix(
238 const std::string& histogram_suffix, 239 const std::string& histogram_suffix,
239 const base::Optional<base::TimeDelta>& event) { 240 const base::Optional<base::TimeDelta>& event) {
240 histogram_tester().ExpectTotalCount( 241 histogram_tester().ExpectTotalCount(
241 std::string(internal::kHistogramDataReductionProxyPrefix) 242 std::string(internal::kHistogramDataReductionProxyPrefix)
242 .append(histogram_suffix), 243 .append(histogram_suffix),
243 data_reduction_proxy_used_ ? 1 : 0); 244 data_reduction_proxy_used_ ? 1 : 0);
244 histogram_tester().ExpectTotalCount( 245 histogram_tester().ExpectTotalCount(
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 336
336 protected: 337 protected:
337 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { 338 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override {
338 tracker->AddObserver( 339 tracker->AddObserver(
339 base::MakeUnique<TestDataReductionProxyMetricsObserver>( 340 base::MakeUnique<TestDataReductionProxyMetricsObserver>(
340 web_contents(), pingback_client_.get(), data_reduction_proxy_used_, 341 web_contents(), pingback_client_.get(), data_reduction_proxy_used_,
341 is_using_lofi_)); 342 is_using_lofi_));
342 } 343 }
343 344
344 std::unique_ptr<TestPingbackClient> pingback_client_; 345 std::unique_ptr<TestPingbackClient> pingback_client_;
345 page_load_metrics::PageLoadTiming timing_; 346 page_load_metrics::mojom::PageLoadTiming timing_;
346 347
347 private: 348 private:
348 bool data_reduction_proxy_used_; 349 bool data_reduction_proxy_used_;
349 bool is_using_lofi_; 350 bool is_using_lofi_;
350 351
351 DISALLOW_COPY_AND_ASSIGN(DataReductionProxyMetricsObserverTest); 352 DISALLOW_COPY_AND_ASSIGN(DataReductionProxyMetricsObserverTest);
352 }; 353 };
353 354
354 TEST_F(DataReductionProxyMetricsObserverTest, DataReductionProxyOff) { 355 TEST_F(DataReductionProxyMetricsObserverTest, DataReductionProxyOff) {
355 ResetTest(); 356 ResetTest();
(...skipping 21 matching lines...) Expand all
377 TEST_F(DataReductionProxyMetricsObserverTest, OnCompletePingback) { 378 TEST_F(DataReductionProxyMetricsObserverTest, OnCompletePingback) {
378 ResetTest(); 379 ResetTest();
379 // Verify that when data reduction proxy was used the correct timing 380 // Verify that when data reduction proxy was used the correct timing
380 // information is sent to SendPingback. 381 // information is sent to SendPingback.
381 RunTestAndNavigateToUntrackedUrl(true, false); 382 RunTestAndNavigateToUntrackedUrl(true, false);
382 ValidateTimes(); 383 ValidateTimes();
383 384
384 ResetTest(); 385 ResetTest();
385 // Verify that when data reduction proxy was used but first image paint is 386 // Verify that when data reduction proxy was used but first image paint is
386 // unset, the correct timing information is sent to SendPingback. 387 // unset, the correct timing information is sent to SendPingback.
387 timing_.paint_timing.first_image_paint = base::nullopt; 388 timing_.paint_timing->first_image_paint = base::nullopt;
388 RunTestAndNavigateToUntrackedUrl(true, false); 389 RunTestAndNavigateToUntrackedUrl(true, false);
389 ValidateTimes(); 390 ValidateTimes();
390 391
391 ResetTest(); 392 ResetTest();
392 // Verify that when data reduction proxy was used but first contentful paint 393 // Verify that when data reduction proxy was used but first contentful paint
393 // is unset, SendPingback is not called. 394 // is unset, SendPingback is not called.
394 timing_.paint_timing.first_contentful_paint = base::nullopt; 395 timing_.paint_timing->first_contentful_paint = base::nullopt;
395 RunTestAndNavigateToUntrackedUrl(true, false); 396 RunTestAndNavigateToUntrackedUrl(true, false);
396 ValidateTimes(); 397 ValidateTimes();
397 398
398 ResetTest(); 399 ResetTest();
399 // Verify that when data reduction proxy was used but first meaningful paint 400 // Verify that when data reduction proxy was used but first meaningful paint
400 // is unset, SendPingback is not called. 401 // is unset, SendPingback is not called.
401 timing_.paint_timing.first_meaningful_paint = base::nullopt; 402 timing_.paint_timing->first_meaningful_paint = base::nullopt;
402 RunTestAndNavigateToUntrackedUrl(true, false); 403 RunTestAndNavigateToUntrackedUrl(true, false);
403 ValidateTimes(); 404 ValidateTimes();
404 405
405 ResetTest(); 406 ResetTest();
406 // Verify that when data reduction proxy was used but load event start is 407 // Verify that when data reduction proxy was used but load event start is
407 // unset, SendPingback is not called. 408 // unset, SendPingback is not called.
408 timing_.document_timing.load_event_start = base::nullopt; 409 timing_.document_timing->load_event_start = base::nullopt;
409 RunTestAndNavigateToUntrackedUrl(true, false); 410 RunTestAndNavigateToUntrackedUrl(true, false);
410 ValidateTimes(); 411 ValidateTimes();
411 ValidateLoFiInPingback(false); 412 ValidateLoFiInPingback(false);
412 413
413 ResetTest(); 414 ResetTest();
414 415
415 std::unique_ptr<DataReductionProxyData> data = 416 std::unique_ptr<DataReductionProxyData> data =
416 base::MakeUnique<DataReductionProxyData>(); 417 base::MakeUnique<DataReductionProxyData>();
417 data->set_used_data_reduction_proxy(true); 418 data->set_used_data_reduction_proxy(true);
418 data->set_lofi_received(true); 419 data->set_lofi_received(true);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 } 562 }
562 } 563 }
563 564
564 NavigateToUntrackedUrl(); 565 NavigateToUntrackedUrl();
565 566
566 ValidateDataHistograms(network_resources, drp_resources, network_bytes, 567 ValidateDataHistograms(network_resources, drp_resources, network_bytes,
567 drp_bytes, ocl_bytes); 568 drp_bytes, ocl_bytes);
568 } 569 }
569 570
570 } // namespace data_reduction_proxy 571 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698