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

Commit d2f17f29 authored by Jonathan Scott's avatar Jonathan Scott
Browse files

Headless fixes for cross profile apps.

Test: btest a.d.c.CrossProfileAppsTest
Bug: 278891585
Change-Id: I6430752702d3b08a6d6c08659e3c7ac40ad5e5c9
parent 32e68625
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -9599,6 +9599,7 @@ public class DevicePolicyManager {
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            } catch (IllegalArgumentException ex) {
                Log.e(TAG, "IllegalArgumentException checking isPackageSuspended", ex);
                throw new NameNotFoundException(packageName);
            }
        }
+13 −5
Original line number Diff line number Diff line
@@ -7513,6 +7513,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        boolean success = false;
        try {
            if (getCurrentForegroundUserId() == userId) {
                // TODO: We need to special case headless here as we can't switch to the system user
                mInjector.getIActivityManager().switchUser(UserHandle.USER_SYSTEM);
            }
@@ -7520,7 +7521,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            if (!success) {
                Slogf.w(LOG_TAG, "Couldn't remove user " + userId);
            } else if (isManagedProfile(userId) && !wipeSilently) {
                sendWipeProfileNotification(wipeReasonForUser);
                sendWipeProfileNotification(wipeReasonForUser,
                        UserHandle.of(getProfileParentId(userId)));
            }
        } catch (RemoteException re) {
            // Shouldn't happen
@@ -7868,7 +7870,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        });
    }
    private void sendWipeProfileNotification(String wipeReasonForUser) {
    private void sendWipeProfileNotification(String wipeReasonForUser, UserHandle user) {
        Notification notification =
                new Notification.Builder(mContext, SystemNotificationChannels.DEVICE_ADMIN)
                        .setSmallIcon(android.R.drawable.stat_sys_warning)
@@ -7877,7 +7879,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                        .setColor(mContext.getColor(R.color.system_notification_accent_color))
                        .setStyle(new Notification.BigTextStyle().bigText(wipeReasonForUser))
                        .build();
        mInjector.getNotificationManager().notify(SystemMessage.NOTE_PROFILE_WIPED, notification);
        mInjector.getNotificationManager().notifyAsUser(
                /* tag= */ null, SystemMessage.NOTE_PROFILE_WIPED, notification, user);
    }
    private String getWorkProfileDeletedTitle() {
@@ -16895,6 +16898,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                    } else {
                        granted = PackageManager.PERMISSION_GRANTED;
                    }
                }
            }
        }
@@ -19998,6 +20002,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        if (!mHasFeature) {
            return;
        }
        Objects.requireNonNull(who, "ComponentName is null");
        Objects.requireNonNull(packageNames, "Package names is null");
        final CallerIdentity caller = getCallerIdentity(who);
@@ -20014,7 +20019,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            saveSettingsLocked(caller.getUserId());
        }
        logSetCrossProfilePackages(who, packageNames);
        final CrossProfileApps crossProfileApps = mContext.getSystemService(CrossProfileApps.class);
        final CrossProfileApps crossProfileApps =
                mContext.createContextAsUser(
                        caller.getUserHandle(), /* flags= */ 0)
                        .getSystemService(CrossProfileApps.class);
        mInjector.binderWithCleanCallingIdentity(
        () -> crossProfileApps.resetInteractAcrossProfilesAppOps(
                        previousCrossProfilePackages, new HashSet<>(packageNames)));