Commit 9d13e639 authored by Eric Robinson's avatar Eric Robinson Committed by Commit Bot

Add aggregate metrics for cpu usage.

Adds total time spent in tasks by ad creatives on a page.
These metrics mirror the existing metrics that keep track
of the percentage of overall time that an ad creative consumes.

Bug: 960457
Change-Id: Ie49a22fc48bd74a9c3dfd326b3dcf74869ae7ef2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1599686Reviewed-by: default avatarJosh Karlin <jkarlin@chromium.org>
Reviewed-by: default avatarCharlie Harrison <csharrison@chromium.org>
Commit-Queue: Eric Robinson <ericrobinson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#658734}
parent e44b691b
...@@ -570,29 +570,40 @@ void AdsPageLoadMetricsObserver::RecordHistogramsForCpuUsage( ...@@ -570,29 +570,40 @@ void AdsPageLoadMetricsObserver::RecordHistogramsForCpuUsage(
FrameData::InteractiveStatus::kPreInteractive); FrameData::InteractiveStatus::kPreInteractive);
base::TimeDelta task_duration_post = ad_frame_data.GetInteractiveCpuUsage( base::TimeDelta task_duration_post = ad_frame_data.GetInteractiveCpuUsage(
FrameData::InteractiveStatus::kPostInteractive); FrameData::InteractiveStatus::kPostInteractive);
base::TimeDelta task_duration_total =
task_duration_pre + task_duration_post;
if (total_duration.InMilliseconds() > 0) { if (total_duration.InMilliseconds() > 0) {
ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated", ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated",
UMA_HISTOGRAM_PERCENTAGE, visibility, UMA_HISTOGRAM_PERCENTAGE, visibility,
GetCpuPercentage(task_duration_pre + task_duration_post, GetCpuPercentage(task_duration_total, total_duration));
total_duration)); ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.TotalUsage.Unactivated",
PAGE_LOAD_HISTOGRAM, visibility, task_duration_total);
} }
if (pre_interactive_duration_.InMilliseconds() > 0) { if (pre_interactive_duration_.InMilliseconds() > 0) {
ADS_HISTOGRAM( ADS_HISTOGRAM(
"Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive", "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive",
UMA_HISTOGRAM_PERCENTAGE, visibility, UMA_HISTOGRAM_PERCENTAGE, visibility,
GetCpuPercentage(task_duration_pre, pre_interactive_duration_)); GetCpuPercentage(task_duration_pre, pre_interactive_duration_));
ADS_HISTOGRAM(
"Cpu.AdFrames.PerFrame.TotalUsage.Unactivated.PreInteractive",
PAGE_LOAD_HISTOGRAM, visibility, task_duration_pre);
} }
if (post_interactive_duration.InMilliseconds() > 0) { if (post_interactive_duration.InMilliseconds() > 0) {
ADS_HISTOGRAM( ADS_HISTOGRAM(
"Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive", "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive",
UMA_HISTOGRAM_PERCENTAGE, visibility, UMA_HISTOGRAM_PERCENTAGE, visibility,
GetCpuPercentage(task_duration_post, post_interactive_duration)); GetCpuPercentage(task_duration_post, post_interactive_duration));
ADS_HISTOGRAM(
"Cpu.AdFrames.PerFrame.TotalUsage.Unactivated.PostInteractive",
PAGE_LOAD_HISTOGRAM, visibility, task_duration_post);
} }
} else { } else {
base::TimeDelta task_duration_pre = ad_frame_data.GetActivationCpuUsage( base::TimeDelta task_duration_pre = ad_frame_data.GetActivationCpuUsage(
FrameData::UserActivationStatus::kNoActivation); FrameData::UserActivationStatus::kNoActivation);
base::TimeDelta task_duration_post = ad_frame_data.GetActivationCpuUsage( base::TimeDelta task_duration_post = ad_frame_data.GetActivationCpuUsage(
FrameData::UserActivationStatus::kReceivedActivation); FrameData::UserActivationStatus::kReceivedActivation);
base::TimeDelta task_duration_total =
task_duration_pre + task_duration_post;
base::TimeDelta pre_activation_duration = base::TimeDelta pre_activation_duration =
ad_frame_data.pre_activation_foreground_duration(); ad_frame_data.pre_activation_foreground_duration();
base::TimeDelta post_activation_duration = base::TimeDelta post_activation_duration =
...@@ -600,20 +611,27 @@ void AdsPageLoadMetricsObserver::RecordHistogramsForCpuUsage( ...@@ -600,20 +611,27 @@ void AdsPageLoadMetricsObserver::RecordHistogramsForCpuUsage(
if (total_duration.InMilliseconds() > 0) { if (total_duration.InMilliseconds() > 0) {
ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.PercentUsage.Activated", ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.PercentUsage.Activated",
UMA_HISTOGRAM_PERCENTAGE, visibility, UMA_HISTOGRAM_PERCENTAGE, visibility,
GetCpuPercentage(task_duration_pre + task_duration_post, GetCpuPercentage(task_duration_total, total_duration));
total_duration)); ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.TotalUsage.Activated",
PAGE_LOAD_HISTOGRAM, visibility, task_duration_total);
} }
if (pre_activation_duration.InMilliseconds() > 0) { if (pre_activation_duration.InMilliseconds() > 0) {
ADS_HISTOGRAM( ADS_HISTOGRAM(
"Cpu.AdFrames.PerFrame.PercentUsage.Activated.PreActivation", "Cpu.AdFrames.PerFrame.PercentUsage.Activated.PreActivation",
UMA_HISTOGRAM_PERCENTAGE, visibility, UMA_HISTOGRAM_PERCENTAGE, visibility,
GetCpuPercentage(task_duration_pre, pre_activation_duration)); GetCpuPercentage(task_duration_pre, pre_activation_duration));
ADS_HISTOGRAM(
"Cpu.AdFrames.PerFrame.TotalUsage.Activated.PreActivation",
PAGE_LOAD_HISTOGRAM, visibility, task_duration_pre);
} }
if (post_activation_duration.InMilliseconds() > 0) { if (post_activation_duration.InMilliseconds() > 0) {
ADS_HISTOGRAM( ADS_HISTOGRAM(
"Cpu.AdFrames.PerFrame.PercentUsage.Activated.PostActivation", "Cpu.AdFrames.PerFrame.PercentUsage.Activated.PostActivation",
UMA_HISTOGRAM_PERCENTAGE, visibility, UMA_HISTOGRAM_PERCENTAGE, visibility,
GetCpuPercentage(task_duration_post, post_activation_duration)); GetCpuPercentage(task_duration_post, post_activation_duration));
ADS_HISTOGRAM(
"Cpu.AdFrames.PerFrame.TotalUsage.Activated.PostActivation",
PAGE_LOAD_HISTOGRAM, visibility, task_duration_post);
} }
} }
} }
...@@ -634,23 +652,29 @@ void AdsPageLoadMetricsObserver::RecordHistogramsForCpuUsage( ...@@ -634,23 +652,29 @@ void AdsPageLoadMetricsObserver::RecordHistogramsForCpuUsage(
base::TimeDelta task_duration_post = base::TimeDelta task_duration_post =
aggregate_frame_data_->GetInteractiveCpuUsage( aggregate_frame_data_->GetInteractiveCpuUsage(
FrameData::InteractiveStatus::kPostInteractive); FrameData::InteractiveStatus::kPostInteractive);
base::TimeDelta task_duration_total = task_duration_pre + task_duration_post;
if (total_duration.InMilliseconds() > 0) { if (total_duration.InMilliseconds() > 0) {
ADS_HISTOGRAM("Cpu.FullPage.PercentUsage", UMA_HISTOGRAM_PERCENTAGE, ADS_HISTOGRAM("Cpu.FullPage.PercentUsage", UMA_HISTOGRAM_PERCENTAGE,
visibility, visibility,
GetCpuPercentage(task_duration_pre + task_duration_post, GetCpuPercentage(task_duration_total, total_duration));
total_duration)); ADS_HISTOGRAM("Cpu.FullPage.TotalUsage", PAGE_LOAD_HISTOGRAM, visibility,
task_duration_total);
} }
if (pre_interactive_duration_.InMilliseconds() > 0) { if (pre_interactive_duration_.InMilliseconds() > 0) {
ADS_HISTOGRAM( ADS_HISTOGRAM(
"Cpu.FullPage.PercentUsage.PreInteractive", UMA_HISTOGRAM_PERCENTAGE, "Cpu.FullPage.PercentUsage.PreInteractive", UMA_HISTOGRAM_PERCENTAGE,
visibility, visibility,
GetCpuPercentage(task_duration_pre, pre_interactive_duration_)); GetCpuPercentage(task_duration_pre, pre_interactive_duration_));
ADS_HISTOGRAM("Cpu.FullPage.TotalUsage.PreInteractive", PAGE_LOAD_HISTOGRAM,
visibility, task_duration_pre);
} }
if (post_interactive_duration.InMilliseconds() > 0) { if (post_interactive_duration.InMilliseconds() > 0) {
ADS_HISTOGRAM( ADS_HISTOGRAM(
"Cpu.FullPage.PercentUsage.PostInteractive", UMA_HISTOGRAM_PERCENTAGE, "Cpu.FullPage.PercentUsage.PostInteractive", UMA_HISTOGRAM_PERCENTAGE,
visibility, visibility,
GetCpuPercentage(task_duration_post, post_interactive_duration)); GetCpuPercentage(task_duration_post, post_interactive_duration));
ADS_HISTOGRAM("Cpu.FullPage.TotalUsage.PostInteractive",
PAGE_LOAD_HISTOGRAM, visibility, task_duration_post);
} }
} }
......
...@@ -328,7 +328,51 @@ class AdsPageLoadMetricsObserverTest : public SubresourceFilterTestHarness { ...@@ -328,7 +328,51 @@ class AdsPageLoadMetricsObserverTest : public SubresourceFilterTestHarness {
clock_ = std::make_unique<base::SimpleTestTickClock>(); clock_ = std::make_unique<base::SimpleTestTickClock>();
} }
// Given the prefix of the CPU histogram to check, either "Cpu.FullPage" or
// "Cpu.AdFrames.PerFrame", as well as the type, one of "" (for "FullPage"),
// "Activated", or "Unactivated", along with the total pre and post cpu time
// and total time, check all the relevant cpu histograms.
void CheckCpuHistograms(const std::string& prefix,
std::string type,
int pre_task_time,
int pre_time,
int post_task_time,
int post_time) {
int total_task_time = pre_task_time + post_task_time;
int total_time = pre_time + post_time;
std::string suffix = type == "Activated" ? "Activation" : "Interactive";
type = type.empty() ? "" : "." + type;
CheckSpecificCpuHistogram(
SuffixedHistogram(prefix + ".PercentUsage" + type),
SuffixedHistogram(prefix + ".TotalUsage" + type), total_task_time,
total_time);
CheckSpecificCpuHistogram(
SuffixedHistogram(prefix + ".PercentUsage" + type + ".Pre" + suffix),
SuffixedHistogram(prefix + ".TotalUsage" + type + ".Pre" + suffix),
pre_task_time, pre_time);
CheckSpecificCpuHistogram(
SuffixedHistogram(prefix + ".PercentUsage" + type + ".Post" + suffix),
SuffixedHistogram(prefix + ".TotalUsage" + type + ".Post" + suffix),
post_task_time, post_time);
}
private: private:
void CheckSpecificCpuHistogram(std::string percent_histogram,
std::string total_histogram,
int total_task_time,
int total_time) {
if (total_time) {
histogram_tester().ExpectUniqueSample(
percent_histogram, 100 * total_task_time / total_time, 1);
histogram_tester().ExpectUniqueSample(total_histogram, total_task_time,
1);
} else {
histogram_tester().ExpectTotalCount(percent_histogram, 0);
histogram_tester().ExpectTotalCount(total_histogram, 0);
}
}
void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) { void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) {
auto observer = std::make_unique<AdsPageLoadMetricsObserver>(); auto observer = std::make_unique<AdsPageLoadMetricsObserver>();
ads_observer_ = observer.get(); ads_observer_ = observer.get();
...@@ -833,33 +877,14 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetrics) { ...@@ -833,33 +877,14 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetrics) {
AdvancePageDuration(base::TimeDelta::FromMilliseconds(2000)); AdvancePageDuration(base::TimeDelta::FromMilliseconds(2000));
NavigateFrame(kNonAdUrl, main_frame); NavigateFrame(kNonAdUrl, main_frame);
// Overall usage on page for 3 categories: // Check the cpu histograms.
histogram_tester().ExpectUniqueSample( CheckCpuHistograms("Cpu.FullPage", "", /*pre_tasks=*/500 + 500,
SuffixedHistogram("Cpu.FullPage.PercentUsage"), /*pre_time=*/2000, /*post_tasks=*/1000 + 500,
100 * (500 + 500 + 1000 + 500) / 4000 /*=62%*/, 1); /*post_time=*/2000);
histogram_tester().ExpectUniqueSample( CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0);
SuffixedHistogram("Cpu.FullPage.PercentUsage.PreInteractive"), CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", /*pre_tasks=*/500,
100 * (500 + 500) / 2000 /*=50%*/, 1); /*pre_time=*/2000, /*post_tasks=*/1000,
histogram_tester().ExpectUniqueSample( /*post_time=*/2000);
SuffixedHistogram("Cpu.FullPage.PercentUsage.PostInteractive"),
100 * (1000 + 500) / 2000 /*=75%*/, 1);
// Make sure there are no activated numbers reported.
histogram_tester().ExpectTotalCount(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0);
// Usage for ad frame on page for 3 categories:
histogram_tester().ExpectUniqueSample(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"),
100 * (500 + 1000) / 4000 /*=37%*/, 1);
histogram_tester().ExpectUniqueSample(
SuffixedHistogram(
"Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive"),
100 * (500) / 2000 /*=25%*/, 1);
histogram_tester().ExpectUniqueSample(
SuffixedHistogram(
"Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive"),
100 * (1000) / 2000 /*=50%*/, 1);
} }
TEST_F(AdsPageLoadMetricsObserverTest, TEST_F(AdsPageLoadMetricsObserverTest,
...@@ -895,33 +920,14 @@ TEST_F(AdsPageLoadMetricsObserverTest, ...@@ -895,33 +920,14 @@ TEST_F(AdsPageLoadMetricsObserverTest,
AdvancePageDuration(base::TimeDelta::FromMilliseconds(500)); AdvancePageDuration(base::TimeDelta::FromMilliseconds(500));
NavigateFrame(kNonAdUrl, main_frame); NavigateFrame(kNonAdUrl, main_frame);
// Overall usage on page for 3 categories: // Check the cpu histograms.
histogram_tester().ExpectUniqueSample( CheckCpuHistograms("Cpu.FullPage", "", /*pre_tasks=*/500 + 500,
SuffixedHistogram("Cpu.FullPage.PercentUsage"), /*pre_time=*/2000, /*post_tasks=*/1000,
100 * (500 + 500 + 1000) / 3500 /*=57%*/, 1); /*post_time=*/1500);
histogram_tester().ExpectUniqueSample( CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0);
SuffixedHistogram("Cpu.FullPage.PercentUsage.PreInteractive"), CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", /*pre_tasks=*/500,
100 * (500 + 500) / 2000 /*=50%*/, 1); /*pre_time=*/2000, /*post_tasks=*/1000,
histogram_tester().ExpectUniqueSample( /*post_time=*/1500);
SuffixedHistogram("Cpu.FullPage.PercentUsage.PostInteractive"),
100 * (1000) / 1500 /*=66%*/, 1);
// Make sure there are no activated numbers reported.
histogram_tester().ExpectTotalCount(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0);
// Usage for ad frame on page for 3 categories:
histogram_tester().ExpectUniqueSample(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"),
100 * (500 + 1000) / 3500 /*=42%*/, 1);
histogram_tester().ExpectUniqueSample(
SuffixedHistogram(
"Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive"),
100 * (500) / 2000 /*=25%*/, 1);
histogram_tester().ExpectUniqueSample(
SuffixedHistogram(
"Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive"),
100 * (1000) / 1500 /*=66%*/, 1);
} }
TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsOnActivation) { TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsOnActivation) {
...@@ -959,33 +965,15 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsOnActivation) { ...@@ -959,33 +965,15 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsOnActivation) {
AdvancePageDuration(base::TimeDelta::FromMilliseconds(1500)); AdvancePageDuration(base::TimeDelta::FromMilliseconds(1500));
NavigateFrame(kNonAdUrl, main_frame); NavigateFrame(kNonAdUrl, main_frame);
// Overall usage on page for 3 categories: // Check the cpu histograms.
histogram_tester().ExpectUniqueSample( CheckCpuHistograms("Cpu.FullPage", "", /*pre_tasks=*/500 + 500,
SuffixedHistogram("Cpu.FullPage.PercentUsage"), /*pre_time=*/2000, /*post_tasks=*/1000 + 500,
100 * (500 + 500 + 1000 + 500) / 4000 /*=62%*/, 1); /*post_time=*/2000);
histogram_tester().ExpectUniqueSample( CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", 0, 0, 0, 0);
SuffixedHistogram("Cpu.FullPage.PercentUsage.PreInteractive"), CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated",
100 * (500 + 500) / 2000 /*=50%*/, 1); /*pre_tasks=*/500 + 500, /*pre_time=*/2500,
histogram_tester().ExpectUniqueSample( /*post_tasks=*/500,
SuffixedHistogram("Cpu.FullPage.PercentUsage.PostInteractive"), /*post_time=*/1500);
100 * (1000 + 500) / 2000 /*=75%*/, 1);
// Make sure there are no unactivated numbers reported.
histogram_tester().ExpectTotalCount(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"), 0);
// Usage for ad frame on page for 3 categories:
histogram_tester().ExpectUniqueSample(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"),
100 * (500 + 500 + 500) / 4000 /*=37%*/, 1);
histogram_tester().ExpectUniqueSample(
SuffixedHistogram(
"Cpu.AdFrames.PerFrame.PercentUsage.Activated.PreActivation"),
100 * (500 + 500) / 2500 /*=40%*/, 1);
histogram_tester().ExpectUniqueSample(
SuffixedHistogram(
"Cpu.AdFrames.PerFrame.PercentUsage.Activated.PostActivation"),
100 * (500) / 1500 /*=33%*/, 1);
} }
TEST_F(AdsPageLoadMetricsObserverTest, TestNoReportingWhenAlwaysBackgrounded) { TEST_F(AdsPageLoadMetricsObserverTest, TestNoReportingWhenAlwaysBackgrounded) {
...@@ -1020,12 +1008,9 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestNoReportingWhenAlwaysBackgrounded) { ...@@ -1020,12 +1008,9 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestNoReportingWhenAlwaysBackgrounded) {
NavigateFrame(kNonAdUrl, main_frame); NavigateFrame(kNonAdUrl, main_frame);
// Ensure that all metrics are zero. // Ensure that all metrics are zero.
histogram_tester().ExpectTotalCount( CheckCpuHistograms("Cpu.FullPage", "", 0, 0, 0, 0);
SuffixedHistogram("Cpu.FullPage.PercentUsage"), 0); CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", 0, 0, 0, 0);
histogram_tester().ExpectTotalCount( CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0);
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"), 0);
histogram_tester().ExpectTotalCount(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0);
} }
TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsNoInteractive) { TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsNoInteractive) {
...@@ -1046,31 +1031,12 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsNoInteractive) { ...@@ -1046,31 +1031,12 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsNoInteractive) {
AdvancePageDuration(base::TimeDelta::FromMilliseconds(2000)); AdvancePageDuration(base::TimeDelta::FromMilliseconds(2000));
NavigateFrame(kNonAdUrl, main_frame); NavigateFrame(kNonAdUrl, main_frame);
// Overall usage on page for 3 categories: // Check the cpu histograms.
histogram_tester().ExpectUniqueSample( CheckCpuHistograms("Cpu.FullPage", "", /*pre_tasks=*/500 + 500,
SuffixedHistogram("Cpu.FullPage.PercentUsage"), /*pre_time=*/2000, /*post_tasks=*/0, /*post_time=*/0);
100 * (500 + 500) / 2000 /*=50%*/, 1); CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0);
histogram_tester().ExpectUniqueSample( CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", /*pre_tasks=*/500,
SuffixedHistogram("Cpu.FullPage.PercentUsage.PreInteractive"), /*pre_time=*/2000, /*post_tasks=*/0, /*post_time=*/0);
100 * (500 + 500) / 2000 /*=50%*/, 1);
histogram_tester().ExpectTotalCount(
SuffixedHistogram("Cpu.FullPage.PercentUsage.PostInteractive"), 0);
// Make sure there are no activated numbers reported.
histogram_tester().ExpectTotalCount(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0);
// Usage for ad frame on page for 3 categories:
histogram_tester().ExpectUniqueSample(
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"),
100 * (500) / 2000 /*=25%*/, 1);
histogram_tester().ExpectUniqueSample(
SuffixedHistogram(
"Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive"),
100 * (500) / 2000 /*=25%*/, 1);
histogram_tester().ExpectTotalCount(
SuffixedHistogram(
"Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive"), 0);
} }
TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsShortTimeframes) { TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsShortTimeframes) {
...@@ -1101,10 +1067,7 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsShortTimeframes) { ...@@ -1101,10 +1067,7 @@ TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsShortTimeframes) {
NavigateFrame(kNonAdUrl, main_frame); NavigateFrame(kNonAdUrl, main_frame);
// Make sure there are no numbers reported, as the timeframes are too short. // Make sure there are no numbers reported, as the timeframes are too short.
histogram_tester().ExpectTotalCount( CheckCpuHistograms("Cpu.FullPage", "", 0, 0, 0, 0);
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0); CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0);
histogram_tester().ExpectTotalCount( CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", 0, 0, 0, 0);
SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unctivated"), 0);
histogram_tester().ExpectTotalCount(
SuffixedHistogram("Cpu.FullPage.PercentUsage"), 0);
} }
...@@ -144188,10 +144188,16 @@ should be kept until we use this API. --> ...@@ -144188,10 +144188,16 @@ should be kept until we use this API. -->
<suffix name="PreActivation" label="Usage before user activation."/> <suffix name="PreActivation" label="Usage before user activation."/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/> name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/>
<affected-histogram
name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.TotalUsage.Activated"/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/> name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/>
<affected-histogram
name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.TotalUsage.Activated"/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/> name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/>
<affected-histogram
name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.TotalUsage.Activated"/>
</histogram_suffixes> </histogram_suffixes>
<histogram_suffixes name="AdsPageLoadMetricsBytes" separator="."> <histogram_suffixes name="AdsPageLoadMetricsBytes" separator=".">
...@@ -144214,6 +144220,9 @@ should be kept until we use this API. --> ...@@ -144214,6 +144220,9 @@ should be kept until we use this API. -->
label="The average load of an ad creative across the life of the page. label="The average load of an ad creative across the life of the page.
This is measured at percentage of a cpu core used and capped at This is measured at percentage of a cpu core used and capped at
100% for multicore systems."/> 100% for multicore systems."/>
<suffix base="true" name="AdFrames.PerFrame.TotalUsage"
label="The total load of an ad creative across the life of the page.
This is measured in milliseconds and capped at 10 seconds."/>
<affected-histogram name="PageLoad.Clients.Ads.Cpu"/> <affected-histogram name="PageLoad.Clients.Ads.Cpu"/>
<affected-histogram name="PageLoad.Clients.Ads.NonVisible.Cpu"/> <affected-histogram name="PageLoad.Clients.Ads.NonVisible.Cpu"/>
<affected-histogram name="PageLoad.Clients.Ads.Visible.Cpu"/> <affected-histogram name="PageLoad.Clients.Ads.Visible.Cpu"/>
...@@ -144226,10 +144235,16 @@ should be kept until we use this API. --> ...@@ -144226,10 +144235,16 @@ should be kept until we use this API. -->
label="Includes only creatives without a user gesture."/> label="Includes only creatives without a user gesture."/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage"/> name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage"/>
<affected-histogram
name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.TotalUsage"/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage"/> name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage"/>
<affected-histogram
name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.TotalUsage"/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage"/> name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage"/>
<affected-histogram
name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.TotalUsage"/>
</histogram_suffixes> </histogram_suffixes>
<histogram_suffixes name="AdsPageLoadMetricsCpuFullPage" separator="."> <histogram_suffixes name="AdsPageLoadMetricsCpuFullPage" separator=".">
...@@ -144237,6 +144252,9 @@ should be kept until we use this API. --> ...@@ -144237,6 +144252,9 @@ should be kept until we use this API. -->
label="The average load of the page across its lifetime. This is label="The average load of the page across its lifetime. This is
measured at percentage of a cpu core used and capped at 100% for measured at percentage of a cpu core used and capped at 100% for
multicore systems."/> multicore systems."/>
<suffix base="true" name="FullPage.TotalUsage"
label="The total load of the page across its lifetime. This is measured
in milliseconds and capped at 10 minutes."/>
<affected-histogram name="PageLoad.Clients.Ads.Cpu"/> <affected-histogram name="PageLoad.Clients.Ads.Cpu"/>
</histogram_suffixes> </histogram_suffixes>
...@@ -144246,11 +144264,18 @@ should be kept until we use this API. --> ...@@ -144246,11 +144264,18 @@ should be kept until we use this API. -->
<suffix name="PreInteractive" label="Usage before the page is interactive."/> <suffix name="PreInteractive" label="Usage before the page is interactive."/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/> name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/>
<affected-histogram
name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.TotalUsage.Unactivated"/>
<affected-histogram name="PageLoad.Clients.Ads.Cpu.FullPage.PercentUsage"/> <affected-histogram name="PageLoad.Clients.Ads.Cpu.FullPage.PercentUsage"/>
<affected-histogram name="PageLoad.Clients.Ads.Cpu.FullPage.TotalUsage"/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/> name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/>
<affected-histogram
name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.TotalUsage.Unactivated"/>
<affected-histogram <affected-histogram
name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/> name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/>
<affected-histogram
name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.TotalUsage.Unactivated"/>
</histogram_suffixes> </histogram_suffixes>
<histogram_suffixes name="AdsPageLoadMetricsMainFrameBytes" separator="."> <histogram_suffixes name="AdsPageLoadMetricsMainFrameBytes" separator=".">
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment