diff options
| author | Chilun Huang <chilunhuang@google.com> | 2020-08-18 02:53:49 +0000 |
|---|---|---|
| committer | Chilun <chilunhuang@google.com> | 2020-09-18 14:36:10 +0800 |
| commit | d5af95b56f232e120a7c824637d522d02b60efe4 (patch) | |
| tree | 97e93556011ab781fc88aee2a5a66cf879c6ad32 /core/java/android/app/ClientTransactionHandler.java | |
| parent | 48e000d788187714f799eb30df16a6a043b5a03e (diff) | |
Revert "Revert "Introduce ActivityTransactionItem and reduce null checks""
This reverts commit fd2be2c17882c7db2833ed35c2b4da975801e527.
Reason for revert: Reland the CL
This class is used for activity-targeting item to inherit,
which encapsulate null checks of activity client record.
This patch also change signature of ClientTransactionHandler#handle*
and reduces null checks.
In addition, add some null pointer checks after getActivityClient().
Also fix a typo in performStopActivityInner() and
performDestroyActivity().
Bug: 127877792
Bug: 164982975
Test: atest frameworks/base/core/tests/coretests/src/android/app/servertransaction
Test: atest ActivityThreadTest ActivityThreadClientTest
Test: atest TransactionExecutorTests#testActivityItemNullRecordThrowsException
Test: atest TransactionExecutorTests#testActivityItemExecute
Test: atest CtsAppTestCases:LocalActivityManagerTest
Change-Id: Ida612f1c8af7ecd7a04e69ade461403b8711508a
Diffstat (limited to 'core/java/android/app/ClientTransactionHandler.java')
| -rw-r--r-- | core/java/android/app/ClientTransactionHandler.java | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java index 2df756e80fde..ac50676ff46b 100644 --- a/core/java/android/app/ClientTransactionHandler.java +++ b/core/java/android/app/ClientTransactionHandler.java @@ -15,6 +15,8 @@ */ package android.app; +import android.annotation.NonNull; +import android.app.ActivityThread.ActivityClientRecord; import android.app.servertransaction.ClientTransaction; import android.app.servertransaction.ClientTransactionItem; import android.app.servertransaction.PendingTransactionActions; @@ -89,37 +91,38 @@ public abstract class ClientTransactionHandler { public abstract Map<IBinder, ClientTransactionItem> getActivitiesToBeDestroyed(); /** Destroy the activity. */ - public abstract void handleDestroyActivity(IBinder token, boolean finishing, int configChanges, - boolean getNonConfigInstance, String reason); + public abstract void handleDestroyActivity(@NonNull ActivityClientRecord r, boolean finishing, + int configChanges, boolean getNonConfigInstance, String reason); /** Pause the activity. */ - public abstract void handlePauseActivity(IBinder token, boolean finished, boolean userLeaving, - int configChanges, PendingTransactionActions pendingActions, String reason); + public abstract void handlePauseActivity(@NonNull ActivityClientRecord r, boolean finished, + boolean userLeaving, int configChanges, PendingTransactionActions pendingActions, + String reason); /** * Resume the activity. - * @param token Target activity token. + * @param r Target activity record. * @param finalStateRequest Flag indicating if this call is handling final lifecycle state * request for a transaction. * @param isForward Flag indicating if next transition is forward. * @param reason Reason for performing this operation. */ - public abstract void handleResumeActivity(IBinder token, boolean finalStateRequest, - boolean isForward, String reason); + public abstract void handleResumeActivity(@NonNull ActivityClientRecord r, + boolean finalStateRequest, boolean isForward, String reason); /** * Notify the activity about top resumed state change. - * @param token Target activity token. + * @param r Target activity record. * @param isTopResumedActivity Current state of the activity, {@code true} if it's the * topmost resumed activity in the system, {@code false} otherwise. * @param reason Reason for performing this operation. */ - public abstract void handleTopResumedActivityChanged(IBinder token, + public abstract void handleTopResumedActivityChanged(@NonNull ActivityClientRecord r, boolean isTopResumedActivity, String reason); /** * Stop the activity. - * @param token Target activity token. + * @param r Target activity record. * @param configChanges Activity configuration changes. * @param pendingActions Pending actions to be used on this or later stages of activity * transaction. @@ -127,38 +130,40 @@ public abstract class ClientTransactionHandler { * request for a transaction. * @param reason Reason for performing this operation. */ - public abstract void handleStopActivity(IBinder token, int configChanges, + public abstract void handleStopActivity(@NonNull ActivityClientRecord r, int configChanges, PendingTransactionActions pendingActions, boolean finalStateRequest, String reason); /** Report that activity was stopped to server. */ public abstract void reportStop(PendingTransactionActions pendingActions); /** Restart the activity after it was stopped. */ - public abstract void performRestartActivity(IBinder token, boolean start); + public abstract void performRestartActivity(@NonNull ActivityClientRecord r, boolean start); /** Set pending activity configuration in case it will be updated by other transaction item. */ - public abstract void updatePendingActivityConfiguration(IBinder activityToken, + public abstract void updatePendingActivityConfiguration(@NonNull ActivityClientRecord r, Configuration overrideConfig); /** Deliver activity (override) configuration change. */ - public abstract void handleActivityConfigurationChanged(IBinder activityToken, + public abstract void handleActivityConfigurationChanged(@NonNull ActivityClientRecord r, Configuration overrideConfig, int displayId); /** Deliver result from another activity. */ - public abstract void handleSendResult(IBinder token, List<ResultInfo> results, String reason); + public abstract void handleSendResult( + @NonNull ActivityClientRecord r, List<ResultInfo> results, String reason); /** Deliver new intent. */ - public abstract void handleNewIntent(IBinder token, List<ReferrerIntent> intents); + public abstract void handleNewIntent( + @NonNull ActivityClientRecord r, List<ReferrerIntent> intents); /** Request that an activity enter picture-in-picture. */ - public abstract void handlePictureInPictureRequested(IBinder token); + public abstract void handlePictureInPictureRequested(@NonNull ActivityClientRecord r); /** Perform activity launch. */ - public abstract Activity handleLaunchActivity(ActivityThread.ActivityClientRecord r, + public abstract Activity handleLaunchActivity(@NonNull ActivityClientRecord r, PendingTransactionActions pendingActions, Intent customIntent); /** Perform activity start. */ - public abstract void handleStartActivity(IBinder token, + public abstract void handleStartActivity(@NonNull ActivityClientRecord r, PendingTransactionActions pendingActions); /** Get package info. */ @@ -176,7 +181,7 @@ public abstract class ClientTransactionHandler { * Get {@link android.app.ActivityThread.ActivityClientRecord} instance that corresponds to the * provided token. */ - public abstract ActivityThread.ActivityClientRecord getActivityClient(IBinder token); + public abstract ActivityClientRecord getActivityClient(IBinder token); /** * Prepare activity relaunch to update internal bookkeeping. This is used to track multiple @@ -191,7 +196,7 @@ public abstract class ClientTransactionHandler { * @return An initialized instance of {@link ActivityThread.ActivityClientRecord} to use during * relaunch, or {@code null} if relaunch cancelled. */ - public abstract ActivityThread.ActivityClientRecord prepareRelaunchActivity(IBinder token, + public abstract ActivityClientRecord prepareRelaunchActivity(IBinder token, List<ResultInfo> pendingResults, List<ReferrerIntent> pendingNewIntents, int configChanges, MergedConfiguration config, boolean preserveWindow); @@ -200,14 +205,15 @@ public abstract class ClientTransactionHandler { * @param r Activity client record prepared for relaunch. * @param pendingActions Pending actions to be used on later stages of activity transaction. * */ - public abstract void handleRelaunchActivity(ActivityThread.ActivityClientRecord r, + public abstract void handleRelaunchActivity(@NonNull ActivityClientRecord r, PendingTransactionActions pendingActions); /** * Report that relaunch request was handled. - * @param token Target activity token. + * @param r Target activity record. * @param pendingActions Pending actions initialized on earlier stages of activity transaction. * Used to check if we should report relaunch to WM. * */ - public abstract void reportRelaunch(IBinder token, PendingTransactionActions pendingActions); + public abstract void reportRelaunch(@NonNull ActivityClientRecord r, + PendingTransactionActions pendingActions); } |
