Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9900aed2 authored by Android Build Prod User's avatar Android Build Prod User Committed by Automerger Merge Worker
Browse files

Merge "Update the failure while start activity in TaskFragment" into sc-v2-dev am: c785a6ac

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15659009

Change-Id: I7352d6e898e8656be52e0a80c36e42e01e9ae6d8
parents a9c9dd67 c785a6ac
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -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);
        }
    }
}