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

Side by Side Diff: chrome/browser/page_load_metrics/observers/subresource_filter_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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/subresource_filter_metrics_ observer.h" 5 #include "chrome/browser/page_load_metrics/observers/subresource_filter_metrics_ 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 9
10 namespace { 10 namespace {
11 const char kDefaultTestUrl[] = "https://example.com/"; 11 const char kDefaultTestUrl[] = "https://example.com/";
12 } // namespace 12 } // namespace
13 13
14 class SubresourceFilterMetricsObserverTest 14 class SubresourceFilterMetricsObserverTest
15 : public page_load_metrics::PageLoadMetricsObserverTestHarness { 15 : public page_load_metrics::PageLoadMetricsObserverTestHarness {
16 public: 16 public:
17 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { 17 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override {
18 tracker->AddObserver(base::MakeUnique<SubresourceFilterMetricsObserver>()); 18 tracker->AddObserver(base::MakeUnique<SubresourceFilterMetricsObserver>());
19 } 19 }
20 20
21 bool AnyMetricsRecorded() { 21 bool AnyMetricsRecorded() {
22 return !histogram_tester() 22 return !histogram_tester()
23 .GetTotalCountsForPrefix("PageLoad.Clients.SubresourceFilter.") 23 .GetTotalCountsForPrefix("PageLoad.Clients.SubresourceFilter.")
24 .empty(); 24 .empty();
25 } 25 }
26 26
27 void InitializePageLoadTiming(page_load_metrics::PageLoadTiming* timing) { 27 void InitializePageLoadTiming(
28 page_load_metrics::mojom::PageLoadTiming* timing) {
29 page_load_metrics::InitPageLoadTimingForTest(timing);
28 timing->navigation_start = base::Time::FromDoubleT(1); 30 timing->navigation_start = base::Time::FromDoubleT(1);
29 timing->parse_timing.parse_start = base::TimeDelta::FromMilliseconds(100); 31 timing->parse_timing->parse_start = base::TimeDelta::FromMilliseconds(100);
30 timing->parse_timing.parse_stop = base::TimeDelta::FromMilliseconds(200); 32 timing->parse_timing->parse_stop = base::TimeDelta::FromMilliseconds(200);
31 timing->parse_timing.parse_blocked_on_script_load_duration = 33 timing->parse_timing->parse_blocked_on_script_load_duration =
32 base::TimeDelta::FromMilliseconds(10); 34 base::TimeDelta::FromMilliseconds(10);
33 timing->parse_timing.parse_blocked_on_script_execution_duration = 35 timing->parse_timing->parse_blocked_on_script_execution_duration =
34 base::TimeDelta::FromMilliseconds(20); 36 base::TimeDelta::FromMilliseconds(20);
35 timing->paint_timing.first_contentful_paint = 37 timing->paint_timing->first_contentful_paint =
36 base::TimeDelta::FromMilliseconds(300); 38 base::TimeDelta::FromMilliseconds(300);
37 timing->paint_timing.first_meaningful_paint = 39 timing->paint_timing->first_meaningful_paint =
38 base::TimeDelta::FromMilliseconds(400); 40 base::TimeDelta::FromMilliseconds(400);
39 timing->document_timing.dom_content_loaded_event_start = 41 timing->document_timing->dom_content_loaded_event_start =
40 base::TimeDelta::FromMilliseconds(1200); 42 base::TimeDelta::FromMilliseconds(1200);
41 timing->document_timing.load_event_start = 43 timing->document_timing->load_event_start =
42 base::TimeDelta::FromMilliseconds(1500); 44 base::TimeDelta::FromMilliseconds(1500);
43 PopulateRequiredTimingFields(timing); 45 PopulateRequiredTimingFields(timing);
44 } 46 }
45 }; 47 };
46 48
47 TEST_F(SubresourceFilterMetricsObserverTest, 49 TEST_F(SubresourceFilterMetricsObserverTest,
48 NoMetricsForNonSubresourceFilteredNavigation) { 50 NoMetricsForNonSubresourceFilteredNavigation) {
49 NavigateAndCommit(GURL(kDefaultTestUrl)); 51 NavigateAndCommit(GURL(kDefaultTestUrl));
50 52
51 page_load_metrics::PageLoadTiming timing; 53 page_load_metrics::mojom::PageLoadTiming timing;
52 InitializePageLoadTiming(&timing); 54 InitializePageLoadTiming(&timing);
53 SimulateTimingUpdate(timing); 55 SimulateTimingUpdate(timing);
54 56
55 // Navigate away from the current page to force logging of request and byte 57 // Navigate away from the current page to force logging of request and byte
56 // metrics. 58 // metrics.
57 NavigateToUntrackedUrl(); 59 NavigateToUntrackedUrl();
58 60
59 ASSERT_FALSE(AnyMetricsRecorded()); 61 ASSERT_FALSE(AnyMetricsRecorded());
60 } 62 }
61 63
62 TEST_F(SubresourceFilterMetricsObserverTest, Basic) { 64 TEST_F(SubresourceFilterMetricsObserverTest, Basic) {
63 NavigateAndCommit(GURL(kDefaultTestUrl)); 65 NavigateAndCommit(GURL(kDefaultTestUrl));
64 66
65 page_load_metrics::PageLoadTiming timing; 67 page_load_metrics::mojom::PageLoadTiming timing;
66 InitializePageLoadTiming(&timing); 68 InitializePageLoadTiming(&timing);
67 page_load_metrics::PageLoadMetadata metadata; 69 page_load_metrics::mojom::PageLoadMetadata metadata;
68 metadata.behavior_flags |= 70 metadata.behavior_flags |=
69 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorSubresourceFilterMatch; 71 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorSubresourceFilterMatch;
70 SimulateTimingAndMetadataUpdate(timing, metadata); 72 SimulateTimingAndMetadataUpdate(timing, metadata);
71 73
72 // Navigate away from the current page to force logging of metrics. 74 // Navigate away from the current page to force logging of metrics.
73 NavigateToUntrackedUrl(); 75 NavigateToUntrackedUrl();
74 76
75 ASSERT_TRUE(AnyMetricsRecorded()); 77 ASSERT_TRUE(AnyMetricsRecorded());
76 78
77 histogram_tester().ExpectTotalCount( 79 histogram_tester().ExpectTotalCount(
78 internal::kHistogramSubresourceFilterCount, 1); 80 internal::kHistogramSubresourceFilterCount, 1);
79 81
80 histogram_tester().ExpectTotalCount( 82 histogram_tester().ExpectTotalCount(
81 internal::kHistogramSubresourceFilterFirstContentfulPaint, 1); 83 internal::kHistogramSubresourceFilterFirstContentfulPaint, 1);
82 histogram_tester().ExpectBucketCount( 84 histogram_tester().ExpectBucketCount(
83 internal::kHistogramSubresourceFilterFirstContentfulPaint, 85 internal::kHistogramSubresourceFilterFirstContentfulPaint,
84 timing.paint_timing.first_contentful_paint.value().InMilliseconds(), 1); 86 timing.paint_timing->first_contentful_paint.value().InMilliseconds(), 1);
85 87
86 histogram_tester().ExpectTotalCount( 88 histogram_tester().ExpectTotalCount(
87 internal::kHistogramSubresourceFilterParseStartToFirstContentfulPaint, 1); 89 internal::kHistogramSubresourceFilterParseStartToFirstContentfulPaint, 1);
88 histogram_tester().ExpectBucketCount( 90 histogram_tester().ExpectBucketCount(
89 internal::kHistogramSubresourceFilterParseStartToFirstContentfulPaint, 91 internal::kHistogramSubresourceFilterParseStartToFirstContentfulPaint,
90 (timing.paint_timing.first_contentful_paint.value() - 92 (timing.paint_timing->first_contentful_paint.value() -
91 timing.parse_timing.parse_start.value()) 93 timing.parse_timing->parse_start.value())
92 .InMilliseconds(), 94 .InMilliseconds(),
93 1); 95 1);
94 96
95 histogram_tester().ExpectTotalCount( 97 histogram_tester().ExpectTotalCount(
96 internal::kHistogramSubresourceFilterFirstMeaningfulPaint, 1); 98 internal::kHistogramSubresourceFilterFirstMeaningfulPaint, 1);
97 histogram_tester().ExpectBucketCount( 99 histogram_tester().ExpectBucketCount(
98 internal::kHistogramSubresourceFilterFirstMeaningfulPaint, 100 internal::kHistogramSubresourceFilterFirstMeaningfulPaint,
99 timing.paint_timing.first_meaningful_paint.value().InMilliseconds(), 1); 101 timing.paint_timing->first_meaningful_paint.value().InMilliseconds(), 1);
100 102
101 histogram_tester().ExpectTotalCount( 103 histogram_tester().ExpectTotalCount(
102 internal::kHistogramSubresourceFilterParseStartToFirstMeaningfulPaint, 1); 104 internal::kHistogramSubresourceFilterParseStartToFirstMeaningfulPaint, 1);
103 histogram_tester().ExpectBucketCount( 105 histogram_tester().ExpectBucketCount(
104 internal::kHistogramSubresourceFilterParseStartToFirstMeaningfulPaint, 106 internal::kHistogramSubresourceFilterParseStartToFirstMeaningfulPaint,
105 (timing.paint_timing.first_meaningful_paint.value() - 107 (timing.paint_timing->first_meaningful_paint.value() -
106 timing.parse_timing.parse_start.value()) 108 timing.parse_timing->parse_start.value())
107 .InMilliseconds(), 109 .InMilliseconds(),
108 1); 110 1);
109 111
110 histogram_tester().ExpectTotalCount( 112 histogram_tester().ExpectTotalCount(
111 internal::kHistogramSubresourceFilterDomContentLoaded, 1); 113 internal::kHistogramSubresourceFilterDomContentLoaded, 1);
112 histogram_tester().ExpectBucketCount( 114 histogram_tester().ExpectBucketCount(
113 internal::kHistogramSubresourceFilterDomContentLoaded, 115 internal::kHistogramSubresourceFilterDomContentLoaded,
114 timing.document_timing.dom_content_loaded_event_start.value() 116 timing.document_timing->dom_content_loaded_event_start.value()
115 .InMilliseconds(), 117 .InMilliseconds(),
116 1); 118 1);
117 119
118 histogram_tester().ExpectTotalCount(internal::kHistogramSubresourceFilterLoad, 120 histogram_tester().ExpectTotalCount(internal::kHistogramSubresourceFilterLoad,
119 1); 121 1);
120 histogram_tester().ExpectBucketCount( 122 histogram_tester().ExpectBucketCount(
121 internal::kHistogramSubresourceFilterLoad, 123 internal::kHistogramSubresourceFilterLoad,
122 timing.document_timing.load_event_start.value().InMilliseconds(), 1); 124 timing.document_timing->load_event_start.value().InMilliseconds(), 1);
123 125
124 histogram_tester().ExpectTotalCount( 126 histogram_tester().ExpectTotalCount(
125 internal::kHistogramSubresourceFilterParseDuration, 1); 127 internal::kHistogramSubresourceFilterParseDuration, 1);
126 histogram_tester().ExpectBucketCount( 128 histogram_tester().ExpectBucketCount(
127 internal::kHistogramSubresourceFilterParseDuration, 129 internal::kHistogramSubresourceFilterParseDuration,
128 (timing.parse_timing.parse_stop.value() - 130 (timing.parse_timing->parse_stop.value() -
129 timing.parse_timing.parse_start.value()) 131 timing.parse_timing->parse_start.value())
130 .InMilliseconds(), 132 .InMilliseconds(),
131 1); 133 1);
132 134
133 histogram_tester().ExpectTotalCount( 135 histogram_tester().ExpectTotalCount(
134 internal::kHistogramSubresourceFilterParseBlockedOnScriptLoad, 1); 136 internal::kHistogramSubresourceFilterParseBlockedOnScriptLoad, 1);
135 histogram_tester().ExpectBucketCount( 137 histogram_tester().ExpectBucketCount(
136 internal::kHistogramSubresourceFilterParseBlockedOnScriptLoad, 138 internal::kHistogramSubresourceFilterParseBlockedOnScriptLoad,
137 timing.parse_timing.parse_blocked_on_script_load_duration.value() 139 timing.parse_timing->parse_blocked_on_script_load_duration.value()
138 .InMilliseconds(), 140 .InMilliseconds(),
139 1); 141 1);
140 142
141 histogram_tester().ExpectTotalCount( 143 histogram_tester().ExpectTotalCount(
142 internal::kHistogramSubresourceFilterParseBlockedOnScriptExecution, 1); 144 internal::kHistogramSubresourceFilterParseBlockedOnScriptExecution, 1);
143 histogram_tester().ExpectBucketCount( 145 histogram_tester().ExpectBucketCount(
144 internal::kHistogramSubresourceFilterParseBlockedOnScriptExecution, 146 internal::kHistogramSubresourceFilterParseBlockedOnScriptExecution,
145 timing.parse_timing.parse_blocked_on_script_execution_duration.value() 147 timing.parse_timing->parse_blocked_on_script_execution_duration.value()
146 .InMilliseconds(), 148 .InMilliseconds(),
147 1); 149 1);
148 150
149 histogram_tester().ExpectTotalCount( 151 histogram_tester().ExpectTotalCount(
150 internal::kHistogramSubresourceFilterForegroundDuration, 1); 152 internal::kHistogramSubresourceFilterForegroundDuration, 1);
151 } 153 }
152 154
153 TEST_F(SubresourceFilterMetricsObserverTest, Subresources) { 155 TEST_F(SubresourceFilterMetricsObserverTest, Subresources) {
154 NavigateAndCommit(GURL(kDefaultTestUrl)); 156 NavigateAndCommit(GURL(kDefaultTestUrl));
155 157
156 SimulateLoadedResource( 158 SimulateLoadedResource(
157 {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */, 159 {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */,
158 1024 * 40 /* raw_body_bytes */, 0 /* original_network_content_length */, 160 1024 * 40 /* raw_body_bytes */, 0 /* original_network_content_length */,
159 nullptr /* data_reduction_proxy_data */, 161 nullptr /* data_reduction_proxy_data */,
160 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME}); 162 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME});
161 163
162 page_load_metrics::PageLoadTiming timing; 164 page_load_metrics::mojom::PageLoadTiming timing;
165 page_load_metrics::InitPageLoadTimingForTest(&timing);
163 timing.navigation_start = base::Time::FromDoubleT(1); 166 timing.navigation_start = base::Time::FromDoubleT(1);
164 page_load_metrics::PageLoadMetadata metadata; 167 page_load_metrics::mojom::PageLoadMetadata metadata;
165 metadata.behavior_flags |= 168 metadata.behavior_flags |=
166 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorSubresourceFilterMatch; 169 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorSubresourceFilterMatch;
167 SimulateTimingAndMetadataUpdate(timing, metadata); 170 SimulateTimingAndMetadataUpdate(timing, metadata);
168 171
169 SimulateLoadedResource( 172 SimulateLoadedResource(
170 {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */, 173 {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */,
171 1024 * 20 /* raw_body_bytes */, 0 /* original_network_content_length */, 174 1024 * 20 /* raw_body_bytes */, 0 /* original_network_content_length */,
172 nullptr /* data_reduction_proxy_data */, 175 nullptr /* data_reduction_proxy_data */,
173 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME}); 176 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME});
174 177
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 NavigateAndCommit(GURL(kDefaultTestUrl)); 254 NavigateAndCommit(GURL(kDefaultTestUrl));
252 255
253 SimulateMediaPlayed(); 256 SimulateMediaPlayed();
254 257
255 SimulateLoadedResource( 258 SimulateLoadedResource(
256 {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */, 259 {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */,
257 1024 * 40 /* raw_body_bytes */, 0 /* original_network_content_length */, 260 1024 * 40 /* raw_body_bytes */, 0 /* original_network_content_length */,
258 nullptr /* data_reduction_proxy_data */, 261 nullptr /* data_reduction_proxy_data */,
259 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME}); 262 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME});
260 263
261 page_load_metrics::PageLoadTiming timing; 264 page_load_metrics::mojom::PageLoadTiming timing;
265 page_load_metrics::InitPageLoadTimingForTest(&timing);
262 timing.navigation_start = base::Time::FromDoubleT(1); 266 timing.navigation_start = base::Time::FromDoubleT(1);
263 page_load_metrics::PageLoadMetadata metadata; 267 page_load_metrics::mojom::PageLoadMetadata metadata;
264 metadata.behavior_flags |= 268 metadata.behavior_flags |=
265 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorSubresourceFilterMatch; 269 blink::WebLoadingBehaviorFlag::kWebLoadingBehaviorSubresourceFilterMatch;
266 SimulateTimingAndMetadataUpdate(timing, metadata); 270 SimulateTimingAndMetadataUpdate(timing, metadata);
267 271
268 SimulateLoadedResource( 272 SimulateLoadedResource(
269 {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */, 273 {GURL(), -1 /* frame_tree_node_id */, false /* was_cached */,
270 1024 * 20 /* raw_body_bytes */, 0 /* original_network_content_length */, 274 1024 * 20 /* raw_body_bytes */, 0 /* original_network_content_length */,
271 nullptr /* data_reduction_proxy_data */, 275 nullptr /* data_reduction_proxy_data */,
272 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME}); 276 content::ResourceType::RESOURCE_TYPE_MAIN_FRAME});
273 277
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 histogram_tester().ExpectTotalCount( 342 histogram_tester().ExpectTotalCount(
339 internal::kHistogramSubresourceFilterMediaNetworkBytes, 1); 343 internal::kHistogramSubresourceFilterMediaNetworkBytes, 1);
340 histogram_tester().ExpectBucketCount( 344 histogram_tester().ExpectBucketCount(
341 internal::kHistogramSubresourceFilterMediaNetworkBytes, 60, 1); 345 internal::kHistogramSubresourceFilterMediaNetworkBytes, 60, 1);
342 346
343 histogram_tester().ExpectTotalCount( 347 histogram_tester().ExpectTotalCount(
344 internal::kHistogramSubresourceFilterMediaCacheBytes, 1); 348 internal::kHistogramSubresourceFilterMediaCacheBytes, 1);
345 histogram_tester().ExpectBucketCount( 349 histogram_tester().ExpectBucketCount(
346 internal::kHistogramSubresourceFilterMediaCacheBytes, 10, 1); 350 internal::kHistogramSubresourceFilterMediaCacheBytes, 10, 1);
347 } 351 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698