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/document_write_page_load_me
trics_observer.h" | 5 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me
trics_observer.h" |
6 | 6 |
7 #include "base/memory/ptr_util.h" | 7 #include "base/memory/ptr_util.h" |
8 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_
test_harness.h" | 8 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_
test_harness.h" |
9 #include "chrome/test/base/testing_browser_process.h" | 9 #include "chrome/test/base/testing_browser_process.h" |
10 #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h" | 10 #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 } | 27 } |
28 }; | 28 }; |
29 | 29 |
30 TEST_F(DocumentWritePageLoadMetricsObserverTest, NoMetrics) { | 30 TEST_F(DocumentWritePageLoadMetricsObserverTest, NoMetrics) { |
31 AssertNoPreloadHistogramsLogged(); | 31 AssertNoPreloadHistogramsLogged(); |
32 AssertNoBlockHistogramsLogged(); | 32 AssertNoBlockHistogramsLogged(); |
33 } | 33 } |
34 | 34 |
35 TEST_F(DocumentWritePageLoadMetricsObserverTest, PossiblePreload) { | 35 TEST_F(DocumentWritePageLoadMetricsObserverTest, PossiblePreload) { |
36 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); | 36 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); |
37 page_load_metrics::PageLoadTiming timing; | 37 page_load_metrics::mojom::PageLoadTiming timing; |
| 38 page_load_metrics::InitPageLoadTimingForTest(&timing); |
38 timing.navigation_start = base::Time::FromDoubleT(1); | 39 timing.navigation_start = base::Time::FromDoubleT(1); |
39 timing.paint_timing.first_contentful_paint = contentful_paint; | 40 timing.paint_timing->first_contentful_paint = contentful_paint; |
40 timing.parse_timing.parse_start = base::TimeDelta::FromMilliseconds(1); | 41 timing.parse_timing->parse_start = base::TimeDelta::FromMilliseconds(1); |
41 PopulateRequiredTimingFields(&timing); | 42 PopulateRequiredTimingFields(&timing); |
42 | 43 |
43 page_load_metrics::PageLoadMetadata metadata; | 44 page_load_metrics::mojom::PageLoadMetadata metadata; |
44 metadata.behavior_flags |= | 45 metadata.behavior_flags |= |
45 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteEvaluator; | 46 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteEvaluator; |
46 NavigateAndCommit(GURL("https://www.google.com")); | 47 NavigateAndCommit(GURL("https://www.google.com")); |
47 SimulateTimingAndMetadataUpdate(timing, metadata); | 48 SimulateTimingAndMetadataUpdate(timing, metadata); |
48 | 49 |
49 histogram_tester().ExpectTotalCount( | 50 histogram_tester().ExpectTotalCount( |
50 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); | 51 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); |
51 histogram_tester().ExpectBucketCount( | 52 histogram_tester().ExpectBucketCount( |
52 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, | 53 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, |
53 contentful_paint.InMilliseconds(), 1); | 54 contentful_paint.InMilliseconds(), 1); |
54 | 55 |
55 NavigateAndCommit(GURL("https://www.example.com")); | 56 NavigateAndCommit(GURL("https://www.example.com")); |
56 | 57 |
57 histogram_tester().ExpectTotalCount( | 58 histogram_tester().ExpectTotalCount( |
58 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); | 59 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); |
59 histogram_tester().ExpectBucketCount( | 60 histogram_tester().ExpectBucketCount( |
60 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, | 61 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, |
61 contentful_paint.InMilliseconds(), 1); | 62 contentful_paint.InMilliseconds(), 1); |
62 } | 63 } |
63 | 64 |
64 TEST_F(DocumentWritePageLoadMetricsObserverTest, NoPossiblePreload) { | 65 TEST_F(DocumentWritePageLoadMetricsObserverTest, NoPossiblePreload) { |
65 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); | 66 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); |
66 page_load_metrics::PageLoadTiming timing; | 67 page_load_metrics::mojom::PageLoadTiming timing; |
| 68 page_load_metrics::InitPageLoadTimingForTest(&timing); |
67 timing.navigation_start = base::Time::FromDoubleT(1); | 69 timing.navigation_start = base::Time::FromDoubleT(1); |
68 timing.paint_timing.first_contentful_paint = contentful_paint; | 70 timing.paint_timing->first_contentful_paint = contentful_paint; |
69 PopulateRequiredTimingFields(&timing); | 71 PopulateRequiredTimingFields(&timing); |
70 | 72 |
71 page_load_metrics::PageLoadMetadata metadata; | 73 page_load_metrics::mojom::PageLoadMetadata metadata; |
72 NavigateAndCommit(GURL("https://www.google.com")); | 74 NavigateAndCommit(GURL("https://www.google.com")); |
73 SimulateTimingAndMetadataUpdate(timing, metadata); | 75 SimulateTimingAndMetadataUpdate(timing, metadata); |
74 NavigateAndCommit(GURL("https://www.example.com")); | 76 NavigateAndCommit(GURL("https://www.example.com")); |
75 AssertNoPreloadHistogramsLogged(); | 77 AssertNoPreloadHistogramsLogged(); |
76 } | 78 } |
77 | 79 |
78 TEST_F(DocumentWritePageLoadMetricsObserverTest, PossibleBlock) { | 80 TEST_F(DocumentWritePageLoadMetricsObserverTest, PossibleBlock) { |
79 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); | 81 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); |
80 page_load_metrics::PageLoadTiming timing; | 82 page_load_metrics::mojom::PageLoadTiming timing; |
| 83 page_load_metrics::InitPageLoadTimingForTest(&timing); |
81 timing.navigation_start = base::Time::FromDoubleT(1); | 84 timing.navigation_start = base::Time::FromDoubleT(1); |
82 timing.paint_timing.first_contentful_paint = contentful_paint; | 85 timing.paint_timing->first_contentful_paint = contentful_paint; |
83 timing.parse_timing.parse_start = base::TimeDelta::FromMilliseconds(1); | 86 timing.parse_timing->parse_start = base::TimeDelta::FromMilliseconds(1); |
84 PopulateRequiredTimingFields(&timing); | 87 PopulateRequiredTimingFields(&timing); |
85 | 88 |
86 page_load_metrics::PageLoadMetadata metadata; | 89 page_load_metrics::mojom::PageLoadMetadata metadata; |
87 metadata.behavior_flags |= | 90 metadata.behavior_flags |= |
88 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteBlock; | 91 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorDocumentWriteBlock; |
89 NavigateAndCommit(GURL("https://www.google.com")); | 92 NavigateAndCommit(GURL("https://www.google.com")); |
90 SimulateTimingAndMetadataUpdate(timing, metadata); | 93 SimulateTimingAndMetadataUpdate(timing, metadata); |
91 | 94 |
92 histogram_tester().ExpectTotalCount(internal::kHistogramDocWriteBlockCount, | 95 histogram_tester().ExpectTotalCount(internal::kHistogramDocWriteBlockCount, |
93 1); | 96 1); |
94 histogram_tester().ExpectTotalCount( | 97 histogram_tester().ExpectTotalCount( |
95 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 98 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
96 histogram_tester().ExpectBucketCount( | 99 histogram_tester().ExpectBucketCount( |
97 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, | 100 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, |
98 contentful_paint.InMilliseconds(), 1); | 101 contentful_paint.InMilliseconds(), 1); |
99 | 102 |
100 NavigateAndCommit(GURL("https://www.example.com")); | 103 NavigateAndCommit(GURL("https://www.example.com")); |
101 | 104 |
102 histogram_tester().ExpectTotalCount( | 105 histogram_tester().ExpectTotalCount( |
103 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 106 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
104 histogram_tester().ExpectBucketCount( | 107 histogram_tester().ExpectBucketCount( |
105 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, | 108 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, |
106 contentful_paint.InMilliseconds(), 1); | 109 contentful_paint.InMilliseconds(), 1); |
107 } | 110 } |
108 | 111 |
109 TEST_F(DocumentWritePageLoadMetricsObserverTest, PossibleBlockReload) { | 112 TEST_F(DocumentWritePageLoadMetricsObserverTest, PossibleBlockReload) { |
110 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); | 113 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); |
111 page_load_metrics::PageLoadTiming timing; | 114 page_load_metrics::mojom::PageLoadTiming timing; |
| 115 page_load_metrics::InitPageLoadTimingForTest(&timing); |
112 timing.navigation_start = base::Time::FromDoubleT(1); | 116 timing.navigation_start = base::Time::FromDoubleT(1); |
113 timing.paint_timing.first_contentful_paint = contentful_paint; | 117 timing.paint_timing->first_contentful_paint = contentful_paint; |
114 timing.parse_timing.parse_start = base::TimeDelta::FromMilliseconds(1); | 118 timing.parse_timing->parse_start = base::TimeDelta::FromMilliseconds(1); |
115 PopulateRequiredTimingFields(&timing); | 119 PopulateRequiredTimingFields(&timing); |
116 | 120 |
117 page_load_metrics::PageLoadMetadata metadata; | 121 page_load_metrics::mojom::PageLoadMetadata metadata; |
118 metadata.behavior_flags |= blink::WebLoadingBehaviorFlag:: | 122 metadata.behavior_flags |= blink::WebLoadingBehaviorFlag:: |
119 kWebLoadingBehaviorDocumentWriteBlockReload; | 123 kWebLoadingBehaviorDocumentWriteBlockReload; |
120 NavigateAndCommit(GURL("https://www.google.com")); | 124 NavigateAndCommit(GURL("https://www.google.com")); |
121 SimulateTimingAndMetadataUpdate(timing, metadata); | 125 SimulateTimingAndMetadataUpdate(timing, metadata); |
122 | 126 |
123 histogram_tester().ExpectTotalCount( | 127 histogram_tester().ExpectTotalCount( |
124 internal::kHistogramDocWriteBlockReloadCount, 1); | 128 internal::kHistogramDocWriteBlockReloadCount, 1); |
125 | 129 |
126 // Another reload. | 130 // Another reload. |
127 NavigateAndCommit(GURL("https://www.example.com")); | 131 NavigateAndCommit(GURL("https://www.example.com")); |
128 SimulateTimingAndMetadataUpdate(timing, metadata); | 132 SimulateTimingAndMetadataUpdate(timing, metadata); |
129 | 133 |
130 histogram_tester().ExpectTotalCount( | 134 histogram_tester().ExpectTotalCount( |
131 internal::kHistogramDocWriteBlockReloadCount, 2); | 135 internal::kHistogramDocWriteBlockReloadCount, 2); |
132 | 136 |
133 // Another metadata update should not increase reload count. | 137 // Another metadata update should not increase reload count. |
134 metadata.behavior_flags |= | 138 metadata.behavior_flags |= |
135 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorServiceWorkerControlled; | 139 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorServiceWorkerControlled; |
136 SimulateTimingAndMetadataUpdate(timing, metadata); | 140 SimulateTimingAndMetadataUpdate(timing, metadata); |
137 histogram_tester().ExpectTotalCount( | 141 histogram_tester().ExpectTotalCount( |
138 internal::kHistogramDocWriteBlockReloadCount, 2); | 142 internal::kHistogramDocWriteBlockReloadCount, 2); |
139 | 143 |
140 histogram_tester().ExpectTotalCount(internal::kHistogramDocWriteBlockCount, | 144 histogram_tester().ExpectTotalCount(internal::kHistogramDocWriteBlockCount, |
141 0); | 145 0); |
142 } | 146 } |
143 | 147 |
144 TEST_F(DocumentWritePageLoadMetricsObserverTest, NoPossibleBlock) { | 148 TEST_F(DocumentWritePageLoadMetricsObserverTest, NoPossibleBlock) { |
145 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); | 149 base::TimeDelta contentful_paint = base::TimeDelta::FromMilliseconds(1); |
146 page_load_metrics::PageLoadTiming timing; | 150 page_load_metrics::mojom::PageLoadTiming timing; |
| 151 page_load_metrics::InitPageLoadTimingForTest(&timing); |
147 timing.navigation_start = base::Time::FromDoubleT(1); | 152 timing.navigation_start = base::Time::FromDoubleT(1); |
148 timing.paint_timing.first_contentful_paint = contentful_paint; | 153 timing.paint_timing->first_contentful_paint = contentful_paint; |
149 PopulateRequiredTimingFields(&timing); | 154 PopulateRequiredTimingFields(&timing); |
150 | 155 |
151 page_load_metrics::PageLoadMetadata metadata; | 156 page_load_metrics::mojom::PageLoadMetadata metadata; |
152 NavigateAndCommit(GURL("https://www.google.com")); | 157 NavigateAndCommit(GURL("https://www.google.com")); |
153 SimulateTimingAndMetadataUpdate(timing, metadata); | 158 SimulateTimingAndMetadataUpdate(timing, metadata); |
154 | 159 |
155 NavigateAndCommit(GURL("https://www.example.com")); | 160 NavigateAndCommit(GURL("https://www.example.com")); |
156 AssertNoBlockHistogramsLogged(); | 161 AssertNoBlockHistogramsLogged(); |
157 } | 162 } |
OLD | NEW |