Chromium Code Reviews| Index: chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.cc |
| diff --git a/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.cc |
| index b3d5d177608529feee2f2eea982bc0fbea90667d..d92e5d44de06deffc6606590080ccd56181d1587 100644 |
| --- a/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.cc |
| +++ b/chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.cc |
| @@ -35,6 +35,21 @@ const char kHistogramSubresourceFilterLoad[] = |
| "PageLoad.Clients.SubresourceFilter.DocumentTiming." |
| "NavigationToLoadEventFired"; |
| +const char kHistogramSubresourceFilterParseDuration[] = |
| + "PageLoad.Clients.SubresourceFilter.ParseTiming.ParseDuration"; |
| +const char kHistogramSubresourceFilterParseBlockedOnScriptLoad[] = |
| + "PageLoad.Clients.SubresourceFilter.ParseTiming.ParseBlockedOnScriptLoad"; |
| +const char kHistogramSubresourceFilterParseBlockedOnScriptLoadDocumentWrite[] = |
| + "PageLoad.Clients.SubresourceFilter.ParseTiming." |
| + "ParseBlockedOnScriptLoadFromDocumentWrite"; |
| +const char kHistogramSubresourceFilterParseBlockedOnScriptExecution[] = |
| + "PageLoad.Clients.SubresourceFilter.ParseTiming." |
| + "ParseBlockedOnScriptExecution"; |
| +const char |
| + kHistogramSubresourceFilterParseBlockedOnScriptExecutionDocumentWrite[] = |
| + "PageLoad.Clients.SubresourceFilter.ParseTiming." |
| + "ParseBlockedOnScriptExecutionFromDocumentWrite"; |
| + |
| const char kHistogramSubresourceFilterTotalResources[] = |
| "PageLoad.Clients.SubresourceFilter.Experimental.CompletedResources.Total"; |
| const char kHistogramSubresourceFilterNetworkResources[] = |
| @@ -50,6 +65,29 @@ const char kHistogramSubresourceFilterNetworkBytes[] = |
| const char kHistogramSubresourceFilterCacheBytes[] = |
| "PageLoad.Clients.SubresourceFilter.Experimental.Bytes.Cache"; |
| +const char kHistogramSubresourceFilterMediaTotalResources[] = |
| + "PageLoad.Clients.SubresourceFilter.Experimental.CompletedResources.Total." |
| + "MediaPlayed"; |
| +const char kHistogramSubresourceFilterMediaNetworkResources[] = |
| + "PageLoad.Clients.SubresourceFilter.Experimental.CompletedResources." |
| + "Network.MediaPlayed"; |
| +const char kHistogramSubresourceFilterMediaCacheResources[] = |
| + "PageLoad.Clients.SubresourceFilter.Experimental.CompletedResources.Cache." |
| + "MediaPlayed"; |
| + |
| +const char kHistogramSubresourceFilterMediaTotalBytes[] = |
| + "PageLoad.Clients.SubresourceFilter.Experimental.Bytes.Total.MediaPlayed"; |
| +const char kHistogramSubresourceFilterMediaNetworkBytes[] = |
| + "PageLoad.Clients.SubresourceFilter.Experimental.Bytes.Network.MediaPlayed"; |
| +const char kHistogramSubresourceFilterMediaCacheBytes[] = |
| + "PageLoad.Clients.SubresourceFilter.Experimental.Bytes.Cache.MediaPlayed"; |
| + |
| +const char kHistogramSubresourceFilterForegroundDuration[] = |
| + "PageLoad.Clients.SubresourceFilter.PageTiming.ForegroundDuration"; |
| +const char kHistogramSubresourceFilterForegroundDurationAfterPaint[] = |
| + "PageLoad.Clients.SubresourceFilter.PageTiming.ForegroundDuration." |
| + "AfterPaint"; |
| + |
| const char kHistogramSubresourceFilterCount[] = |
| "PageLoad.Clients.SubresourceFilter.Count"; |
| @@ -90,7 +128,7 @@ SubresourceFilterMetricsObserver::FlushMetricsOnAppEnterBackground( |
| // flow. After this method is invoked, Chrome may be killed without further |
| // notification, so we record final metrics collected up to this point. |
| if (info.did_commit) |
| - OnGoingAway(timing, info); |
| + OnGoingAway(timing, info, base::TimeTicks::Now()); |
| return STOP_OBSERVING; |
| } |
| @@ -110,7 +148,7 @@ SubresourceFilterMetricsObserver::OnCommit( |
| void SubresourceFilterMetricsObserver::OnComplete( |
| const page_load_metrics::PageLoadTiming& timing, |
| const page_load_metrics::PageLoadExtraInfo& info) { |
| - OnGoingAway(timing, info); |
| + OnGoingAway(timing, info, base::TimeTicks()); |
| } |
| void SubresourceFilterMetricsObserver::OnLoadedResource( |
| @@ -124,6 +162,36 @@ void SubresourceFilterMetricsObserver::OnLoadedResource( |
| } |
| } |
| +void SubresourceFilterMetricsObserver::OnParseStop( |
| + const page_load_metrics::PageLoadTiming& timing, |
| + const page_load_metrics::PageLoadExtraInfo& info) { |
| + if (!subresource_filter_observed_) |
| + return; |
| + |
| + if (!WasStartedInForegroundOptionalEventInForeground(timing.parse_stop, info)) |
| + return; |
| + |
| + base::TimeDelta parse_duration = |
| + timing.parse_stop.value() - timing.parse_start.value(); |
| + PAGE_LOAD_HISTOGRAM(internal::kHistogramSubresourceFilterParseDuration, |
| + parse_duration); |
| + PAGE_LOAD_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterParseBlockedOnScriptLoad, |
| + timing.parse_blocked_on_script_load_duration.value()); |
| + PAGE_LOAD_HISTOGRAM( |
| + internal:: |
| + kHistogramSubresourceFilterParseBlockedOnScriptLoadDocumentWrite, |
| + timing.parse_blocked_on_script_load_from_document_write_duration.value()); |
| + PAGE_LOAD_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterParseBlockedOnScriptExecution, |
| + timing.parse_blocked_on_script_execution_duration.value()); |
| + PAGE_LOAD_HISTOGRAM( |
| + internal:: |
| + kHistogramSubresourceFilterParseBlockedOnScriptExecutionDocumentWrite, |
| + timing.parse_blocked_on_script_execution_from_document_write_duration |
| + .value()); |
| +} |
| + |
| void SubresourceFilterMetricsObserver::OnFirstContentfulPaint( |
| const page_load_metrics::PageLoadTiming& timing, |
| const page_load_metrics::PageLoadExtraInfo& info) { |
| @@ -199,26 +267,65 @@ void SubresourceFilterMetricsObserver::OnLoadingBehaviorObserved( |
| } |
| } |
| +void SubresourceFilterMetricsObserver::MediaStartedPlaying( |
| + const content::WebContentsObserver::MediaPlayerInfo& video_type, |
| + bool is_in_main_frame) { |
| + played_media_ = true; |
| +} |
| + |
| void SubresourceFilterMetricsObserver::OnGoingAway( |
| const page_load_metrics::PageLoadTiming& timing, |
| - const page_load_metrics::PageLoadExtraInfo& info) { |
| + const page_load_metrics::PageLoadExtraInfo& info, |
| + base::TimeTicks app_background_time) { |
| if (!subresource_filter_observed_) |
| return; |
| - PAGE_RESOURCE_COUNT_HISTOGRAM( |
| - internal::kHistogramSubresourceFilterNetworkResources, |
| - num_network_resources_); |
| - PAGE_RESOURCE_COUNT_HISTOGRAM( |
| - internal::kHistogramSubresourceFilterCacheResources, |
| - num_cache_resources_); |
| - PAGE_RESOURCE_COUNT_HISTOGRAM( |
| - internal::kHistogramSubresourceFilterTotalResources, |
| - num_cache_resources_ + num_network_resources_); |
| - |
| - PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterNetworkBytes, |
| - network_bytes_); |
| - PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterCacheBytes, |
| - cache_bytes_); |
| - PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterTotalBytes, |
| - cache_bytes_ + network_bytes_); |
| + if (!played_media_) { |
| + PAGE_RESOURCE_COUNT_HISTOGRAM( |
|
Bryan McQuade
2017/04/04 15:00:13
re: not renaming these, i intend to try to merge t
Charlie Harrison
2017/04/04 16:35:33
Acknowledged.
Ilya Sherman
2017/04/04 21:01:51
If I'm understanding correctly, you've changed the
Bryan McQuade
2017/04/05 16:04:40
Good point. After thinking about this a bit more,
|
| + internal::kHistogramSubresourceFilterNetworkResources, |
| + num_network_resources_); |
| + PAGE_RESOURCE_COUNT_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterCacheResources, |
| + num_cache_resources_); |
| + PAGE_RESOURCE_COUNT_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterTotalResources, |
| + num_cache_resources_ + num_network_resources_); |
| + |
| + PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterNetworkBytes, |
| + network_bytes_); |
| + PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterCacheBytes, |
| + cache_bytes_); |
| + PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterTotalBytes, |
| + cache_bytes_ + network_bytes_); |
| + } else { |
| + PAGE_RESOURCE_COUNT_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterMediaNetworkResources, |
| + num_network_resources_); |
| + PAGE_RESOURCE_COUNT_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterMediaCacheResources, |
| + num_cache_resources_); |
| + PAGE_RESOURCE_COUNT_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterMediaTotalResources, |
| + num_cache_resources_ + num_network_resources_); |
| + |
| + PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterMediaNetworkBytes, |
| + network_bytes_); |
| + PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterMediaCacheBytes, |
| + cache_bytes_); |
| + PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterMediaTotalBytes, |
| + cache_bytes_ + network_bytes_); |
| + } |
| + |
| + base::Optional<base::TimeDelta> foreground_duration = |
| + GetInitialForegroundDuration(info, app_background_time); |
| + if (foreground_duration) { |
| + PAGE_LOAD_LONG_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterForegroundDuration, |
| + foreground_duration.value()); |
| + if (timing.first_paint && timing.first_paint < foreground_duration) { |
| + PAGE_LOAD_LONG_HISTOGRAM( |
| + internal::kHistogramSubresourceFilterForegroundDurationAfterPaint, |
| + foreground_duration.value() - timing.first_paint.value()); |
| + } |
| + } |
| } |