Commit 3fb32d18 authored by Tao Bai's avatar Tao Bai Committed by Commit Bot

Add app package name in WebView UMA

This patch is straightforward, but it is hard to write test.
We land this patch first, and check the result in dashboard.

This feature is behind flag, disabled by default.

Bug: 839646
Change-Id: Id81843640f28416da440eb3d44f0933121bc67a3
Reviewed-on: https://chromium-review.googlesource.com/c/1306514
Commit-Queue: Tao Bai <michaelbai@chromium.org>
Reviewed-by: default avatarAlexei Svitkine <asvitkine@chromium.org>
Reviewed-by: default avatarPaul Miller <paulmiller@chromium.org>
Reviewed-by: default avatarChangwan Ryu <changwan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605088}
parent d374d79e
......@@ -47,6 +47,10 @@ namespace features {
const base::Feature kWebViewConnectionlessSafeBrowsing{
"WebViewConnectionlessSafeBrowsing", base::FEATURE_DISABLED_BY_DEFAULT};
// Whether the application package name is logged in UMA.
const base::Feature kWebViewUmaLogAppPackageName{
"WebViewUmaLogAppPackageName", base::FEATURE_DISABLED_BY_DEFAULT};
} // namespace features
static jboolean JNI_AwFeatureList_IsEnabled(
......
......@@ -15,6 +15,7 @@ namespace features {
// Alphabetical:
extern const base::Feature kWebViewConnectionlessSafeBrowsing;
extern const base::Feature kWebViewUmaLogAppPackageName;
} // namespace features
} // namespace android_webview
......
......@@ -8,6 +8,7 @@
#include <stdint.h>
#include <vector>
#include "android_webview/browser/aw_feature_list.h"
#include "android_webview/browser/aw_metrics_log_uploader.h"
#include "android_webview/common/aw_switches.h"
#include "android_webview/jni/AwMetricsServiceClient_jni.h"
......@@ -268,6 +269,16 @@ base::TimeDelta AwMetricsServiceClient::GetStandardUploadInterval() {
return base::TimeDelta::FromMinutes(kUploadIntervalMinutes);
}
std::string AwMetricsServiceClient::GetAppPackageName() {
if (!base::FeatureList::IsEnabled(features::kWebViewUmaLogAppPackageName))
return std::string();
JNIEnv* env = base::android::AttachCurrentThread();
base::android::ScopedJavaLocalRef<jstring> j_app_name =
Java_AwMetricsServiceClient_getAppPackageName(env);
return ConvertJavaStringToUTF8(env, j_app_name);
}
AwMetricsServiceClient::AwMetricsServiceClient()
: pref_service_(nullptr),
consent_(false),
......
......@@ -78,6 +78,7 @@ class AwMetricsServiceClient : public metrics::MetricsServiceClient,
const metrics::MetricsLogUploader::UploadCallback& on_upload_complete)
override;
base::TimeDelta GetStandardUploadInterval() override;
std::string GetAppPackageName() override;
private:
AwMetricsServiceClient();
......
......@@ -8,6 +8,7 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.CalledByNative;
......@@ -84,5 +85,10 @@ public class AwMetricsServiceClient {
}
}
@CalledByNative
private static String getAppPackageName() {
return ContextUtils.getApplicationContext().getPackageName();
}
public static native void nativeSetHaveMetricsConsent(boolean enabled);
}
......@@ -130,8 +130,8 @@ class MetricsServiceClient {
// Returns whether UKM notification listeners were attached to all profiles.
virtual bool AreNotificationListenersEnabledOnAllProfiles();
// Gets the Chrome package name for Android. Returns empty string for other
// platforms.
// Gets Chrome's package name in Android Chrome, or the host app's package
// name in Android WebView, or an empty string on other platforms.
virtual std::string GetAppPackageName();
// Sets the callback to run MetricsServiceManager::UpdateRunningServices.
......
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