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

Commit ab4589a2 authored by Selim Cinek's avatar Selim Cinek
Browse files

Made sure smart actions now launch also inline same as activity launches

This will make the association with smart actions closer. This changes
the transition when opening an action from a two step close shade - open app
to a direct animation into the app from the notification.

Fixes: 123591046
Test: atest SystemUiTests
Change-Id: I3c92aa20437ca7c37ef27ae6618df1959ef63137
parent b8eb195e
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.systemui.plugins;
import android.annotation.Nullable;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.View;

import com.android.systemui.plugins.annotations.ProvidesInterface;

@@ -32,12 +33,19 @@ public interface ActivityStarter {
    void startPendingIntentDismissingKeyguard(PendingIntent intent);

    /**
     * Similar to {@link #startPendingIntentDismissingKeyguard(PendingIntent, Runnable)}, but allows
     * Similar to {@link #startPendingIntentDismissingKeyguard(PendingIntent)}, but allows
     * you to specify the callback that is executed on the UI thread after the intent is sent.
     */
    void startPendingIntentDismissingKeyguard(PendingIntent intent,
            Runnable intentSentUiThreadCallback);

    /**
     * Similar to {@link #startPendingIntentDismissingKeyguard(PendingIntent, Runnable)}, but also
     * specifies an associated view that should be used for the activity launch animation.
     */
    void startPendingIntentDismissingKeyguard(PendingIntent intent,
            Runnable intentSentUiThreadCallback, View associatedView);

    /**
     * The intent flag can be specified in startActivity().
     */
+11 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ package com.android.systemui;

import android.app.PendingIntent;
import android.content.Intent;
import android.view.View;

import com.android.systemui.plugins.ActivityStarter;

@@ -52,6 +53,16 @@ public class ActivityStarterDelegate implements ActivityStarter {
        mActualStarter.startPendingIntentDismissingKeyguard(intent, intentSentCallback);
    }

    @Override
    public void startPendingIntentDismissingKeyguard(PendingIntent intent,
            Runnable intentSentCallback, View associatedView) {
        if (mActualStarter == null) {
            return;
        }
        mActualStarter.startPendingIntentDismissingKeyguard(intent, intentSentCallback,
                associatedView);
    }

    @Override
    public void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade,
            int flags) {
+5 −3
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.view.RemoteAnimationAdapter;
import android.view.RemoteAnimationTarget;
import android.view.SyncRtSurfaceTransactionApplier;
import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams;
import android.view.View;

import com.android.internal.policy.ScreenDecorationsUtils;
import com.android.systemui.Interpolators;
@@ -79,11 +80,12 @@ public class ActivityLaunchAnimator {
    }

    public RemoteAnimationAdapter getLaunchAnimation(
            ExpandableNotificationRow sourceNotification, boolean occluded) {
        if (!mCallback.areLaunchAnimationsEnabled() || occluded) {
            View sourceView, boolean occluded) {
        if (!(sourceView instanceof ExpandableNotificationRow) || !mCallback.areLaunchAnimationsEnabled() || occluded) {
            return null;
        }
        AnimationRunner animationRunner = new AnimationRunner(sourceNotification);
        AnimationRunner animationRunner = new AnimationRunner(
                (ExpandableNotificationRow) sourceView);
        return new RemoteAnimationAdapter(animationRunner, ANIMATION_DURATION,
                ANIMATION_DURATION - 150 /* statusBarTransitionDelay */);
    }
+12 −3
Original line number Diff line number Diff line
@@ -593,6 +593,7 @@ public class StatusBar extends SystemUI implements DemoMode,
                updateScrimController();
            };
    private ActivityIntentHelper mActivityIntentHelper;
    private ShadeController mShadeController;

    @Override
    public void onActiveStateChanged(int code, int uid, String packageName, boolean active) {
@@ -1062,7 +1063,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        final StatusBarRemoteInputCallback mStatusBarRemoteInputCallback =
                (StatusBarRemoteInputCallback) Dependency.get(
                        NotificationRemoteInputManager.Callback.class);
        final ShadeController shadeController = Dependency.get(ShadeController.class);
        mShadeController = Dependency.get(ShadeController.class);
        final ActivityStarter activityStarter = Dependency.get(ActivityStarter.class);

        mNotificationActivityStarter = new StatusBarNotificationActivityStarter(mContext,
@@ -1070,7 +1071,7 @@ public class StatusBar extends SystemUI implements DemoMode,
                mHeadsUpManager, activityStarter, mActivityLaunchAnimator,
                mBarService, mStatusBarStateController, mKeyguardManager, mDreamManager,
                mRemoteInputManager, mStatusBarRemoteInputCallback, mGroupManager,
                mLockscreenUserManager, shadeController, mKeyguardMonitor,
                mLockscreenUserManager, mShadeController, mKeyguardMonitor,
                mNotificationInterruptionStateProvider, mMetricsLogger,
                new LockPatternUtils(mContext), Dependency.get(MAIN_HANDLER),
                Dependency.get(BG_HANDLER), mActivityIntentHelper, mBubbleController);
@@ -4356,6 +4357,13 @@ public class StatusBar extends SystemUI implements DemoMode,
    @Override
    public void startPendingIntentDismissingKeyguard(
            final PendingIntent intent, @Nullable final Runnable intentSentUiThreadCallback) {
        startPendingIntentDismissingKeyguard(intent, intentSentUiThreadCallback, null /* row */);
    }

    @Override
    public void startPendingIntentDismissingKeyguard(
            final PendingIntent intent, @Nullable final Runnable intentSentUiThreadCallback,
            View associatedView) {
        final boolean afterKeyguardGone = intent.isActivity()
                && mActivityIntentHelper.wouldLaunchResolverActivity(intent.getIntent(),
                mLockscreenUserManager.getCurrentUserId());
@@ -4363,7 +4371,8 @@ public class StatusBar extends SystemUI implements DemoMode,
        executeActionDismissingKeyguard(() -> {
            try {
                intent.send(null, 0, null, null, null, null, getActivityOptions(
                        null /* animationAdapter */));
                        mActivityLaunchAnimator.getLaunchAnimation(associatedView,
                                mShadeController.isOccluded())));
            } catch (PendingIntent.CanceledException e) {
                // the stack trace isn't very helpful here.
                // Just log the exception message.
+1 −1
Original line number Diff line number Diff line
@@ -349,7 +349,7 @@ public class SmartReplyView extends ViewGroup {
                            smartReplyController.smartActionClicked(
                                    entry, actionIndex, action, smartActions.fromAssistant);
                            headsUpManager.removeNotification(entry.key, true);
                        });
                        }, entry.getRow());
        if (useDelayedOnClickListener) {
            onClickListener = new DelayedOnClickListener(onClickListener,
                    smartReplyView.mConstants.getOnClickInitDelay());
Loading