Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99a0c9fa authored by kholoud mohamed's avatar kholoud mohamed
Browse files

Log PO and DO provisioning params

Log the params that were used to call
DPM#provisionFullyManagedDevice and
DPM#createAndProvisionManagedProfile

Bug: 178458861
Test: Verified manually that the metrics are being reported
Change-Id: I07eca0e50c4d700b1ba823158da0d074aee0ad59
parent e1891e1e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -472,6 +472,7 @@ package android.app.admin {
    method @NonNull public String getOwnerName();
    method @Nullable public String getTimeZone();
    method public boolean isLeaveAllSystemAppsEnabled();
    method public void logParams(@NonNull String);
    method public void writeToParcel(@NonNull android.os.Parcel, @Nullable int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.FullyManagedDeviceProvisioningParams> CREATOR;
  }
@@ -495,6 +496,7 @@ package android.app.admin {
    method public boolean isKeepAccountMigrated();
    method public boolean isLeaveAllSystemAppsEnabled();
    method public boolean isOrganizationOwnedProvisioning();
    method public void logParams(@NonNull String);
    method public void writeToParcel(@NonNull android.os.Parcel, @Nullable int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.ManagedProfileProvisioningParams> CREATOR;
  }
+31 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.annotation.TestApi;
import android.content.ComponentName;
import android.os.Parcel;
import android.os.Parcelable;
import android.stats.devicepolicy.DevicePolicyEnums;

import java.util.Locale;

@@ -35,6 +36,13 @@ import java.util.Locale;
 */
@TestApi
public final class FullyManagedDeviceProvisioningParams implements Parcelable {
    private static final String LEAVE_ALL_SYSTEM_APPS_ENABLED_PARAM =
            "LEAVE_ALL_SYSTEM_APPS_ENABLED";
    private static final String CAN_DEVICE_OWNER_GRANT_SENSOR_PERMISSIONS_PARAM =
            "CAN_DEVICE_OWNER_GRANT_SENSOR_PERMISSIONS";
    private static final String TIME_ZONE_PROVIDED_PARAM = "TIME_ZONE_PROVIDED";
    private static final String LOCALE_PROVIDED_PARAM = "LOCALE_PROVIDED";

    @NonNull private final ComponentName mDeviceAdminComponentName;
    @NonNull private final String mOwnerName;
    private final boolean mLeaveAllSystemAppsEnabled;
@@ -120,6 +128,29 @@ public final class FullyManagedDeviceProvisioningParams implements Parcelable {
        return mDeviceOwnerCanGrantSensorsPermissions;
    }

    /**
     * Logs the provisioning params using {@link DevicePolicyEventLogger}.
     */
    public void logParams(@NonNull String callerPackage) {
        requireNonNull(callerPackage);

        logParam(callerPackage, LEAVE_ALL_SYSTEM_APPS_ENABLED_PARAM, mLeaveAllSystemAppsEnabled);
        logParam(callerPackage, CAN_DEVICE_OWNER_GRANT_SENSOR_PERMISSIONS_PARAM,
                mDeviceOwnerCanGrantSensorsPermissions);
        logParam(callerPackage, TIME_ZONE_PROVIDED_PARAM, /* value= */ mTimeZone != null);
        logParam(callerPackage, LOCALE_PROVIDED_PARAM, /* value= */ mLocale != null);
    }

    private void logParam(String callerPackage, String param, boolean value) {
        DevicePolicyEventLogger
                .createEvent(DevicePolicyEnums.PLATFORM_PROVISIONING_PARAM)
                .setStrings(callerPackage)
                .setAdmin(mDeviceAdminComponentName)
                .setStrings(param)
                .setBoolean(value)
                .write();
    }

    /**
     * Builder class for {@link FullyManagedDeviceProvisioningParams} objects.
     */
+32 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.annotation.TestApi;
import android.content.ComponentName;
import android.os.Parcel;
import android.os.Parcelable;
import android.stats.devicepolicy.DevicePolicyEnums;

/**
 * Params required to provision a managed profile, see
@@ -34,6 +35,13 @@ import android.os.Parcelable;
 */
@TestApi
public final class ManagedProfileProvisioningParams implements Parcelable {
    private static final String LEAVE_ALL_SYSTEM_APPS_ENABLED_PARAM =
            "LEAVE_ALL_SYSTEM_APPS_ENABLED";
    private static final String ORGANIZATION_OWNED_PROVISIONING_PARAM =
            "ORGANIZATION_OWNED_PROVISIONING";
    private static final String ACCOUNT_TO_MIGRATE_PROVIDED_PARAM = "ACCOUNT_TO_MIGRATE_PROVIDED";
    private static final String KEEP_MIGRATED_ACCOUNT_PARAM = "KEEP_MIGRATED_ACCOUNT";

    @NonNull private final ComponentName mProfileAdminComponentName;
    @NonNull private final String mOwnerName;
    @Nullable private final String mProfileName;
@@ -92,6 +100,30 @@ public final class ManagedProfileProvisioningParams implements Parcelable {
        return mKeepAccountMigrated;
    }

    /**
     * Logs the provisioning params using {@link DevicePolicyEventLogger}.
     */
    public void logParams(@NonNull String callerPackage) {
        requireNonNull(callerPackage);

        logParam(callerPackage, LEAVE_ALL_SYSTEM_APPS_ENABLED_PARAM, mLeaveAllSystemAppsEnabled);
        logParam(callerPackage, ORGANIZATION_OWNED_PROVISIONING_PARAM,
                mOrganizationOwnedProvisioning);
        logParam(callerPackage, KEEP_MIGRATED_ACCOUNT_PARAM, mKeepAccountMigrated);
        logParam(callerPackage, ACCOUNT_TO_MIGRATE_PROVIDED_PARAM,
                /* value= */ mAccountToMigrate != null);
    }

    private void logParam(String callerPackage, String param, boolean value) {
        DevicePolicyEventLogger
                .createEvent(DevicePolicyEnums.PLATFORM_PROVISIONING_PARAM)
                .setStrings(callerPackage)
                .setAdmin(mProfileAdminComponentName)
                .setStrings(param)
                .setBoolean(value)
                .write();
    }

    /**
     * Builder class for {@link ManagedProfileProvisioningParams} objects.
     */
+12 −2
Original line number Diff line number Diff line
@@ -15985,6 +15985,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
    public UserHandle createAndProvisionManagedProfile(
            @NonNull ManagedProfileProvisioningParams provisioningParams,
            @NonNull String callerPackage) {
        Objects.requireNonNull(provisioningParams, "provisioningParams is null");
        Objects.requireNonNull(callerPackage, "callerPackage is null");
        final ComponentName admin = provisioningParams.getProfileAdminComponentName();
        Objects.requireNonNull(admin, "admin is null");
@@ -15992,6 +15995,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        Preconditions.checkCallAuthorization(
                hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS));
        provisioningParams.logParams(callerPackage);
        UserInfo userInfo = null;
        final long identity = Binder.clearCallingIdentity();
        try {
@@ -16291,9 +16296,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
    @Override
    public void provisionFullyManagedDevice(
            FullyManagedDeviceProvisioningParams provisioningParams, String callerPackage) {
        ComponentName deviceAdmin = provisioningParams.getDeviceAdminComponentName();
            @NonNull FullyManagedDeviceProvisioningParams provisioningParams,
            @NonNull String callerPackage) {
        Objects.requireNonNull(provisioningParams, "provisioningParams is null.");
        Objects.requireNonNull(callerPackage, "callerPackage is null.");
        ComponentName deviceAdmin = provisioningParams.getDeviceAdminComponentName();
        Objects.requireNonNull(deviceAdmin, "admin is null.");
        Objects.requireNonNull(provisioningParams.getOwnerName(), "owner name is null.");
@@ -16301,6 +16309,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        Preconditions.checkCallAuthorization(
                hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS));
        provisioningParams.logParams(callerPackage);
        final long identity = Binder.clearCallingIdentity();
        try {
            // TODO(b/178187130): This check fails silent provisioning, uncomment once silent