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

Commit f9227e6f authored by Lucy Miyuki Narita's avatar Lucy Miyuki Narita Committed by Android (Google) Code Review
Browse files

Merge "Add new Lock Task feature to enable Quick Settings." into main

parents afd0980c e951acaf
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1443,6 +1443,7 @@ package android.app.admin {
    field public static final int FLAG_SUPPORTED_MODES_DEVICE_OWNER = 4; // 0x4
    field public static final int FLAG_SUPPORTED_MODES_ORGANIZATION_OWNED = 1; // 0x1
    field public static final int FLAG_SUPPORTED_MODES_PERSONALLY_OWNED = 2; // 0x2
    field @FlaggedApi("android.app.supervision.flags.enable_lock_task_feature_quick_settings") public static final int LOCK_TASK_FEATURE_QUICK_SETTINGS = 128; // 0x80
    field public static final int PROVISIONING_TRIGGER_CLOUD_ENROLLMENT = 1; // 0x1
    field public static final int PROVISIONING_TRIGGER_MANAGED_ACCOUNT = 4; // 0x4
    field public static final int PROVISIONING_TRIGGER_NFC = 5; // 0x5
+12 −1
Original line number Diff line number Diff line
@@ -3064,6 +3064,16 @@ public class DevicePolicyManager {
     */
    public static final int LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK = 1 << 6;
    /**
     * Enable quick settings actions during LockTask mode. This feature flag can only be used in
     * combination with {@link #LOCK_TASK_FEATURE_NOTIFICATIONS}.
     *
     * @hide
     */
    @FlaggedApi(android.app.supervision.flags.Flags.FLAG_ENABLE_LOCK_TASK_FEATURE_QUICK_SETTINGS)
    @SystemApi
    public static final int LOCK_TASK_FEATURE_QUICK_SETTINGS = 1 << 7;
    /**
     * Flags supplied to {@link #setLockTaskFeatures(ComponentName, int)}.
     *
@@ -3078,7 +3088,8 @@ public class DevicePolicyManager {
            LOCK_TASK_FEATURE_OVERVIEW,
            LOCK_TASK_FEATURE_GLOBAL_ACTIONS,
            LOCK_TASK_FEATURE_KEYGUARD,
            LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK
            LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK,
            LOCK_TASK_FEATURE_QUICK_SETTINGS
    })
    public @interface LockTaskFeature {}
+8 −0
Original line number Diff line number Diff line
@@ -80,3 +80,11 @@ flag {
  description: "Flag that enables the web content filters screen with Supervision settings entry point"
  bug: "395134536"
}

flag {
  name: "enable_lock_task_feature_quick_settings"
  is_exported: true
  namespace: "supervision"
  description: "Enables usage of lock task feature to enable Quick Settings on LockTask mode"
  bug: "401576820"
}
+6 −0
Original line number Diff line number Diff line
@@ -123,6 +123,12 @@ public class LockTaskController {
        STATUS_BAR_FLAG_MAP_LOCKED.append(DevicePolicyManager.LOCK_TASK_FEATURE_GLOBAL_ACTIONS,
                new Pair<>(StatusBarManager.DISABLE_NONE,
                        StatusBarManager.DISABLE2_GLOBAL_ACTIONS));

        if (android.app.supervision.flags.Flags.enableLockTaskFeatureQuickSettings()) {
            STATUS_BAR_FLAG_MAP_LOCKED.append(DevicePolicyManager.LOCK_TASK_FEATURE_QUICK_SETTINGS,
                    new Pair<>(StatusBarManager.DISABLE_NONE,
                            StatusBarManager.DISABLE2_QUICK_SETTINGS));
        }
    }

    /** Tag used for disabling of keyguard */
+18 −0
Original line number Diff line number Diff line
@@ -166,6 +166,7 @@ import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_HOME;
import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_KEYGUARD;
import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_NOTIFICATIONS;
import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_OVERVIEW;
import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_QUICK_SETTINGS;
import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_SYSTEM_INFO;
import static android.app.admin.DevicePolicyManager.NEARBY_STREAMING_NOT_CONTROLLED_BY_POLICY;
import static android.app.admin.DevicePolicyManager.NON_ORG_OWNED_PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER;
@@ -14911,6 +14912,23 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            "Cannot use LOCK_TASK_FEATURE_NOTIFICATIONS without LOCK_TASK_FEATURE_HOME");
        CallerIdentity caller = getCallerIdentity(who, callerPackageName);
        if (android.app.supervision.flags.Flags.enableLockTaskFeatureQuickSettings()) {
            boolean hasQuickSettings = (flags & LOCK_TASK_FEATURE_QUICK_SETTINGS) != 0;
            Preconditions.checkArgument(hasNotification || !hasQuickSettings,
                    "Cannot use LOCK_TASK_FEATURE_QUICK_SETTINGS without "
                            + "LOCK_TASK_FEATURE_NOTIFICATIONS");
            synchronized (getLockObject()) {
                // TODO(b/378102594): Remove access for test admins.
                final boolean isTestAdmin = hasActiveSupervisionTestAdminLocked(caller.getUserId());
                Preconditions.checkCallAuthorization(!hasQuickSettings
                                || isCallerSystemSupervisionRoleHolder(caller)
                                || isTestAdmin,
                        "Caller (%s) needs to hold SYSTEM_SUPERVISION role to enable "
                                + "Quick Settings on LockTask mode", caller);
            }
        }
        synchronized (getLockObject()) {
            checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_SET_LOCK_TASK_FEATURES);
        }
Loading