summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/test-current.txt2
-rw-r--r--core/java/android/app/admin/FullyManagedDeviceProvisioningParams.java31
-rw-r--r--core/java/android/app/admin/ManagedProfileProvisioningParams.java32
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java14
4 files changed, 77 insertions, 2 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index e39b2b856661..661379bad1fe 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -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;
}
diff --git a/core/java/android/app/admin/FullyManagedDeviceProvisioningParams.java b/core/java/android/app/admin/FullyManagedDeviceProvisioningParams.java
index 5e1cbadb458e..9eb9a7bdad07 100644
--- a/core/java/android/app/admin/FullyManagedDeviceProvisioningParams.java
+++ b/core/java/android/app/admin/FullyManagedDeviceProvisioningParams.java
@@ -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;
@@ -121,6 +129,29 @@ public final class FullyManagedDeviceProvisioningParams implements Parcelable {
}
/**
+ * 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.
*/
public static final class Builder {
diff --git a/core/java/android/app/admin/ManagedProfileProvisioningParams.java b/core/java/android/app/admin/ManagedProfileProvisioningParams.java
index 5fe63d142021..1a6099a7f570 100644
--- a/core/java/android/app/admin/ManagedProfileProvisioningParams.java
+++ b/core/java/android/app/admin/ManagedProfileProvisioningParams.java
@@ -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;
@@ -93,6 +101,30 @@ public final class ManagedProfileProvisioningParams implements Parcelable {
}
/**
+ * 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.
*/
public static final class Builder {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 404b0cf8c7b8..bd109922cb42 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -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