summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-05-29 16:07:29 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-05-29 16:07:29 +0000
commit7f5a592d65ede341a19e46632a10a7a6cda12475 (patch)
tree82e3dbcb0cc2e0232efb8e0ecb75fcbb3154bb54
parent9511c45efc19fcf0d398af1a3b6f8f1e30cf6c7e (diff)
parent4f3d52cfd43955844b3a3086bdd96c79f32be59d (diff)
Merge "Use killUid instead of killApplication to kill app" into rvc-dev
-rw-r--r--services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java23
-rw-r--r--services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java16
3 files changed, 18 insertions, 23 deletions
diff --git a/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java b/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java
index 37f14e8623c7..617f6879e65e 100644
--- a/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java
+++ b/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java
@@ -61,6 +61,7 @@ import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
import com.android.internal.util.FunctionalUtils.ThrowingSupplier;
import com.android.server.LocalServices;
+import com.android.server.pm.permission.PermissionManagerService;
import com.android.server.wm.ActivityTaskManagerInternal;
import java.util.ArrayList;
@@ -479,9 +480,11 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
mInjector.getAppOpsManager()
.setMode(OP_INTERACT_ACROSS_PROFILES, uid, packageName, newMode);
}
+ // Kill the UID before sending the broadcast to ensure that apps can be informed when
+ // their app-op has been revoked.
+ maybeKillUid(packageName, uid, hadPermission);
sendCanInteractAcrossProfilesChangedBroadcast(packageName, uid, UserHandle.of(userId));
maybeLogSetInteractAcrossProfilesAppOp(packageName, newMode, userId, logMetrics, uid);
- maybeKillUid(packageName, uid, hadPermission);
}
/**
@@ -496,7 +499,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
if (hasInteractAcrossProfilesPermission(packageName, uid, PermissionChecker.PID_UNKNOWN)) {
return;
}
- mInjector.killUid(packageName, uid);
+ mInjector.killUid(uid);
}
private void maybeLogSetInteractAcrossProfilesAppOp(
@@ -823,15 +826,11 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
}
@Override
- public void killUid(String packageName, int uid) {
- try {
- ActivityManager.getService().killApplication(
- packageName,
- UserHandle.getAppId(uid),
- UserHandle.getUserId(uid),
- PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED);
- } catch (RemoteException ignored) {
- }
+ public void killUid(int uid) {
+ PermissionManagerService.killUid(
+ UserHandle.getAppId(uid),
+ UserHandle.getUserId(uid),
+ PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED);
}
}
@@ -873,7 +872,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub {
int checkComponentPermission(String permission, int uid, int owningUid, boolean exported);
- void killUid(String packageName, int uid);
+ void killUid(int uid);
}
class LocalService extends CrossProfileAppsInternal {
diff --git a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java
index 715404194a28..4b25890e5fdb 100644
--- a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java
+++ b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java
@@ -747,7 +747,7 @@ public class CrossProfileAppsServiceImplRoboTest {
}
@Override
- public void killUid(String packageName, int uid) {
+ public void killUid(int uid) {
mKilledUids.add(uid);
}
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java b/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java
index a2393a80d11e..2162c0b20eac 100644
--- a/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java
@@ -32,7 +32,6 @@ import android.content.pm.PermissionInfo;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.os.IBinder;
-import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.permission.PermissionManager;
@@ -42,6 +41,7 @@ import android.util.SparseArray;
import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
import com.android.internal.util.FunctionalUtils.ThrowingSupplier;
import com.android.server.LocalServices;
+import com.android.server.pm.permission.PermissionManagerService;
import com.android.server.wm.ActivityTaskManagerInternal;
import org.junit.Before;
@@ -696,15 +696,11 @@ public class CrossProfileAppsServiceImplTest {
}
@Override
- public void killUid(String packageName, int uid) {
- try {
- ActivityManager.getService().killApplication(
- packageName,
- UserHandle.getAppId(uid),
- UserHandle.getUserId(uid),
- PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED);
- } catch (RemoteException ignored) {
- }
+ public void killUid(int uid) {
+ PermissionManagerService.killUid(
+ UserHandle.getAppId(uid),
+ UserHandle.getUserId(uid),
+ PermissionManager.KILL_APP_REASON_PERMISSIONS_REVOKED);
}
}
}