Commit 399dfc2c authored by Alexandre Frechette's avatar Alexandre Frechette Committed by Commit Bot

Generic boolean UKM recording, and adding UKM for Mobile Menu Find in Page.

Bug: 1015005
Change-Id: Ife3feceddf6e89949eb5ea4e612be71ac3c53ad7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1850313
Commit-Queue: Alexandre Frechette <frechette@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarPeter Conn <peconn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708225}
parent 879c8499
...@@ -2490,7 +2490,6 @@ generate_jni("chrome_jni_headers") { ...@@ -2490,7 +2490,6 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/banners/AppBannerUiDelegateAndroid.java", "java/src/org/chromium/chrome/browser/banners/AppBannerUiDelegateAndroid.java",
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java", "java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java",
"java/src/org/chromium/chrome/browser/browserservices/OriginVerifier.java", "java/src/org/chromium/chrome/browser/browserservices/OriginVerifier.java",
"java/src/org/chromium/chrome/browser/browserservices/UkmRecorder.java",
"java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java", "java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java",
"java/src/org/chromium/chrome/browser/browsing_data/UrlFilterBridge.java", "java/src/org/chromium/chrome/browser/browsing_data/UrlFilterBridge.java",
"java/src/org/chromium/chrome/browser/childaccounts/ChildAccountFeedbackReporter.java", "java/src/org/chromium/chrome/browser/childaccounts/ChildAccountFeedbackReporter.java",
...@@ -2607,6 +2606,7 @@ generate_jni("chrome_jni_headers") { ...@@ -2607,6 +2606,7 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/metrics/BackgroundTaskMemoryMetricsEmitter.java", "java/src/org/chromium/chrome/browser/metrics/BackgroundTaskMemoryMetricsEmitter.java",
"java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java", "java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java",
"java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java", "java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java",
"java/src/org/chromium/chrome/browser/metrics/UkmRecorder.java",
"java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java", "java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java",
"java/src/org/chromium/chrome/browser/metrics/UmaUtils.java", "java/src/org/chromium/chrome/browser/metrics/UmaUtils.java",
"java/src/org/chromium/chrome/browser/metrics/VariationsSession.java", "java/src/org/chromium/chrome/browser/metrics/VariationsSession.java",
......
...@@ -154,7 +154,6 @@ chrome_java_sources = [ ...@@ -154,7 +154,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityClient.java", "java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityClient.java",
"java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivitySettingsLauncher.java", "java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivitySettingsLauncher.java",
"java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityUmaRecorder.java", "java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityUmaRecorder.java",
"java/src/org/chromium/chrome/browser/browserservices/UkmRecorder.java",
"java/src/org/chromium/chrome/browser/browserservices/VerificationResultStore.java", "java/src/org/chromium/chrome/browser/browserservices/VerificationResultStore.java",
"java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java", "java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge.java",
"java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserver.java", "java/src/org/chromium/chrome/browser/browserservices/permissiondelegation/NotificationChannelPreserver.java",
...@@ -893,6 +892,7 @@ chrome_java_sources = [ ...@@ -893,6 +892,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/metrics/PackageMetrics.java", "java/src/org/chromium/chrome/browser/metrics/PackageMetrics.java",
"java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java", "java/src/org/chromium/chrome/browser/metrics/PageLoadMetrics.java",
"java/src/org/chromium/chrome/browser/metrics/BackgroundTaskMemoryMetricsEmitter.java", "java/src/org/chromium/chrome/browser/metrics/BackgroundTaskMemoryMetricsEmitter.java",
"java/src/org/chromium/chrome/browser/metrics/UkmRecorder.java",
"java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java", "java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java",
"java/src/org/chromium/chrome/browser/metrics/UmaUtils.java", "java/src/org/chromium/chrome/browser/metrics/UmaUtils.java",
"java/src/org/chromium/chrome/browser/metrics/VariationsSession.java", "java/src/org/chromium/chrome/browser/metrics/VariationsSession.java",
......
...@@ -12,6 +12,7 @@ import org.chromium.base.metrics.RecordUserAction; ...@@ -12,6 +12,7 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.base.task.TaskTraits; import org.chromium.base.task.TaskTraits;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer; import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.chrome.browser.metrics.UkmRecorder;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
...@@ -60,7 +61,7 @@ public class TrustedWebActivityUmaRecorder { ...@@ -60,7 +61,7 @@ public class TrustedWebActivityUmaRecorder {
public void recordTwaOpened(@Nullable Tab tab) { public void recordTwaOpened(@Nullable Tab tab) {
RecordUserAction.record("BrowserServices.TwaOpened"); RecordUserAction.record("BrowserServices.TwaOpened");
if (tab != null) { if (tab != null) {
new UkmRecorder.Bridge().recordTwaOpened(tab); new UkmRecorder.Bridge().recordEvent(tab.getWebContents(), "TrustedWebActivity.Open");
} }
} }
......
...@@ -2,36 +2,48 @@ ...@@ -2,36 +2,48 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.browserservices; package org.chromium.chrome.browser.metrics;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
/** /**
* An interface and classes to record User Keyed Metrics relevant to Trusted Web Activities. This * An interface and classes to record User Keyed Metrics.
* will allow us to concentrate on the use cases for the most used TWAs.
*/ */
public abstract class UkmRecorder { public abstract class UkmRecorder {
/** /**
* Records a TWA has been opened in given tab. * Records the occurrence of a (boolean) UKM event with name |eventName|.
* A UKM entry with |eventName| must be present in ukm.xml with a metric named `HasOccured`.
* For example,
* <event name="SomeFeature.SomeComponent">
* <owner>owner@chromium.org</owner>
* <summary>
* User triggered a specific feature.
* </summary>
* <metric name="HasOccurred" enum="Boolean">
* <summary>
* A boolean signaling that the event has occurred (typically only records
* true values).
* </summary>
* </metric>
* </event>
*/ */
abstract void recordTwaOpened(Tab tab); abstract void recordEvent(WebContents webContents, String eventName);
/** /**
* The actual recorder. * The actual recorder.
*/ */
@JNINamespace("browserservices") @JNINamespace("metrics")
static class Bridge extends UkmRecorder { public static class Bridge extends UkmRecorder {
@Override @Override
public void recordTwaOpened(Tab tab) { public void recordEvent(WebContents webContents, String eventName) {
UkmRecorderJni.get().recordOpen(tab.getWebContents()); UkmRecorderJni.get().recordEvent(webContents, eventName);
} }
} }
@NativeMethods @NativeMethods
interface Natives { interface Natives {
void recordOpen(WebContents webContents); void recordEvent(WebContents webContents, String eventName);
} }
} }
\ No newline at end of file
...@@ -24,6 +24,8 @@ import org.chromium.chrome.browser.findinpage.FindToolbarManager; ...@@ -24,6 +24,8 @@ import org.chromium.chrome.browser.findinpage.FindToolbarManager;
import org.chromium.chrome.browser.findinpage.FindToolbarObserver; import org.chromium.chrome.browser.findinpage.FindToolbarObserver;
import org.chromium.chrome.browser.lifecycle.Destroyable; import org.chromium.chrome.browser.lifecycle.Destroyable;
import org.chromium.chrome.browser.lifecycle.InflationObserver; import org.chromium.chrome.browser.lifecycle.InflationObserver;
import org.chromium.chrome.browser.metrics.UkmRecorder;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.vr.VrModeObserver; import org.chromium.chrome.browser.vr.VrModeObserver;
import org.chromium.chrome.browser.vr.VrModuleProvider; import org.chromium.chrome.browser.vr.VrModuleProvider;
import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.DeviceFormFactor;
...@@ -136,8 +138,10 @@ public class RootUiCoordinator ...@@ -136,8 +138,10 @@ public class RootUiCoordinator
mFindToolbarManager.showToolbar(); mFindToolbarManager.showToolbar();
Tab tab = mActivity.getActivityTabProvider().get();
if (fromMenu) { if (fromMenu) {
RecordUserAction.record("MobileMenuFindInPage"); RecordUserAction.record("MobileMenuFindInPage");
new UkmRecorder.Bridge().recordEvent(tab.getWebContents(), "MobileMenu.FindInPage");
} else { } else {
RecordUserAction.record("MobileShortcutFindInPage"); RecordUserAction.record("MobileShortcutFindInPage");
} }
......
...@@ -2239,7 +2239,6 @@ jumbo_static_library("browser") { ...@@ -2239,7 +2239,6 @@ jumbo_static_library("browser") {
"android/bookmarks/partner_bookmarks_shim.h", "android/bookmarks/partner_bookmarks_shim.h",
"android/bottombar/overlay_panel_content.cc", "android/bottombar/overlay_panel_content.cc",
"android/bottombar/overlay_panel_content.h", "android/bottombar/overlay_panel_content.h",
"android/browserservices/ukm_recorder.cc",
"android/browsing_data/browsing_data_bridge.cc", "android/browsing_data/browsing_data_bridge.cc",
"android/browsing_data/browsing_data_counter_bridge.cc", "android/browsing_data/browsing_data_counter_bridge.cc",
"android/browsing_data/browsing_data_counter_bridge.h", "android/browsing_data/browsing_data_counter_bridge.h",
...@@ -2475,6 +2474,7 @@ jumbo_static_library("browser") { ...@@ -2475,6 +2474,7 @@ jumbo_static_library("browser") {
"android/metrics/background_task_memory_metrics_emitter.cc", "android/metrics/background_task_memory_metrics_emitter.cc",
"android/metrics/background_task_memory_metrics_emitter.h", "android/metrics/background_task_memory_metrics_emitter.h",
"android/metrics/launch_metrics.cc", "android/metrics/launch_metrics.cc",
"android/metrics/ukm_recorder.cc",
"android/metrics/uma_session_stats.cc", "android/metrics/uma_session_stats.cc",
"android/metrics/uma_session_stats.h", "android/metrics/uma_session_stats.h",
"android/metrics/uma_utils.cc", "android/metrics/uma_utils.cc",
......
...@@ -4,23 +4,28 @@ ...@@ -4,23 +4,28 @@
#include "services/metrics/public/cpp/ukm_recorder.h" #include "services/metrics/public/cpp/ukm_recorder.h"
#include "base/android/jni_android.h" #include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "chrome/android/chrome_jni_headers/UkmRecorder_jni.h" #include "chrome/android/chrome_jni_headers/UkmRecorder_jni.h"
#include "components/ukm/content/source_url_recorder.h" #include "components/ukm/content/source_url_recorder.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "services/metrics/public/cpp/ukm_builders.h" #include "services/metrics/public/cpp/ukm_builders.h"
#include "services/metrics/public/cpp/ukm_entry_builder.h"
namespace browserservices { namespace metrics {
// Called by Java org.chromium.chrome.browser.browserservices.UkmRecorder. // Called by Java org.chromium.chrome.browser.metrics.UkmRecorder.
static void JNI_UkmRecorder_RecordOpen( static void JNI_UkmRecorder_RecordEvent(
JNIEnv* env, JNIEnv* env,
const base::android::JavaParamRef<jobject>& java_web_contents) { const base::android::JavaParamRef<jobject>& j_web_contents,
const base::android::JavaParamRef<jstring>& j_event_name) {
content::WebContents* web_contents = content::WebContents* web_contents =
content::WebContents::FromJavaWebContents(java_web_contents); content::WebContents::FromJavaWebContents(j_web_contents);
ukm::SourceId source_id = const ukm::SourceId source_id =
ukm::GetSourceIdForWebContentsDocument(web_contents); ukm::GetSourceIdForWebContentsDocument(web_contents);
ukm::builders::TrustedWebActivity_Open(source_id).Record( const std::string event_name(ConvertJavaStringToUTF8(env, j_event_name));
ukm::UkmRecorder::Get()); ukm::UkmEntryBuilder builder(source_id, event_name);
builder.SetMetric("HasOccurred", true);
builder.Record(ukm::UkmRecorder::Get());
} }
} // namespace browserservices } // namespace metrics
...@@ -4934,6 +4934,19 @@ be describing additional metrics about the same event. ...@@ -4934,6 +4934,19 @@ be describing additional metrics about the same event.
</metric> </metric>
</event> </event>
<event name="MobileMenu.FindInPage">
<owner>frechette@chromium.org</owner>
<summary>
User pressed 'Find in page' in the app menu.
</summary>
<metric name="HasOccurred" enum="Boolean">
<summary>
A boolean signaling that the event has occurred (typically only records
true values).
</summary>
</metric>
</event>
<event name="NavigationPredictorAnchorElementMetrics"> <event name="NavigationPredictorAnchorElementMetrics">
<owner>ryansturm@chromium.org</owner> <owner>ryansturm@chromium.org</owner>
<summary> <summary>
...@@ -8298,6 +8311,12 @@ be describing additional metrics about the same event. ...@@ -8298,6 +8311,12 @@ be describing additional metrics about the same event.
<summary> <summary>
Collected when a page is opened in a Trusted Web Activity. Collected when a page is opened in a Trusted Web Activity.
</summary> </summary>
<metric name="HasOccurred" enum="Boolean">
<summary>
A boolean signaling that the event has occurred (typically only records
true values).
</summary>
</metric>
</event> </event>
<event name="UserActivity"> <event name="UserActivity">
......
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