OLD | NEW |
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/lofi_page_load_metrics_obse
rver.h" | 5 #include "chrome/browser/page_load_metrics/observers/lofi_page_load_metrics_obse
rver.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/optional.h" | 10 #include "base/optional.h" |
11 #include "base/time/time.h" | 11 #include "base/time/time.h" |
12 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_
test_harness.h" | 12 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_
test_harness.h" |
13 #include "chrome/browser/page_load_metrics/page_load_metrics_observer.h" | 13 #include "chrome/browser/page_load_metrics/page_load_metrics_observer.h" |
14 #include "chrome/common/page_load_metrics/page_load_timing.h" | 14 #include "chrome/common/page_load_metrics/page_load_timing.h" |
15 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data
.h" | 15 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data
.h" |
16 | 16 |
17 namespace data_reduction_proxy { | 17 namespace data_reduction_proxy { |
18 | 18 |
19 namespace { | 19 namespace { |
20 | 20 |
21 const char kDefaultTestUrl[] = "https://www.google.com"; | 21 const char kDefaultTestUrl[] = "https://www.google.com"; |
22 | 22 |
23 class LoFiPageLoadMetricsObserverTest | 23 class LoFiPageLoadMetricsObserverTest |
24 : public page_load_metrics::PageLoadMetricsObserverTestHarness { | 24 : public page_load_metrics::PageLoadMetricsObserverTestHarness { |
25 public: | 25 public: |
26 LoFiPageLoadMetricsObserverTest() {} | 26 LoFiPageLoadMetricsObserverTest() {} |
27 ~LoFiPageLoadMetricsObserverTest() override {} | 27 ~LoFiPageLoadMetricsObserverTest() override {} |
28 | 28 |
29 void ResetTest() { | 29 void ResetTest() { |
| 30 page_load_metrics::InitPageLoadTimingForTest(&timing_); |
30 // Reset to the default testing state. Does not reset histogram state. | 31 // Reset to the default testing state. Does not reset histogram state. |
31 timing_.navigation_start = base::Time::FromDoubleT(1); | 32 timing_.navigation_start = base::Time::FromDoubleT(1); |
32 timing_.response_start = base::TimeDelta::FromSeconds(2); | 33 timing_.response_start = base::TimeDelta::FromSeconds(2); |
33 timing_.parse_timing.parse_start = base::TimeDelta::FromSeconds(3); | 34 timing_.parse_timing->parse_start = base::TimeDelta::FromSeconds(3); |
34 timing_.paint_timing.first_contentful_paint = | 35 timing_.paint_timing->first_contentful_paint = |
35 base::TimeDelta::FromSeconds(4); | 36 base::TimeDelta::FromSeconds(4); |
36 timing_.paint_timing.first_paint = base::TimeDelta::FromSeconds(4); | 37 timing_.paint_timing->first_paint = base::TimeDelta::FromSeconds(4); |
37 timing_.paint_timing.first_meaningful_paint = | 38 timing_.paint_timing->first_meaningful_paint = |
38 base::TimeDelta::FromSeconds(8); | 39 base::TimeDelta::FromSeconds(8); |
39 timing_.paint_timing.first_image_paint = base::TimeDelta::FromSeconds(5); | 40 timing_.paint_timing->first_image_paint = base::TimeDelta::FromSeconds(5); |
40 timing_.paint_timing.first_text_paint = base::TimeDelta::FromSeconds(6); | 41 timing_.paint_timing->first_text_paint = base::TimeDelta::FromSeconds(6); |
41 timing_.document_timing.load_event_start = base::TimeDelta::FromSeconds(7); | 42 timing_.document_timing->load_event_start = base::TimeDelta::FromSeconds(7); |
42 timing_.parse_timing.parse_stop = base::TimeDelta::FromSeconds(4); | 43 timing_.parse_timing->parse_stop = base::TimeDelta::FromSeconds(4); |
43 timing_.parse_timing.parse_blocked_on_script_load_duration = | 44 timing_.parse_timing->parse_blocked_on_script_load_duration = |
44 base::TimeDelta::FromSeconds(1); | 45 base::TimeDelta::FromSeconds(1); |
45 PopulateRequiredTimingFields(&timing_); | 46 PopulateRequiredTimingFields(&timing_); |
46 } | 47 } |
47 | 48 |
48 void RunTest() { | 49 void RunTest() { |
49 NavigateAndCommit(GURL(kDefaultTestUrl)); | 50 NavigateAndCommit(GURL(kDefaultTestUrl)); |
50 SimulateTimingUpdate(timing_); | 51 SimulateTimingUpdate(timing_); |
51 } | 52 } |
52 | 53 |
53 void ValidateTimingHistograms(bool lofi_request_sent) { | 54 void ValidateTimingHistograms(bool lofi_request_sent) { |
54 ValidateTimingHistogram(lofi_names::kNavigationToLoadEvent, | 55 ValidateTimingHistogram(lofi_names::kNavigationToLoadEvent, |
55 timing_.document_timing.load_event_start, | 56 timing_.document_timing->load_event_start, |
56 lofi_request_sent); | 57 lofi_request_sent); |
57 ValidateTimingHistogram(lofi_names::kNavigationToFirstContentfulPaint, | 58 ValidateTimingHistogram(lofi_names::kNavigationToFirstContentfulPaint, |
58 timing_.paint_timing.first_contentful_paint, | 59 timing_.paint_timing->first_contentful_paint, |
59 lofi_request_sent); | 60 lofi_request_sent); |
60 ValidateTimingHistogram(lofi_names::kNavigationToFirstMeaningfulPaint, | 61 ValidateTimingHistogram(lofi_names::kNavigationToFirstMeaningfulPaint, |
61 timing_.paint_timing.first_meaningful_paint, | 62 timing_.paint_timing->first_meaningful_paint, |
62 lofi_request_sent); | 63 lofi_request_sent); |
63 ValidateTimingHistogram(lofi_names::kNavigationToFirstImagePaint, | 64 ValidateTimingHistogram(lofi_names::kNavigationToFirstImagePaint, |
64 timing_.paint_timing.first_image_paint, | 65 timing_.paint_timing->first_image_paint, |
65 lofi_request_sent); | 66 lofi_request_sent); |
66 ValidateTimingHistogram( | 67 ValidateTimingHistogram( |
67 lofi_names::kParseBlockedOnScriptLoad, | 68 lofi_names::kParseBlockedOnScriptLoad, |
68 timing_.parse_timing.parse_blocked_on_script_load_duration, | 69 timing_.parse_timing->parse_blocked_on_script_load_duration, |
69 lofi_request_sent); | 70 lofi_request_sent); |
70 ValidateTimingHistogram(lofi_names::kParseDuration, | 71 ValidateTimingHistogram(lofi_names::kParseDuration, |
71 timing_.parse_timing.parse_stop.value() - | 72 timing_.parse_timing->parse_stop.value() - |
72 timing_.parse_timing.parse_start.value(), | 73 timing_.parse_timing->parse_start.value(), |
73 lofi_request_sent); | 74 lofi_request_sent); |
74 } | 75 } |
75 | 76 |
76 void ValidateTimingHistogram(const std::string& histogram, | 77 void ValidateTimingHistogram(const std::string& histogram, |
77 const base::Optional<base::TimeDelta>& event, | 78 const base::Optional<base::TimeDelta>& event, |
78 bool lofi_request_sent) { | 79 bool lofi_request_sent) { |
79 histogram_tester().ExpectTotalCount(histogram, lofi_request_sent ? 1 : 0); | 80 histogram_tester().ExpectTotalCount(histogram, lofi_request_sent ? 1 : 0); |
80 if (!lofi_request_sent) | 81 if (!lofi_request_sent) |
81 return; | 82 return; |
82 histogram_tester().ExpectUniqueSample( | 83 histogram_tester().ExpectUniqueSample( |
(...skipping 24 matching lines...) Expand all Loading... |
107 histogram_tester().ExpectTotalCount(lofi_names::kNetworkBytes, 0); | 108 histogram_tester().ExpectTotalCount(lofi_names::kNetworkBytes, 0); |
108 histogram_tester().ExpectTotalCount(lofi_names::kLoFiNetworkBytes, 0); | 109 histogram_tester().ExpectTotalCount(lofi_names::kLoFiNetworkBytes, 0); |
109 } | 110 } |
110 } | 111 } |
111 | 112 |
112 protected: | 113 protected: |
113 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { | 114 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { |
114 tracker->AddObserver(base::MakeUnique<LoFiPageLoadMetricsObserver>()); | 115 tracker->AddObserver(base::MakeUnique<LoFiPageLoadMetricsObserver>()); |
115 } | 116 } |
116 | 117 |
117 page_load_metrics::PageLoadTiming timing_; | 118 page_load_metrics::mojom::PageLoadTiming timing_; |
118 | 119 |
119 private: | 120 private: |
120 DISALLOW_COPY_AND_ASSIGN(LoFiPageLoadMetricsObserverTest); | 121 DISALLOW_COPY_AND_ASSIGN(LoFiPageLoadMetricsObserverTest); |
121 }; | 122 }; |
122 | 123 |
123 TEST_F(LoFiPageLoadMetricsObserverTest, LoFiNotSeen) { | 124 TEST_F(LoFiPageLoadMetricsObserverTest, LoFiNotSeen) { |
124 ResetTest(); | 125 ResetTest(); |
125 RunTest(); | 126 RunTest(); |
126 | 127 |
127 std::unique_ptr<DataReductionProxyData> data = | 128 std::unique_ptr<DataReductionProxyData> data = |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 NavigateToUntrackedUrl(); | 352 NavigateToUntrackedUrl(); |
352 | 353 |
353 ValidateTimingHistograms(true); | 354 ValidateTimingHistograms(true); |
354 ValidateDataHistograms(network_resources, lofi_resources, network_bytes, | 355 ValidateDataHistograms(network_resources, lofi_resources, network_bytes, |
355 lofi_bytes); | 356 lofi_bytes); |
356 } | 357 } |
357 | 358 |
358 } // namespace | 359 } // namespace |
359 | 360 |
360 } // namespace data_reduction_proxy | 361 } // namespace data_reduction_proxy |
OLD | NEW |