diff options
author | Android Build Prod User <android-build-prod@system.gserviceaccount.com> | 2021-08-26 05:12:07 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-08-26 05:12:07 +0000 |
commit | c785a6ac16f47d51a1853dd9966c257d8034377f (patch) | |
tree | e9acc8b28cd490d2bc89474083a463f2f4eb8efa | |
parent | 793bcbcbe06d22706211ef44054998a85fd9e2d1 (diff) | |
parent | 505ff7a384e9acc683b04817ad6026ade1c14c15 (diff) |
Merge "Update the failure while start activity in TaskFragment" into sc-v2-dev
-rw-r--r-- | services/core/java/com/android/server/wm/WindowOrganizerController.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index 45c47bab1175..b568774903c2 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -56,6 +56,7 @@ import android.os.Bundle; import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; +import android.util.AndroidRuntimeException; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Slog; @@ -698,10 +699,9 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub .startActivityInTaskFragment(tf, activityIntent, activityOptions, hop.getCallingActivity()); if (!isStartResultSuccessful(result)) { - final Throwable exception = - new ActivityNotFoundException("start activity in taskFragment failed"); sendTaskFragmentOperationFailure(tf.getTaskFragmentOrganizer(), - errorCallbackToken, exception); + errorCallbackToken, + convertStartFailureToThrowable(result, activityIntent)); } break; case HIERARCHY_OP_TYPE_REPARENT_ACTIVITY_TO_TASK_FRAGMENT: @@ -1223,4 +1223,21 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub mService.mTaskFragmentOrganizerController .onTaskFragmentError(organizer, errorCallbackToken, exception); } + + private Throwable convertStartFailureToThrowable(int result, Intent intent) { + switch (result) { + case ActivityManager.START_INTENT_NOT_RESOLVED: + case ActivityManager.START_CLASS_NOT_FOUND: + return new ActivityNotFoundException("No Activity found to handle " + intent); + case ActivityManager.START_PERMISSION_DENIED: + return new SecurityException("Permission denied and not allowed to start activity " + + intent); + case ActivityManager.START_CANCELED: + return new AndroidRuntimeException("Activity could not be started for " + intent + + " with error code : " + result); + default: + return new AndroidRuntimeException("Start activity failed with error code : " + + result + " when starting " + intent); + } + } } |