Merge "Made sure smart actions now launch also inline same as activity launches" into qt-dev am: 899e3ee0dc
am: 4b8a862449
Change-Id: I668706f70f58b01e2f43c3d22428cb7eb4885143
This commit is contained in:
@@ -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().
|
||||
*/
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 */);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
@@ -4344,6 +4345,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());
|
||||
@@ -4351,7 +4359,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.
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -634,7 +634,8 @@ public class SmartReplyViewTest extends SysuiTestCase {
|
||||
|
||||
mView.getChildAt(2).performClick();
|
||||
|
||||
verify(mActivityStarter, times(1)).startPendingIntentDismissingKeyguard(any(), any());
|
||||
verify(mActivityStarter, times(1)).startPendingIntentDismissingKeyguard(any(), any(),
|
||||
any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -645,7 +646,7 @@ public class SmartReplyViewTest extends SysuiTestCase {
|
||||
|
||||
mView.getChildAt(2).performClick();
|
||||
|
||||
verify(mActivityStarter, never()).startPendingIntentDismissingKeyguard(any(), any());
|
||||
verify(mActivityStarter, never()).startPendingIntentDismissingKeyguard(any(), any(), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -657,7 +658,8 @@ public class SmartReplyViewTest extends SysuiTestCase {
|
||||
Thread.sleep(delayMs);
|
||||
mView.getChildAt(2).performClick();
|
||||
|
||||
verify(mActivityStarter, times(1)).startPendingIntentDismissingKeyguard(any(), any());
|
||||
verify(mActivityStarter, times(1)).startPendingIntentDismissingKeyguard(any(), any(),
|
||||
any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -668,7 +670,8 @@ public class SmartReplyViewTest extends SysuiTestCase {
|
||||
|
||||
mView.getChildAt(2).performClick();
|
||||
|
||||
verify(mActivityStarter, times(1)).startPendingIntentDismissingKeyguard(any(), any());
|
||||
verify(mActivityStarter, times(1)).startPendingIntentDismissingKeyguard(any(), any(),
|
||||
any());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user