diff options
| author | 2022-06-28 01:34:19 +0000 | |
|---|---|---|
| committer | 2022-06-28 01:34:19 +0000 | |
| commit | e2bf40bc0ca2dc4b8ee5db0e4cc52290b0122e21 (patch) | |
| tree | e7a0c8bae408cd9ca68c0c0ba9315d1304b394dc | |
| parent | 3f6d25b5df884daac1e6d6854cba6a821253f4e0 (diff) | |
| parent | 762850ba32283c1ddba91e29774b61cca007ae49 (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.java | 13 |
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. |