Merge "Fix consequent activity launch on virtual displays" into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7a09f7ec9c
@@ -1705,6 +1705,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if caller is already present on display
|
||||||
|
final boolean uidPresentOnDisplay = activityDisplay.isUidPresent(callingUid);
|
||||||
|
|
||||||
final int displayOwnerUid = activityDisplay.mDisplay.getOwnerUid();
|
final int displayOwnerUid = activityDisplay.mDisplay.getOwnerUid();
|
||||||
if (activityDisplay.mDisplay.getType() == TYPE_VIRTUAL && displayOwnerUid != SYSTEM_UID
|
if (activityDisplay.mDisplay.getType() == TYPE_VIRTUAL && displayOwnerUid != SYSTEM_UID
|
||||||
&& displayOwnerUid != aInfo.applicationInfo.uid) {
|
&& displayOwnerUid != aInfo.applicationInfo.uid) {
|
||||||
@@ -1717,7 +1720,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
|
|||||||
}
|
}
|
||||||
// Check if the caller is allowed to embed activities from other apps.
|
// Check if the caller is allowed to embed activities from other apps.
|
||||||
if (mService.checkPermission(ACTIVITY_EMBEDDING, callingPid, callingUid)
|
if (mService.checkPermission(ACTIVITY_EMBEDDING, callingPid, callingUid)
|
||||||
== PERMISSION_DENIED) {
|
== PERMISSION_DENIED && !uidPresentOnDisplay) {
|
||||||
if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:"
|
if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:"
|
||||||
+ " disallow activity embedding without permission.");
|
+ " disallow activity embedding without permission.");
|
||||||
return false;
|
return false;
|
||||||
@@ -1738,8 +1741,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if caller is present on display
|
if (uidPresentOnDisplay) {
|
||||||
if (activityDisplay.isUidPresent(callingUid)) {
|
|
||||||
if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:"
|
if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:"
|
||||||
+ " allow launch for caller present on the display");
|
+ " allow launch for caller present on the display");
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user