summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Louis Chang <louischang@google.com> 2022-06-28 01:34:19 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-06-28 01:34:19 +0000
commite2bf40bc0ca2dc4b8ee5db0e4cc52290b0122e21 (patch)
treee7a0c8bae408cd9ca68c0c0ba9315d1304b394dc
parent3f6d25b5df884daac1e6d6854cba6a821253f4e0 (diff)
parent762850ba32283c1ddba91e29774b61cca007ae49 (diff)
Merge "Send RESULT_CANCELED immediately if start-activity-for-result across TaskFragments" into tm-qpr-dev
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index fc412cbdad72..960b1bcd5c42 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -2576,6 +2576,7 @@ class ActivityStarter {
mInTask = null;
}
mInTaskFragment = inTaskFragment;
+ sendNewTaskFragmentResultRequestIfNeeded();
mStartFlags = startFlags;
// If the onlyIfNeeded flag is set, then we can do this if the activity being launched
@@ -2618,6 +2619,18 @@ class ActivityStarter {
}
}
+ private void sendNewTaskFragmentResultRequestIfNeeded() {
+ if (mStartActivity.resultTo != null && mInTaskFragment != null
+ && mInTaskFragment != mStartActivity.resultTo.getTaskFragment()) {
+ Slog.w(TAG,
+ "Activity is launching as a new TaskFragment, so cancelling activity result.");
+ mStartActivity.resultTo.sendResult(INVALID_UID, mStartActivity.resultWho,
+ mStartActivity.requestCode, RESULT_CANCELED,
+ null /* data */, null /* dataGrants */);
+ mStartActivity.resultTo = null;
+ }
+ }
+
private void computeLaunchingTaskFlags() {
// If the caller is not coming from another activity, but has given us an explicit task into
// which they would like us to launch the new activity, then let's see about doing that.