diff options
| author | Andrii Kulian <akulian@google.com> | 2021-08-04 02:57:28 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-08-04 02:57:28 +0000 |
| commit | 9a6c91dc109406a61dcda44f55be37863623f8b3 (patch) | |
| tree | 5e6faa32699d603ee53e4407f5ef395377041f0a /core/java/android | |
| parent | 42802629a60c8a79e4f13cdc126f333702a1129a (diff) | |
| parent | 8a3e649655a3d3c10591a356cb42b044cbab5409 (diff) | |
Merge "Intercept activity start requests in client organizer" into sc-v2-dev am: 94a6a10f90 am: 8a3e649655
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15411942
Change-Id: I375bb0707edfb319998bff3be95555b067076897
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/ActivityOptions.java | 24 | ||||
| -rw-r--r-- | core/java/android/app/Instrumentation.java | 41 |
2 files changed, 59 insertions, 6 deletions
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index 8e1f263ebf03..76f873185267 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -215,6 +215,14 @@ public class ActivityOptions { "android.activity.launchRootTaskToken"; /** + * The {@link com.android.server.wm.TaskFragment} token the activity should be launched into. + * @see #setLaunchTaskFragmentToken(IBinder) + * @hide + */ + public static final String KEY_LAUNCH_TASK_FRAGMENT_TOKEN = + "android.activity.launchTaskFragmentToken"; + + /** * The windowing mode the activity should be launched into. * @hide */ @@ -396,6 +404,7 @@ public class ActivityOptions { private int mCallerDisplayId = INVALID_DISPLAY; private WindowContainerToken mLaunchTaskDisplayArea; private WindowContainerToken mLaunchRootTask; + private IBinder mLaunchTaskFragmentToken; @WindowConfiguration.WindowingMode private int mLaunchWindowingMode = WINDOWING_MODE_UNDEFINED; @WindowConfiguration.ActivityType @@ -1138,6 +1147,7 @@ public class ActivityOptions { mCallerDisplayId = opts.getInt(KEY_CALLER_DISPLAY_ID, INVALID_DISPLAY); mLaunchTaskDisplayArea = opts.getParcelable(KEY_LAUNCH_TASK_DISPLAY_AREA_TOKEN); mLaunchRootTask = opts.getParcelable(KEY_LAUNCH_ROOT_TASK_TOKEN); + mLaunchTaskFragmentToken = opts.getBinder(KEY_LAUNCH_TASK_FRAGMENT_TOKEN); mLaunchWindowingMode = opts.getInt(KEY_LAUNCH_WINDOWING_MODE, WINDOWING_MODE_UNDEFINED); mLaunchActivityType = opts.getInt(KEY_LAUNCH_ACTIVITY_TYPE, ACTIVITY_TYPE_UNDEFINED); mLaunchTaskId = opts.getInt(KEY_LAUNCH_TASK_ID, -1); @@ -1473,6 +1483,17 @@ public class ActivityOptions { } /** @hide */ + public IBinder getLaunchTaskFragmentToken() { + return mLaunchTaskFragmentToken; + } + + /** @hide */ + public ActivityOptions setLaunchTaskFragmentToken(IBinder taskFragmentToken) { + mLaunchTaskFragmentToken = taskFragmentToken; + return this; + } + + /** @hide */ public int getLaunchWindowingMode() { return mLaunchWindowingMode; } @@ -1882,6 +1903,9 @@ public class ActivityOptions { if (mLaunchRootTask != null) { b.putParcelable(KEY_LAUNCH_ROOT_TASK_TOKEN, mLaunchRootTask); } + if (mLaunchTaskFragmentToken != null) { + b.putBinder(KEY_LAUNCH_TASK_FRAGMENT_TOKEN, mLaunchTaskFragmentToken); + } if (mLaunchWindowingMode != WINDOWING_MODE_UNDEFINED) { b.putInt(KEY_LAUNCH_WINDOWING_MODE, mLaunchWindowingMode); } diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java index b2184fe65887..45db0f6ff3e2 100644 --- a/core/java/android/app/Instrumentation.java +++ b/core/java/android/app/Instrumentation.java @@ -743,6 +743,17 @@ public class Instrumentation { } /** + * This overload is used for notifying the {@link android.window.TaskFragmentOrganizer} + * implementation internally about started activities. + * + * @see #onStartActivity(Intent) + * @hide + */ + public ActivityResult onStartActivity(Context who, Intent intent, Bundle options) { + return onStartActivity(intent); + } + + /** * Used for intercepting any started activity. * * <p> A non-null return value here will be considered a hit for this monitor. @@ -1722,7 +1733,10 @@ public class Instrumentation { final ActivityMonitor am = mActivityMonitors.get(i); ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { - result = am.onStartActivity(intent); + if (options == null) { + options = ActivityOptions.makeBasic().toBundle(); + } + result = am.onStartActivity(who, intent, options); } if (result != null) { am.mHits++; @@ -1790,7 +1804,10 @@ public class Instrumentation { final ActivityMonitor am = mActivityMonitors.get(i); ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { - result = am.onStartActivity(intents[0]); + if (options == null) { + options = ActivityOptions.makeBasic().toBundle(); + } + result = am.onStartActivity(who, intents[0], options); } if (result != null) { am.mHits++; @@ -1861,7 +1878,10 @@ public class Instrumentation { final ActivityMonitor am = mActivityMonitors.get(i); ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { - result = am.onStartActivity(intent); + if (options == null) { + options = ActivityOptions.makeBasic().toBundle(); + } + result = am.onStartActivity(who, intent, options); } if (result != null) { am.mHits++; @@ -1928,7 +1948,10 @@ public class Instrumentation { final ActivityMonitor am = mActivityMonitors.get(i); ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { - result = am.onStartActivity(intent); + if (options == null) { + options = ActivityOptions.makeBasic().toBundle(); + } + result = am.onStartActivity(who, intent, options); } if (result != null) { am.mHits++; @@ -1974,7 +1997,10 @@ public class Instrumentation { final ActivityMonitor am = mActivityMonitors.get(i); ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { - result = am.onStartActivity(intent); + if (options == null) { + options = ActivityOptions.makeBasic().toBundle(); + } + result = am.onStartActivity(who, intent, options); } if (result != null) { am.mHits++; @@ -2021,7 +2047,10 @@ public class Instrumentation { final ActivityMonitor am = mActivityMonitors.get(i); ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { - result = am.onStartActivity(intent); + if (options == null) { + options = ActivityOptions.makeBasic().toBundle(); + } + result = am.onStartActivity(who, intent, options); } if (result != null) { am.mHits++; |
