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:
Selim Cinek
2019-05-01 21:37:22 -07:00
committed by android-build-merger
6 changed files with 45 additions and 12 deletions

View File

@@ -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().
*/

View File

@@ -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) {

View File

@@ -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 */);
}

View File

@@ -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.

View File

@@ -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());

View File

@@ -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