[RDSD] Add UKM Android.NonDefaultRdsPageLoad
Records on each page load when the User Agent is overridden with site
exception.
Reuse the enum from Android.UserRequestedUserAgentChange.
The UKM collection review:
https://docs.google.com/document/d/1drM_8INGF0IIbP1Eeq2PcxweRn34Xk5vPoQWZCGzIQU
Bug: 1365772
Change-Id: I626f5d7a3ccd5349412575a05264cd8c6385b503
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3984838
Reviewed-by: Aishwarya Rajesh <aishwaryarj@google.com>
Reviewed-by: Jesse Doherty <jwd@chromium.org>
Reviewed-by: Theresa Sullivan <twellington@chromium.org>
Commit-Queue: Shu Yang <shuyng@google.com>
Cr-Commit-Position: refs/heads/main@{#1065713}
diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
index 234c8ef..c38eb34 100644
--- a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
+++ b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc
@@ -12,6 +12,15 @@
#include "components/prefs/pref_service.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/common/content_features.h"
+#include "services/metrics/public/cpp/ukm_builders.h"
+
+namespace rds_web_contents_observer {
+// Keep in sync with UserAgentRequestType in tools/metrics/histograms/enums.xml.
+enum class UserAgentRequestType {
+ RequestDesktop = 0,
+ RequestMobile = 1,
+};
+} // namespace rds_web_contents_observer
RequestDesktopSiteWebContentsObserverAndroid::
RequestDesktopSiteWebContentsObserverAndroid(content::WebContents* contents)
@@ -39,12 +48,9 @@
if (!navigation_handle->IsInMainFrame()) {
return;
}
- // Override UA for renderer initiated navigation only. UA override for browser
- // initiated navigation is handled on Java side. This is to workaround known
- // issues crbug.com/1265751 and crbug.com/1261939.
- if (!navigation_handle->IsRendererInitiated()) {
- return;
- }
+
+ // TODO(shuyng): Remove this if Domain Settings is launched before Additional
+ // Settings.
if (!base::FeatureList::IsEnabled(features::kRequestDesktopSiteExceptions)) {
// Stop UA override if there is a tab level setting.
TabModel::TabUserAgent tabSetting =
@@ -66,18 +72,43 @@
url, url, ContentSettingsType::REQUEST_DESKTOP_SITE, &setting_info);
bool use_rds =
content_settings::ValueToContentSetting(setting) == CONTENT_SETTING_ALLOW;
+ bool is_global_setting = setting_info.primary_pattern.MatchesAllHosts();
// Take secondary settings into account if ContentSetting is global setting.
if (!use_rds &&
base::FeatureList::IsEnabled(features::kRequestDesktopSiteAdditions) &&
- setting_info.primary_pattern.MatchesAllHosts()) {
+ is_global_setting) {
bool use_rds_peripheral =
pref_service_->GetBoolean(prefs::kDesktopSitePeripheralSettingEnabled);
if (use_rds_peripheral) {
use_rds = TabAndroid::isHardwareKeyboardAvailable(tab_android_);
}
}
- navigation_handle->SetIsOverridingUserAgent(use_rds);
+
+ // Override UA for renderer initiated navigation only. UA override for browser
+ // initiated navigation is handled on Java side. This is to workaround known
+ // issues crbug.com/1265751 and crbug.com/1261939.
+ if (navigation_handle->IsRendererInitiated()) {
+ navigation_handle->SetIsOverridingUserAgent(use_rds);
+ }
+
+ // Only record UKM for site settings and primary main frame.
+ if (is_global_setting || !navigation_handle->IsInPrimaryMainFrame()) {
+ return;
+ }
+ rds_web_contents_observer::UserAgentRequestType user_agent_request_type;
+ if (use_rds) {
+ user_agent_request_type =
+ rds_web_contents_observer::UserAgentRequestType::RequestDesktop;
+ } else {
+ user_agent_request_type =
+ rds_web_contents_observer::UserAgentRequestType::RequestMobile;
+ }
+ ukm::SourceId source_id = ukm::ConvertToSourceId(
+ navigation_handle->GetNavigationId(), ukm::SourceIdType::NAVIGATION_ID);
+ ukm::builders::Android_NonDefaultRdsPageLoad(source_id)
+ .SetUserAgentType(static_cast<int>(user_agent_request_type))
+ .Record(ukm::UkmRecorder::Get());
}
WEB_CONTENTS_USER_DATA_KEY_IMPL(RequestDesktopSiteWebContentsObserverAndroid);
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml
index d28b762..7a87825 100644
--- a/tools/metrics/ukm/ukm.xml
+++ b/tools/metrics/ukm/ukm.xml
@@ -1075,6 +1075,27 @@
</metric>
</event>
+<event name="Android.NonDefaultRdsPageLoad">
+ <owner>shuyng@google.com</owner>
+ <owner>twellington@chromium.org</owner>
+ <summary>
+ Records on each page load when the User Agent is overridden with site
+ exception.
+ </summary>
+ <metric name="UserAgentType" enum="UserAgentRequestType">
+ <summary>
+ An enum that records the type of user agent.
+ </summary>
+ <aggregation>
+ <history>
+ <statistics>
+ <enumeration/>
+ </statistics>
+ </history>
+ </aggregation>
+ </metric>
+</event>
+
<event name="Android.ScreenRotation">
<owner>gangwu@chromium.org</owner>
<owner>fgorski@chromium.org</owner>