Commit 2f0a5149 authored by John Delaney's avatar John Delaney Committed by Commit Bot

Add use counter for heavy ad intervention

Adds a use counter for the heavy ad intervention and adds the
use counter to the UKM whitelist. This will be used to look
at % page loads affected and also whether certain origins are more
affected than others.

Bug: 985890
Change-Id: I09f0f6b8fd2703b4801b9958d55fcac165658c2c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1846174
Commit-Queue: John Delaney <johnidel@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Reviewed-by: default avatarJosh Karlin <jkarlin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#704224}
parent 1bb4afbe
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
#include "services/metrics/public/cpp/ukm_builders.h" #include "services/metrics/public/cpp/ukm_builders.h"
#include "services/metrics/public/cpp/ukm_recorder.h" #include "services/metrics/public/cpp/ukm_recorder.h"
#include "third_party/blink/public/mojom/web_feature/web_feature.mojom.h"
#include "ui/base/page_transition_types.h" #include "ui/base/page_transition_types.h"
#include "ui/gfx/geometry/size.h" #include "ui/gfx/geometry/size.h"
#include "url/gurl.h" #include "url/gurl.h"
...@@ -65,6 +66,14 @@ content::RenderFrameHost* FindFrameMaybeUnsafe( ...@@ -65,6 +66,14 @@ content::RenderFrameHost* FindFrameMaybeUnsafe(
handle->GetFrameTreeNodeId()); handle->GetFrameTreeNodeId());
} }
void RecordFeatureUsage(content::RenderFrameHost* rfh,
blink::mojom::WebFeature web_feature) {
page_load_metrics::mojom::PageLoadFeatures page_load_features(
{web_feature}, {} /* css_properties */, {} /* animated_css_properties */);
page_load_metrics::MetricsWebContentsObserver::RecordFeatureUsage(
rfh, page_load_features);
}
using ResourceMimeType = AdsPageLoadMetricsObserver::ResourceMimeType; using ResourceMimeType = AdsPageLoadMetricsObserver::ResourceMimeType;
const char kDisallowedByBlocklistHistogramName[] = const char kDisallowedByBlocklistHistogramName[] =
"PageLoad.Clients.Ads.HeavyAds.DisallowedByBlocklist"; "PageLoad.Clients.Ads.HeavyAds.DisallowedByBlocklist";
...@@ -202,6 +211,9 @@ void AdsPageLoadMetricsObserver::MaybeTriggerHeavyAdIntervention( ...@@ -202,6 +211,9 @@ void AdsPageLoadMetricsObserver::MaybeTriggerHeavyAdIntervention(
render_frame_host, render_frame_host->GetLastCommittedURL(), render_frame_host, render_frame_host->GetLastCommittedURL(),
heavy_ads::PrepareHeavyAdPage(), net::ERR_BLOCKED_BY_CLIENT); heavy_ads::PrepareHeavyAdPage(), net::ERR_BLOCKED_BY_CLIENT);
RecordFeatureUsage(render_frame_host,
blink::mojom::WebFeature::kHeavyAdIntervention);
ADS_HISTOGRAM("HeavyAds.InterventionType2", UMA_HISTOGRAM_ENUMERATION, ADS_HISTOGRAM("HeavyAds.InterventionType2", UMA_HISTOGRAM_ENUMERATION,
FrameData::FrameVisibility::kAnyVisibility, FrameData::FrameVisibility::kAnyVisibility,
frame_data->heavy_ad_status_with_noise()); frame_data->heavy_ad_status_with_noise());
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include "services/metrics/public/cpp/ukm_builders.h" #include "services/metrics/public/cpp/ukm_builders.h"
#include "services/metrics/public/cpp/ukm_source.h" #include "services/metrics/public/cpp/ukm_source.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/mojom/web_feature/web_feature.mojom.h"
#include "ui/gfx/geometry/size.h" #include "ui/gfx/geometry/size.h"
#include "url/gurl.h" #include "url/gurl.h"
#include "url/url_constants.h" #include "url/url_constants.h"
...@@ -907,6 +908,9 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverResourceBrowserTest, ...@@ -907,6 +908,9 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverResourceBrowserTest,
histogram_tester.ExpectUniqueSample(kHeavyAdInterventionTypeHistogramId, histogram_tester.ExpectUniqueSample(kHeavyAdInterventionTypeHistogramId,
FrameData::HeavyAdStatus::kNetwork, 1); FrameData::HeavyAdStatus::kNetwork, 1);
histogram_tester.ExpectBucketCount(
"Blink.UseCounter.Features",
blink::mojom::WebFeature::kHeavyAdIntervention, 1);
} }
// Check that when the heavy ad feature is disabled we don't navigate // Check that when the heavy ad feature is disabled we don't navigate
...@@ -938,6 +942,10 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverResourceBrowserTest, ...@@ -938,6 +942,10 @@ IN_PROC_BROWSER_TEST_F(AdsPageLoadMetricsObserverResourceBrowserTest,
// load is not synchronous. Instead check that we didn't log intervention UMA // load is not synchronous. Instead check that we didn't log intervention UMA
// that is always recorded when the intervention occurs. // that is always recorded when the intervention occurs.
histogram_tester.ExpectTotalCount(kHeavyAdInterventionTypeHistogramId, 0); histogram_tester.ExpectTotalCount(kHeavyAdInterventionTypeHistogramId, 0);
histogram_tester.ExpectBucketCount(
"Blink.UseCounter.Features",
blink::mojom::WebFeature::kHeavyAdIntervention, 0);
} }
// Check that we don't activate a HeavyAdIntervention field trial if we don't // Check that we don't activate a HeavyAdIntervention field trial if we don't
......
...@@ -136,6 +136,7 @@ UseCounterPageLoadMetricsObserver::GetAllowedUkmFeatures() { ...@@ -136,6 +136,7 @@ UseCounterPageLoadMetricsObserver::GetAllowedUkmFeatures() {
WebFeature::kThirdPartyServiceWorker, WebFeature::kThirdPartyServiceWorker,
WebFeature::kThirdPartySharedWorker, WebFeature::kThirdPartySharedWorker,
WebFeature::kThirdPartyBroadcastChannel, WebFeature::kThirdPartyBroadcastChannel,
WebFeature::kHeavyAdIntervention,
})); }));
return *opt_in_features; return *opt_in_features;
} }
...@@ -2433,6 +2433,7 @@ enum WebFeature { ...@@ -2433,6 +2433,7 @@ enum WebFeature {
kRenderSubtreeAttribute = 3049, kRenderSubtreeAttribute = 3049,
kARIAAnnotationRoles = 3050, kARIAAnnotationRoles = 3050,
kIntersectionObserverV2 = 3051, kIntersectionObserverV2 = 3051,
kHeavyAdIntervention = 3052,
// Add new features immediately above this line. Don't change assigned // Add new features immediately above this line. Don't change assigned
// numbers of any item, and don't reuse removed slots. // numbers of any item, and don't reuse removed slots.
......
...@@ -24881,6 +24881,7 @@ Called by update_net_error_codes.py.--> ...@@ -24881,6 +24881,7 @@ Called by update_net_error_codes.py.-->
<int value="3049" label="RenderSubtreeAttribute"/> <int value="3049" label="RenderSubtreeAttribute"/>
<int value="3050" label="ARIAAnnotationRoles"/> <int value="3050" label="ARIAAnnotationRoles"/>
<int value="3051" label="IntersectionObserverV2"/> <int value="3051" label="IntersectionObserverV2"/>
<int value="3052" label="HeavyAdIntervention"/>
</enum> </enum>
<enum name="FeaturePolicyAllowlistType"> <enum name="FeaturePolicyAllowlistType">
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