Commit 619bafa6 authored by Ella Ge's avatar Ella Ge Committed by Commit Bot

[LocationDelegation] Record UMA for TWA location prompt result

This CL adds a UMA metrics to record permission request result from TWA.

Also renamed mRecorder in TWAPermissionManager to mUmaRecorder.

Bug: 1069506
Change-Id: I1ef8ec59d0763ebc23be2eb7bc142c45921bf410
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2219017
Commit-Queue: Ella Ge <eirage@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Reviewed-by: default avatarPeter Conn <peconn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#773804}
parent 1a237d86
......@@ -175,4 +175,9 @@ public class TrustedWebActivityUmaRecorder {
"TrustedWebActivity.LocationPermissionChanged", enabled);
}
}
public void recordLocationPermissionRequestResult(boolean enabled) {
RecordHistogram.recordBooleanHistogram(
"TrustedWebActivity.LocationPermissionRequestIsGranted", enabled);
}
}
......@@ -11,6 +11,7 @@ import androidx.annotation.WorkerThread;
import org.chromium.base.Log;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.browserservices.TrustedWebActivityClient;
import org.chromium.chrome.browser.browserservices.TrustedWebActivityUmaRecorder;
import org.chromium.components.content_settings.ContentSettingsType;
import org.chromium.components.embedder_support.util.Origin;
import org.chromium.content_public.browser.UiThreadTaskTraits;
......@@ -32,12 +33,15 @@ public class LocationPermissionUpdater {
private final TrustedWebActivityPermissionManager mPermissionManager;
private final TrustedWebActivityClient mTrustedWebActivityClient;
private final TrustedWebActivityUmaRecorder mUmaRecorder;
@Inject
public LocationPermissionUpdater(TrustedWebActivityPermissionManager permissionManager,
TrustedWebActivityClient trustedWebActivityClient) {
TrustedWebActivityClient trustedWebActivityClient,
TrustedWebActivityUmaRecorder umaRecorder) {
mPermissionManager = permissionManager;
mTrustedWebActivityClient = trustedWebActivityClient;
mUmaRecorder = umaRecorder;
}
/**
......@@ -70,6 +74,7 @@ public class LocationPermissionUpdater {
// hop back over to the UI thread to deal with the result.
PostTask.postTask(UiThreadTaskTraits.USER_VISIBLE, () -> {
mPermissionManager.updatePermission(origin, app.getPackageName(), TYPE, enabled);
mUmaRecorder.recordLocationPermissionRequestResult(enabled);
Log.d(TAG, "Updating origin location permissions to: %b", enabled);
InstalledWebappBridge.onGetPermissionResult(callback, enabled);
......
......@@ -53,7 +53,7 @@ public class TrustedWebActivityPermissionManager {
private final TrustedWebActivityPermissionStore mStore;
private final PackageManager mPackageManager;
private final TrustedWebActivityUmaRecorder mRecorder;
private final TrustedWebActivityUmaRecorder mUmaRecorder;
// Use a Lazy instance so we don't instantiate it on Android versions pre-O.
private final Lazy<NotificationChannelPreserver> mPermissionPreserver;
......@@ -69,7 +69,7 @@ public class TrustedWebActivityPermissionManager {
mPackageManager = context.getPackageManager();
mStore = store;
mPermissionPreserver = preserver;
mRecorder = umaRecorder;
mUmaRecorder = umaRecorder;
}
boolean isRunningTwa() {
......@@ -135,7 +135,7 @@ public class TrustedWebActivityPermissionManager {
}
if (stateChanged) {
mRecorder.recordPermissionChangedUma(type, enabled);
mUmaRecorder.recordPermissionChangedUma(type, enabled);
InstalledWebappBridge.notifyPermissionsChange(type);
}
}
......@@ -270,7 +270,7 @@ public class TrustedWebActivityPermissionManager {
if (customTabActivity == null) return;
String packageName = customTabActivity.getTwaPackage();
mRecorder.recordLocationDelegationEnrolled(
mUmaRecorder.recordLocationDelegationEnrolled(
hasAndroidLocationPermission(packageName) != null);
}
......
......@@ -30,6 +30,7 @@ import org.robolectric.shadows.ShadowPackageManager;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.browserservices.TrustedWebActivityClient;
import org.chromium.chrome.browser.browserservices.TrustedWebActivityUmaRecorder;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.test.util.browser.Features;
import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
......@@ -54,6 +55,8 @@ public class LocationPermissionUpdaterTest {
public TrustedWebActivityPermissionManager mPermissionManager;
@Mock
public TrustedWebActivityClient mTrustedWebActivityClient;
@Mock
public TrustedWebActivityUmaRecorder mUmaRecorder;
private LocationPermissionUpdater mLocationPermissionUpdater;
private ShadowPackageManager mShadowPackageManager;
......@@ -66,8 +69,8 @@ public class LocationPermissionUpdaterTest {
PackageManager pm = RuntimeEnvironment.application.getPackageManager();
mShadowPackageManager = shadowOf(pm);
mLocationPermissionUpdater =
new LocationPermissionUpdater(mPermissionManager, mTrustedWebActivityClient);
mLocationPermissionUpdater = new LocationPermissionUpdater(
mPermissionManager, mTrustedWebActivityClient, mUmaRecorder);
installBrowsableIntentHandler(ORIGIN, PACKAGE_NAME);
}
......
......@@ -174663,6 +174663,16 @@ should be kept until we use this API. -->
</summary>
</histogram>
<histogram name="TrustedWebActivity.LocationPermissionRequestIsGranted"
enum="Boolean" expires_after="2020-12-31">
<owner>eirage@chromium.org</owner>
<owner>peconn@chromium.org</owner>
<summary>
Records the boolean result (granted or not) from requesting a Trusted Web
Activity client app's location permission.
</summary>
</histogram>
<histogram name="TrustedWebActivity.ShareTargetRequest"
enum="WebShareTargetMethod" expires_after="M88">
<owner>peconn@chromium.org</owner>
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