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

Side by Side Diff: chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.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 "chrome/browser/page_load_metrics/page_load_metrics_util.h" 7 #include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
8 #include "components/subresource_filter/content/browser/content_subresource_filt er_driver_factory.h" 8 #include "components/subresource_filter/content/browser/content_subresource_filt er_driver_factory.h"
9 #include "components/subresource_filter/core/common/activation_decision.h" 9 #include "components/subresource_filter/core/common/activation_decision.h"
10 #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h" 10 #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 internal::kHistogramSubresourceFilterActivationDecisionReload, 130 internal::kHistogramSubresourceFilterActivationDecisionReload,
131 static_cast<int>(decision), 131 static_cast<int>(decision),
132 static_cast<int>(ActivationDecision::ACTIVATION_DECISION_MAX)); 132 static_cast<int>(ActivationDecision::ACTIVATION_DECISION_MAX));
133 } 133 }
134 } 134 }
135 135
136 } // namespace 136 } // namespace
137 137
138 page_load_metrics::PageLoadMetricsObserver::ObservePolicy 138 page_load_metrics::PageLoadMetricsObserver::ObservePolicy
139 SubresourceFilterMetricsObserver::FlushMetricsOnAppEnterBackground( 139 SubresourceFilterMetricsObserver::FlushMetricsOnAppEnterBackground(
140 const page_load_metrics::PageLoadTiming& timing, 140 const page_load_metrics::mojom::PageLoadTiming& timing,
141 const page_load_metrics::PageLoadExtraInfo& info) { 141 const page_load_metrics::PageLoadExtraInfo& info) {
142 // FlushMetricsOnAppEnterBackground is invoked on Android in cases where the 142 // FlushMetricsOnAppEnterBackground is invoked on Android in cases where the
143 // app is about to be backgrounded, as part of the Activity.onPause() 143 // app is about to be backgrounded, as part of the Activity.onPause()
144 // flow. After this method is invoked, Chrome may be killed without further 144 // flow. After this method is invoked, Chrome may be killed without further
145 // notification, so we record final metrics collected up to this point. 145 // notification, so we record final metrics collected up to this point.
146 if (info.did_commit) 146 if (info.did_commit)
147 OnGoingAway(timing, info, base::TimeTicks::Now()); 147 OnGoingAway(timing, info, base::TimeTicks::Now());
148 return STOP_OBSERVING; 148 return STOP_OBSERVING;
149 } 149 }
150 150
151 page_load_metrics::PageLoadMetricsObserver::ObservePolicy 151 page_load_metrics::PageLoadMetricsObserver::ObservePolicy
152 SubresourceFilterMetricsObserver::OnCommit( 152 SubresourceFilterMetricsObserver::OnCommit(
153 content::NavigationHandle* navigation_handle) { 153 content::NavigationHandle* navigation_handle) {
154 const auto* subres_filter = 154 const auto* subres_filter =
155 ContentSubresourceFilterDriverFactory::FromWebContents( 155 ContentSubresourceFilterDriverFactory::FromWebContents(
156 navigation_handle->GetWebContents()); 156 navigation_handle->GetWebContents());
157 if (subres_filter) 157 if (subres_filter)
158 LogActivationDecisionMetrics( 158 LogActivationDecisionMetrics(
159 navigation_handle, 159 navigation_handle,
160 subres_filter->GetActivationDecisionForLastCommittedPageLoad()); 160 subres_filter->GetActivationDecisionForLastCommittedPageLoad());
161 return CONTINUE_OBSERVING; 161 return CONTINUE_OBSERVING;
162 } 162 }
163 163
164 void SubresourceFilterMetricsObserver::OnComplete( 164 void SubresourceFilterMetricsObserver::OnComplete(
165 const page_load_metrics::PageLoadTiming& timing, 165 const page_load_metrics::mojom::PageLoadTiming& timing,
166 const page_load_metrics::PageLoadExtraInfo& info) { 166 const page_load_metrics::PageLoadExtraInfo& info) {
167 OnGoingAway(timing, info, base::TimeTicks()); 167 OnGoingAway(timing, info, base::TimeTicks());
168 } 168 }
169 169
170 void SubresourceFilterMetricsObserver::OnLoadedResource( 170 void SubresourceFilterMetricsObserver::OnLoadedResource(
171 const page_load_metrics::ExtraRequestCompleteInfo& 171 const page_load_metrics::ExtraRequestCompleteInfo&
172 extra_request_complete_info) { 172 extra_request_complete_info) {
173 if (extra_request_complete_info.was_cached) { 173 if (extra_request_complete_info.was_cached) {
174 ++num_cache_resources_; 174 ++num_cache_resources_;
175 cache_bytes_ += extra_request_complete_info.raw_body_bytes; 175 cache_bytes_ += extra_request_complete_info.raw_body_bytes;
176 } else { 176 } else {
177 ++num_network_resources_; 177 ++num_network_resources_;
178 network_bytes_ += extra_request_complete_info.raw_body_bytes; 178 network_bytes_ += extra_request_complete_info.raw_body_bytes;
179 } 179 }
180 } 180 }
181 181
182 void SubresourceFilterMetricsObserver::OnParseStop( 182 void SubresourceFilterMetricsObserver::OnParseStop(
183 const page_load_metrics::PageLoadTiming& timing, 183 const page_load_metrics::mojom::PageLoadTiming& timing,
184 const page_load_metrics::PageLoadExtraInfo& info) { 184 const page_load_metrics::PageLoadExtraInfo& info) {
185 if (!subresource_filter_observed_) 185 if (!subresource_filter_observed_)
186 return; 186 return;
187 187
188 if (!WasStartedInForegroundOptionalEventInForeground( 188 if (!WasStartedInForegroundOptionalEventInForeground(
189 timing.parse_timing.parse_stop, info)) 189 timing.parse_timing->parse_stop, info))
190 return; 190 return;
191 191
192 base::TimeDelta parse_duration = timing.parse_timing.parse_stop.value() - 192 base::TimeDelta parse_duration = timing.parse_timing->parse_stop.value() -
193 timing.parse_timing.parse_start.value(); 193 timing.parse_timing->parse_start.value();
194 PAGE_LOAD_HISTOGRAM(internal::kHistogramSubresourceFilterParseDuration, 194 PAGE_LOAD_HISTOGRAM(internal::kHistogramSubresourceFilterParseDuration,
195 parse_duration); 195 parse_duration);
196 PAGE_LOAD_HISTOGRAM( 196 PAGE_LOAD_HISTOGRAM(
197 internal::kHistogramSubresourceFilterParseBlockedOnScriptLoad, 197 internal::kHistogramSubresourceFilterParseBlockedOnScriptLoad,
198 timing.parse_timing.parse_blocked_on_script_load_duration.value()); 198 timing.parse_timing->parse_blocked_on_script_load_duration.value());
199 PAGE_LOAD_HISTOGRAM( 199 PAGE_LOAD_HISTOGRAM(
200 internal:: 200 internal::
201 kHistogramSubresourceFilterParseBlockedOnScriptLoadDocumentWrite, 201 kHistogramSubresourceFilterParseBlockedOnScriptLoadDocumentWrite,
202 timing.parse_timing 202 timing.parse_timing
203 .parse_blocked_on_script_load_from_document_write_duration.value()); 203 ->parse_blocked_on_script_load_from_document_write_duration.value());
204 PAGE_LOAD_HISTOGRAM( 204 PAGE_LOAD_HISTOGRAM(
205 internal::kHistogramSubresourceFilterParseBlockedOnScriptExecution, 205 internal::kHistogramSubresourceFilterParseBlockedOnScriptExecution,
206 timing.parse_timing.parse_blocked_on_script_execution_duration.value()); 206 timing.parse_timing->parse_blocked_on_script_execution_duration.value());
207 PAGE_LOAD_HISTOGRAM( 207 PAGE_LOAD_HISTOGRAM(
208 internal:: 208 internal::
209 kHistogramSubresourceFilterParseBlockedOnScriptExecutionDocumentWrite, 209 kHistogramSubresourceFilterParseBlockedOnScriptExecutionDocumentWrite,
210 timing.parse_timing 210 timing.parse_timing
211 .parse_blocked_on_script_execution_from_document_write_duration 211 ->parse_blocked_on_script_execution_from_document_write_duration
212 .value()); 212 .value());
213 } 213 }
214 214
215 void SubresourceFilterMetricsObserver::OnFirstContentfulPaintInPage( 215 void SubresourceFilterMetricsObserver::OnFirstContentfulPaintInPage(
216 const page_load_metrics::PageLoadTiming& timing, 216 const page_load_metrics::mojom::PageLoadTiming& timing,
217 const page_load_metrics::PageLoadExtraInfo& info) { 217 const page_load_metrics::PageLoadExtraInfo& info) {
218 if (!subresource_filter_observed_) 218 if (!subresource_filter_observed_)
219 return; 219 return;
220 220
221 if (WasStartedInForegroundOptionalEventInForeground( 221 if (WasStartedInForegroundOptionalEventInForeground(
222 timing.paint_timing.first_contentful_paint, info)) { 222 timing.paint_timing->first_contentful_paint, info)) {
223 PAGE_LOAD_HISTOGRAM( 223 PAGE_LOAD_HISTOGRAM(
224 internal::kHistogramSubresourceFilterFirstContentfulPaint, 224 internal::kHistogramSubresourceFilterFirstContentfulPaint,
225 timing.paint_timing.first_contentful_paint.value()); 225 timing.paint_timing->first_contentful_paint.value());
226 PAGE_LOAD_HISTOGRAM( 226 PAGE_LOAD_HISTOGRAM(
227 internal::kHistogramSubresourceFilterParseStartToFirstContentfulPaint, 227 internal::kHistogramSubresourceFilterParseStartToFirstContentfulPaint,
228 timing.paint_timing.first_contentful_paint.value() - 228 timing.paint_timing->first_contentful_paint.value() -
229 timing.parse_timing.parse_start.value()); 229 timing.parse_timing->parse_start.value());
230 } 230 }
231 } 231 }
232 232
233 void SubresourceFilterMetricsObserver:: 233 void SubresourceFilterMetricsObserver::
234 OnFirstMeaningfulPaintInMainFrameDocument( 234 OnFirstMeaningfulPaintInMainFrameDocument(
235 const page_load_metrics::PageLoadTiming& timing, 235 const page_load_metrics::mojom::PageLoadTiming& timing,
236 const page_load_metrics::PageLoadExtraInfo& info) { 236 const page_load_metrics::PageLoadExtraInfo& info) {
237 if (!subresource_filter_observed_) 237 if (!subresource_filter_observed_)
238 return; 238 return;
239 239
240 if (WasStartedInForegroundOptionalEventInForeground( 240 if (WasStartedInForegroundOptionalEventInForeground(
241 timing.paint_timing.first_meaningful_paint, info)) { 241 timing.paint_timing->first_meaningful_paint, info)) {
242 PAGE_LOAD_HISTOGRAM( 242 PAGE_LOAD_HISTOGRAM(
243 internal::kHistogramSubresourceFilterFirstMeaningfulPaint, 243 internal::kHistogramSubresourceFilterFirstMeaningfulPaint,
244 timing.paint_timing.first_meaningful_paint.value()); 244 timing.paint_timing->first_meaningful_paint.value());
245 PAGE_LOAD_HISTOGRAM( 245 PAGE_LOAD_HISTOGRAM(
246 internal::kHistogramSubresourceFilterParseStartToFirstMeaningfulPaint, 246 internal::kHistogramSubresourceFilterParseStartToFirstMeaningfulPaint,
247 timing.paint_timing.first_meaningful_paint.value() - 247 timing.paint_timing->first_meaningful_paint.value() -
248 timing.parse_timing.parse_start.value()); 248 timing.parse_timing->parse_start.value());
249 } 249 }
250 } 250 }
251 251
252 void SubresourceFilterMetricsObserver::OnDomContentLoadedEventStart( 252 void SubresourceFilterMetricsObserver::OnDomContentLoadedEventStart(
253 const page_load_metrics::PageLoadTiming& timing, 253 const page_load_metrics::mojom::PageLoadTiming& timing,
254 const page_load_metrics::PageLoadExtraInfo& info) { 254 const page_load_metrics::PageLoadExtraInfo& info) {
255 if (!subresource_filter_observed_) 255 if (!subresource_filter_observed_)
256 return; 256 return;
257 257
258 if (WasStartedInForegroundOptionalEventInForeground( 258 if (WasStartedInForegroundOptionalEventInForeground(
259 timing.document_timing.dom_content_loaded_event_start, info)) { 259 timing.document_timing->dom_content_loaded_event_start, info)) {
260 PAGE_LOAD_HISTOGRAM( 260 PAGE_LOAD_HISTOGRAM(
261 internal::kHistogramSubresourceFilterDomContentLoaded, 261 internal::kHistogramSubresourceFilterDomContentLoaded,
262 timing.document_timing.dom_content_loaded_event_start.value()); 262 timing.document_timing->dom_content_loaded_event_start.value());
263 } 263 }
264 } 264 }
265 265
266 void SubresourceFilterMetricsObserver::OnLoadEventStart( 266 void SubresourceFilterMetricsObserver::OnLoadEventStart(
267 const page_load_metrics::PageLoadTiming& timing, 267 const page_load_metrics::mojom::PageLoadTiming& timing,
268 const page_load_metrics::PageLoadExtraInfo& info) { 268 const page_load_metrics::PageLoadExtraInfo& info) {
269 if (!subresource_filter_observed_) 269 if (!subresource_filter_observed_)
270 return; 270 return;
271 271
272 if (WasStartedInForegroundOptionalEventInForeground( 272 if (WasStartedInForegroundOptionalEventInForeground(
273 timing.document_timing.load_event_start, info)) { 273 timing.document_timing->load_event_start, info)) {
274 PAGE_LOAD_HISTOGRAM(internal::kHistogramSubresourceFilterLoad, 274 PAGE_LOAD_HISTOGRAM(internal::kHistogramSubresourceFilterLoad,
275 timing.document_timing.load_event_start.value()); 275 timing.document_timing->load_event_start.value());
276 } 276 }
277 } 277 }
278 278
279 void SubresourceFilterMetricsObserver::OnLoadingBehaviorObserved( 279 void SubresourceFilterMetricsObserver::OnLoadingBehaviorObserved(
280 const page_load_metrics::PageLoadExtraInfo& info) { 280 const page_load_metrics::PageLoadExtraInfo& info) {
281 if (subresource_filter_observed_) 281 if (subresource_filter_observed_)
282 return; 282 return;
283 283
284 subresource_filter_observed_ = 284 subresource_filter_observed_ =
285 page_load_metrics::DidObserveLoadingBehaviorInAnyFrame( 285 page_load_metrics::DidObserveLoadingBehaviorInAnyFrame(
286 info, blink::WebLoadingBehaviorFlag:: 286 info, blink::WebLoadingBehaviorFlag::
287 kWebLoadingBehaviorSubresourceFilterMatch); 287 kWebLoadingBehaviorSubresourceFilterMatch);
288 288
289 if (subresource_filter_observed_) { 289 if (subresource_filter_observed_) {
290 UMA_HISTOGRAM_BOOLEAN(internal::kHistogramSubresourceFilterCount, true); 290 UMA_HISTOGRAM_BOOLEAN(internal::kHistogramSubresourceFilterCount, true);
291 } 291 }
292 } 292 }
293 293
294 void SubresourceFilterMetricsObserver::MediaStartedPlaying( 294 void SubresourceFilterMetricsObserver::MediaStartedPlaying(
295 const content::WebContentsObserver::MediaPlayerInfo& video_type, 295 const content::WebContentsObserver::MediaPlayerInfo& video_type,
296 bool is_in_main_frame) { 296 bool is_in_main_frame) {
297 played_media_ = true; 297 played_media_ = true;
298 } 298 }
299 299
300 void SubresourceFilterMetricsObserver::OnGoingAway( 300 void SubresourceFilterMetricsObserver::OnGoingAway(
301 const page_load_metrics::PageLoadTiming& timing, 301 const page_load_metrics::mojom::PageLoadTiming& timing,
302 const page_load_metrics::PageLoadExtraInfo& info, 302 const page_load_metrics::PageLoadExtraInfo& info,
303 base::TimeTicks app_background_time) { 303 base::TimeTicks app_background_time) {
304 if (!subresource_filter_observed_) 304 if (!subresource_filter_observed_)
305 return; 305 return;
306 306
307 PAGE_RESOURCE_COUNT_HISTOGRAM( 307 PAGE_RESOURCE_COUNT_HISTOGRAM(
308 internal::kHistogramSubresourceFilterNetworkResources, 308 internal::kHistogramSubresourceFilterNetworkResources,
309 num_network_resources_); 309 num_network_resources_);
310 PAGE_RESOURCE_COUNT_HISTOGRAM( 310 PAGE_RESOURCE_COUNT_HISTOGRAM(
311 internal::kHistogramSubresourceFilterCacheResources, 311 internal::kHistogramSubresourceFilterCacheResources,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterNoMediaTotalBytes, 357 PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterNoMediaTotalBytes,
358 cache_bytes_ + network_bytes_); 358 cache_bytes_ + network_bytes_);
359 } 359 }
360 360
361 base::Optional<base::TimeDelta> foreground_duration = 361 base::Optional<base::TimeDelta> foreground_duration =
362 GetInitialForegroundDuration(info, app_background_time); 362 GetInitialForegroundDuration(info, app_background_time);
363 if (foreground_duration) { 363 if (foreground_duration) {
364 PAGE_LOAD_LONG_HISTOGRAM( 364 PAGE_LOAD_LONG_HISTOGRAM(
365 internal::kHistogramSubresourceFilterForegroundDuration, 365 internal::kHistogramSubresourceFilterForegroundDuration,
366 foreground_duration.value()); 366 foreground_duration.value());
367 if (timing.paint_timing.first_paint && 367 if (timing.paint_timing->first_paint &&
368 timing.paint_timing.first_paint < foreground_duration) { 368 timing.paint_timing->first_paint < foreground_duration) {
369 PAGE_LOAD_LONG_HISTOGRAM( 369 PAGE_LOAD_LONG_HISTOGRAM(
370 internal::kHistogramSubresourceFilterForegroundDurationAfterPaint, 370 internal::kHistogramSubresourceFilterForegroundDurationAfterPaint,
371 foreground_duration.value() - 371 foreground_duration.value() -
372 timing.paint_timing.first_paint.value()); 372 timing.paint_timing->first_paint.value());
373 } 373 }
374 } 374 }
375 } 375 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698