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

Commit 78fc0bca authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Launch activity intents on the StatusBar's display" into sc-dev am: 3abe9687

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I7d4b1715ddf9b2fc26cf7585bb4d7de9613f78e6
parents 96ee6a8f 3abe9687
Loading
Loading
Loading
Loading
+32 −4
Original line number Diff line number Diff line
@@ -2692,6 +2692,10 @@ public class StatusBar extends SystemUI implements DemoMode,
        return mDisplay.getRotation();
    }

    int getDisplayId() {
        return mDisplayId;
    }

    public void startActivityDismissingKeyguard(final Intent intent, boolean onlyProvisioned,
            boolean dismissShade, int flags) {
        startActivityDismissingKeyguard(intent, onlyProvisioned, dismissShade,
@@ -2717,7 +2721,7 @@ public class StatusBar extends SystemUI implements DemoMode,
                    Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.addFlags(flags);
            int result = ActivityManager.START_CANCELED;
            ActivityOptions options = new ActivityOptions(getActivityOptions(
            ActivityOptions options = new ActivityOptions(getActivityOptions(mDisplayId,
                    null /* remoteAnimation */));
            options.setDisallowEnterPictureInPictureWhileLaunching(
                    disallowEnterPictureInPictureWhileLaunching);
@@ -4362,6 +4366,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        executeActionDismissingKeyguard(() -> {
            try {
                intent.send(null, 0, null, null, null, null, getActivityOptions(
                        mDisplayId,
                        mActivityLaunchAnimator.getLaunchAnimation(associatedView, isOccluded())));
            } catch (PendingIntent.CanceledException e) {
                // the stack trace isn't very helpful here.
@@ -4383,15 +4388,38 @@ public class StatusBar extends SystemUI implements DemoMode,
        mMainThreadHandler.post(runnable);
    }

    public static Bundle getActivityOptions(@Nullable RemoteAnimationAdapter animationAdapter) {
    /**
     * Returns an ActivityOptions bundle created using the given parameters.
     *
     * @param displayId The ID of the display to launch the activity in. Typically this would be the
     *                  display the status bar is on.
     * @param animationAdapter The animation adapter used to start this activity, or {@code null}
     *                         for the default animation.
     */
    public static Bundle getActivityOptions(int displayId,
            @Nullable RemoteAnimationAdapter animationAdapter) {
        return getDefaultActivityOptions(animationAdapter).toBundle();
    }

    public static Bundle getActivityOptions(@Nullable RemoteAnimationAdapter animationAdapter,
            boolean isKeyguardShowing, long eventTime) {
    /**
     * Returns an ActivityOptions bundle created using the given parameters.
     *
     * @param displayId The ID of the display to launch the activity in. Typically this would be the
     *                  display the status bar is on.
     * @param animationAdapter The animation adapter used to start this activity, or {@code null}
     *                         for the default animation.
     * @param isKeyguardShowing Whether keyguard is currently showing.
     * @param eventTime The event time in milliseconds since boot, not including sleep. See
     *                  {@link ActivityOptions#setSourceInfo}.
     */
    public static Bundle getActivityOptions(int displayId,
            @Nullable RemoteAnimationAdapter animationAdapter, boolean isKeyguardShowing,
            long eventTime) {
        ActivityOptions options = getDefaultActivityOptions(animationAdapter);
        options.setSourceInfo(isKeyguardShowing ? ActivityOptions.SourceInfo.TYPE_LOCKSCREEN
                : ActivityOptions.SourceInfo.TYPE_NOTIFICATION, eventTime);
        options.setLaunchDisplayId(displayId);
        options.setCallerDisplayId(displayId);
        return options.toBundle();
    }

+8 −2
Original line number Diff line number Diff line
@@ -427,8 +427,13 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
                                intent.getCreatorPackage(), adapter);
            }
            long eventTime = row.getAndResetLastActionUpTime();
            Bundle options = eventTime > 0 ? getActivityOptions(adapter,
                    mKeyguardStateController.isShowing(), eventTime) : getActivityOptions(adapter);
            Bundle options = eventTime > 0
                    ? getActivityOptions(
                            mStatusBar.getDisplayId(),
                            adapter,
                            mKeyguardStateController.isShowing(),
                            eventTime)
                    : getActivityOptions(mStatusBar.getDisplayId(), adapter);
            int launchResult = intent.sendAndReturnResult(mContext, 0, fillInIntent, null,
                    null, null, options);
            mMainThreadHandler.post(() -> {
@@ -450,6 +455,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
                int launchResult = TaskStackBuilder.create(mContext)
                        .addNextIntentWithParentStack(intent)
                        .startActivities(getActivityOptions(
                                mStatusBar.getDisplayId(),
                                mActivityLaunchAnimator.getLaunchAnimation(
                                        row, mStatusBar.isOccluded())),
                                new UserHandle(UserHandle.getUserId(appUid)));