Loading services/core/java/com/android/server/wm/ActivityStarter.java +3 −3 Original line number Diff line number Diff line Loading @@ -1018,11 +1018,11 @@ class ActivityStarter { if (mSupervisor.mRecentTasks.isCallerRecents(callingUid)) { return false; } // don't abort if the callingPackage is the device owner if (mService.isDeviceOwner(callingPackage)) { // don't abort if the callingUid is the device owner if (mService.isDeviceOwner(callingUid)) { return false; } // don't abort if the callingPackage has companion device // don't abort if the callingUid has companion device final int callingUserId = UserHandle.getUserId(callingUid); if (mService.isAssociatedCompanionApp(callingUserId, callingUid)) { return false; Loading services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +2 −2 Original line number Diff line number Diff line Loading @@ -507,9 +507,9 @@ public abstract class ActivityTaskManagerInternal { public abstract boolean isUidForeground(int uid); /** * Called by DevicePolicyManagerService to set the package name of the device owner. * Called by DevicePolicyManagerService to set the uid of the device owner. */ public abstract void setDeviceOwnerPackageName(String deviceOwnerPkg); public abstract void setDeviceOwnerUid(int uid); /** Set all associated companion app that belongs to an userId. */ public abstract void setCompanionAppPackages(int userId, Set<String> companionAppPackages); Loading services/core/java/com/android/server/wm/ActivityTaskManagerService.java +7 −10 Original line number Diff line number Diff line Loading @@ -633,7 +633,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { private FontScaleSettingObserver mFontScaleSettingObserver; private String mDeviceOwnerPackageName; private int mDeviceOwnerUid = Process.INVALID_UID; private final class FontScaleSettingObserver extends ContentObserver { private final Uri mFontScaleUri = Settings.System.getUriFor(FONT_SCALE); Loading Loading @@ -5876,15 +5876,12 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { || mWindowManager.mRoot.isAnyNonToastWindowVisibleForUid(uid); } boolean isDeviceOwner(String packageName) { if (packageName == null) { return false; } return packageName.equals(mDeviceOwnerPackageName); boolean isDeviceOwner(int uid) { return uid >= 0 && mDeviceOwnerUid == uid; } void setDeviceOwnerPackageName(String deviceOwnerPkg) { mDeviceOwnerPackageName = deviceOwnerPkg; void setDeviceOwnerUid(int uid) { mDeviceOwnerUid = uid; } /** Loading Loading @@ -7334,9 +7331,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } @Override public void setDeviceOwnerPackageName(String deviceOwnerPkg) { public void setDeviceOwnerUid(int uid) { synchronized (mGlobalLock) { ActivityTaskManagerService.this.setDeviceOwnerPackageName(deviceOwnerPkg); ActivityTaskManagerService.this.setDeviceOwnerUid(uid); } } Loading services/devicepolicy/java/com/android/server/devicepolicy/Owners.java +6 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.pm.PackageManagerInternal; import android.content.pm.UserInfo; import android.os.Binder; import android.os.Environment; import android.os.Process; import android.os.UserHandle; import android.os.UserManager; import android.os.UserManagerInternal; Loading Loading @@ -209,8 +210,11 @@ class Owners { } private void pushToActivityTaskManagerLocked() { mActivityTaskManagerInternal.setDeviceOwnerPackageName(mDeviceOwner != null ? mDeviceOwner.packageName : null); final int uid = mDeviceOwner != null ? mPackageManagerInternal.getPackageUid( mDeviceOwner.packageName, PackageManager.MATCH_ALL | PackageManager.MATCH_KNOWN_PACKAGES, mDeviceOwnerUserId) : Process.INVALID_UID; mActivityTaskManagerInternal.setDeviceOwnerUid(uid); } String getDeviceOwnerPackageName() { Loading services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +3 −3 Original line number Diff line number Diff line Loading @@ -659,7 +659,7 @@ public class ActivityStarterTests extends ActivityTestsBase { boolean hasForegroundActivities, boolean callerIsRecents, boolean callerIsTempWhitelisted, boolean callerIsInstrumentingWithBackgroundActivityStartPrivileges, boolean isCallingPackageNameDeviceOwner, boolean isCallingPackageTempWhitelisted) { boolean isCallingUidDeviceOwner, boolean isCallingPackageTempWhitelisted) { // window visibility doReturn(callingUidHasVisibleWindow).when(mService.mWindowManager.mRoot) .isAnyNonToastWindowVisibleForUid(callingUid); Loading @@ -685,8 +685,8 @@ public class ActivityStarterTests extends ActivityTestsBase { // caller is instrumenting with background activity starts privileges callerApp.setInstrumenting(callerIsInstrumentingWithBackgroundActivityStartPrivileges, callerIsInstrumentingWithBackgroundActivityStartPrivileges); // calling package name is the device owner doReturn(isCallingPackageNameDeviceOwner).when(mService).isDeviceOwner(any()); // callingUid is the device owner doReturn(isCallingUidDeviceOwner).when(mService).isDeviceOwner(callingUid); // calling package name is temporarily whitelisted doReturn(isCallingPackageTempWhitelisted).when(mService) .isPackageNameWhitelistedForBgActivityStarts("com.whatever.dude"); Loading Loading
services/core/java/com/android/server/wm/ActivityStarter.java +3 −3 Original line number Diff line number Diff line Loading @@ -1018,11 +1018,11 @@ class ActivityStarter { if (mSupervisor.mRecentTasks.isCallerRecents(callingUid)) { return false; } // don't abort if the callingPackage is the device owner if (mService.isDeviceOwner(callingPackage)) { // don't abort if the callingUid is the device owner if (mService.isDeviceOwner(callingUid)) { return false; } // don't abort if the callingPackage has companion device // don't abort if the callingUid has companion device final int callingUserId = UserHandle.getUserId(callingUid); if (mService.isAssociatedCompanionApp(callingUserId, callingUid)) { return false; Loading
services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +2 −2 Original line number Diff line number Diff line Loading @@ -507,9 +507,9 @@ public abstract class ActivityTaskManagerInternal { public abstract boolean isUidForeground(int uid); /** * Called by DevicePolicyManagerService to set the package name of the device owner. * Called by DevicePolicyManagerService to set the uid of the device owner. */ public abstract void setDeviceOwnerPackageName(String deviceOwnerPkg); public abstract void setDeviceOwnerUid(int uid); /** Set all associated companion app that belongs to an userId. */ public abstract void setCompanionAppPackages(int userId, Set<String> companionAppPackages); Loading
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +7 −10 Original line number Diff line number Diff line Loading @@ -633,7 +633,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { private FontScaleSettingObserver mFontScaleSettingObserver; private String mDeviceOwnerPackageName; private int mDeviceOwnerUid = Process.INVALID_UID; private final class FontScaleSettingObserver extends ContentObserver { private final Uri mFontScaleUri = Settings.System.getUriFor(FONT_SCALE); Loading Loading @@ -5876,15 +5876,12 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { || mWindowManager.mRoot.isAnyNonToastWindowVisibleForUid(uid); } boolean isDeviceOwner(String packageName) { if (packageName == null) { return false; } return packageName.equals(mDeviceOwnerPackageName); boolean isDeviceOwner(int uid) { return uid >= 0 && mDeviceOwnerUid == uid; } void setDeviceOwnerPackageName(String deviceOwnerPkg) { mDeviceOwnerPackageName = deviceOwnerPkg; void setDeviceOwnerUid(int uid) { mDeviceOwnerUid = uid; } /** Loading Loading @@ -7334,9 +7331,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } @Override public void setDeviceOwnerPackageName(String deviceOwnerPkg) { public void setDeviceOwnerUid(int uid) { synchronized (mGlobalLock) { ActivityTaskManagerService.this.setDeviceOwnerPackageName(deviceOwnerPkg); ActivityTaskManagerService.this.setDeviceOwnerUid(uid); } } Loading
services/devicepolicy/java/com/android/server/devicepolicy/Owners.java +6 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.pm.PackageManagerInternal; import android.content.pm.UserInfo; import android.os.Binder; import android.os.Environment; import android.os.Process; import android.os.UserHandle; import android.os.UserManager; import android.os.UserManagerInternal; Loading Loading @@ -209,8 +210,11 @@ class Owners { } private void pushToActivityTaskManagerLocked() { mActivityTaskManagerInternal.setDeviceOwnerPackageName(mDeviceOwner != null ? mDeviceOwner.packageName : null); final int uid = mDeviceOwner != null ? mPackageManagerInternal.getPackageUid( mDeviceOwner.packageName, PackageManager.MATCH_ALL | PackageManager.MATCH_KNOWN_PACKAGES, mDeviceOwnerUserId) : Process.INVALID_UID; mActivityTaskManagerInternal.setDeviceOwnerUid(uid); } String getDeviceOwnerPackageName() { Loading
services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +3 −3 Original line number Diff line number Diff line Loading @@ -659,7 +659,7 @@ public class ActivityStarterTests extends ActivityTestsBase { boolean hasForegroundActivities, boolean callerIsRecents, boolean callerIsTempWhitelisted, boolean callerIsInstrumentingWithBackgroundActivityStartPrivileges, boolean isCallingPackageNameDeviceOwner, boolean isCallingPackageTempWhitelisted) { boolean isCallingUidDeviceOwner, boolean isCallingPackageTempWhitelisted) { // window visibility doReturn(callingUidHasVisibleWindow).when(mService.mWindowManager.mRoot) .isAnyNonToastWindowVisibleForUid(callingUid); Loading @@ -685,8 +685,8 @@ public class ActivityStarterTests extends ActivityTestsBase { // caller is instrumenting with background activity starts privileges callerApp.setInstrumenting(callerIsInstrumentingWithBackgroundActivityStartPrivileges, callerIsInstrumentingWithBackgroundActivityStartPrivileges); // calling package name is the device owner doReturn(isCallingPackageNameDeviceOwner).when(mService).isDeviceOwner(any()); // callingUid is the device owner doReturn(isCallingUidDeviceOwner).when(mService).isDeviceOwner(callingUid); // calling package name is temporarily whitelisted doReturn(isCallingPackageTempWhitelisted).when(mService) .isPackageNameWhitelistedForBgActivityStarts("com.whatever.dude"); Loading