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

Unified Diff: chrome/browser/page_load_metrics/observers/subresource_filter_metrics_observer.cc

Issue 2795453003: Add additional metrics for subresource filtering. (Closed)
Patch Set: fix tests Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
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..1329a7dfb92badd706c3f32c6e61f26b8e3521c8 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,45 @@ 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 kHistogramSubresourceFilterNoMediaTotalResources[] =
+ "PageLoad.Clients.SubresourceFilter.Experimental.CompletedResources.Total."
+ "NoMediaPlayed";
+const char kHistogramSubresourceFilterNoMediaNetworkResources[] =
+ "PageLoad.Clients.SubresourceFilter.Experimental.CompletedResources."
+ "Network.NoMediaPlayed";
+const char kHistogramSubresourceFilterNoMediaCacheResources[] =
+ "PageLoad.Clients.SubresourceFilter.Experimental.CompletedResources.Cache."
+ "NoMediaPlayed";
+const char kHistogramSubresourceFilterNoMediaTotalBytes[] =
+ "PageLoad.Clients.SubresourceFilter.Experimental.Bytes.Total.NoMediaPlayed";
+const char kHistogramSubresourceFilterNoMediaNetworkBytes[] =
+ "PageLoad.Clients.SubresourceFilter.Experimental.Bytes.Network."
+ "NoMediaPlayed";
+const char kHistogramSubresourceFilterNoMediaCacheBytes[] =
+ "PageLoad.Clients.SubresourceFilter.Experimental.Bytes.Cache.NoMediaPlayed";
+
+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 +144,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 +164,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 +178,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,9 +283,16 @@ 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;
@@ -221,4 +312,54 @@ void SubresourceFilterMetricsObserver::OnGoingAway(
cache_bytes_);
PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterTotalBytes,
cache_bytes_ + network_bytes_);
+
+ if (played_media_) {
+ 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_);
+ } else {
+ PAGE_RESOURCE_COUNT_HISTOGRAM(
+ internal::kHistogramSubresourceFilterNoMediaNetworkResources,
+ num_network_resources_);
+ PAGE_RESOURCE_COUNT_HISTOGRAM(
+ internal::kHistogramSubresourceFilterNoMediaCacheResources,
+ num_cache_resources_);
+ PAGE_RESOURCE_COUNT_HISTOGRAM(
+ internal::kHistogramSubresourceFilterNoMediaTotalResources,
+ num_cache_resources_ + num_network_resources_);
+
+ PAGE_BYTES_HISTOGRAM(
+ internal::kHistogramSubresourceFilterNoMediaNetworkBytes,
+ network_bytes_);
+ PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterNoMediaCacheBytes,
+ cache_bytes_);
+ PAGE_BYTES_HISTOGRAM(internal::kHistogramSubresourceFilterNoMediaTotalBytes,
+ 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());
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698