From e03aa8f7512a690ebc25175f6c9214944c256d92 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Tue, 2 Jun 2020 11:21:38 -0400 Subject: Update conversation priority onboarding And fix a bug with toggling priority I noticed while testing Test: atest Fixes: 157988478 Bug: 155490513 Change-Id: I8f5a6076ed2aa6c862a187bac15f3ad9af3cd141 --- core/java/android/provider/Settings.java | 9 ++ .../res/layout/priority_onboarding_half_shell.xml | 176 +++++---------------- packages/SystemUI/res/values/dimens.xml | 1 + packages/SystemUI/res/values/strings.xml | 7 + .../SystemUI/src/com/android/systemui/Prefs.java | 2 +- .../row/NotificationConversationInfo.java | 34 ++-- .../notification/row/NotificationGutsManager.java | 14 +- .../row/PriorityOnboardingDialogController.kt | 64 ++++++-- .../row/NotificationConversationInfoTest.java | 93 ++++++++--- 9 files changed, 215 insertions(+), 185 deletions(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 1b19e1290121..52764d568f29 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -1777,6 +1777,15 @@ public final class Settings { public static final String ACTION_NOTIFICATION_SETTINGS = "android.settings.NOTIFICATION_SETTINGS"; + /** + * Activity Action: Show conversation settings. + * + * @hide + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_CONVERSATION_SETTINGS + = "android.settings.CONVERSATION_SETTINGS"; + /** * Activity Action: Show notification history screen. * diff --git a/packages/SystemUI/res/layout/priority_onboarding_half_shell.xml b/packages/SystemUI/res/layout/priority_onboarding_half_shell.xml index c27b3a9b3bf4..bf2eac3c8ff3 100644 --- a/packages/SystemUI/res/layout/priority_onboarding_half_shell.xml +++ b/packages/SystemUI/res/layout/priority_onboarding_half_shell.xml @@ -38,156 +38,66 @@ android:background="@drawable/rounded_bg_full" > - - + + - - - - - - - + + - - - + android:layout_height="0.5dp" + android:layout_marginTop="20dp" + android:layout_marginBottom="20dp" + android:background="@color/material_grey_300" /> - - - - - - - + android:gravity="start" + android:text="@string/priority_onboarding_behavior" + style="@style/TextAppearance.NotificationImportanceChannelGroup" + /> - - - - - - - - - - - + android:gravity="start" + android:layout_marginTop="8dp" + style="@style/TextAppearance.NotificationImportanceChannelGroup" + /> + 56dp 56dp 32dp + 6dp 24dp diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 97a0d032c4a7..39237ac246eb 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -2667,6 +2667,11 @@ Standby + + Conversation set to priority + + Priority conversations will: Show at top of conversation section @@ -2677,6 +2682,8 @@ Interrupt Do Not Disturb Got it + + Settings diff --git a/packages/SystemUI/src/com/android/systemui/Prefs.java b/packages/SystemUI/src/com/android/systemui/Prefs.java index 87990cd3bffa..ccb506de6d8b 100644 --- a/packages/SystemUI/src/com/android/systemui/Prefs.java +++ b/packages/SystemUI/src/com/android/systemui/Prefs.java @@ -124,7 +124,7 @@ public final class Prefs { String HAS_SEEN_BUBBLES_MANAGE_EDUCATION = "HasSeenBubblesManageOnboarding"; String CONTROLS_STRUCTURE_SWIPE_TOOLTIP_COUNT = "ControlsStructureSwipeTooltipCount"; /** Tracks whether the user has seen the onboarding screen for priority conversations */ - String HAS_SEEN_PRIORITY_ONBOARDING = "HasSeenPriorityOnboarding"; + String HAS_SEEN_PRIORITY_ONBOARDING = "HaveShownPriorityOnboarding"; } public static boolean getBoolean(Context context, @Key String key, boolean defaultValue) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java index daa4ffe88b4f..e9d89589172e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java @@ -53,6 +53,7 @@ import android.transition.TransitionManager; import android.transition.TransitionSet; import android.util.AttributeSet; import android.util.Log; +import android.util.Slog; import android.view.LayoutInflater; import android.view.View; import android.view.accessibility.AccessibilityEvent; @@ -115,6 +116,7 @@ public class NotificationConversationInfo extends LinearLayout implements private OnSnoozeClickListener mOnSnoozeClickListener; private OnSettingsClickListener mOnSettingsClickListener; private NotificationGuts mGutsContainer; + private OnConversationSettingsClickListener mOnConversationSettingsClickListener; @VisibleForTesting boolean mSkipPost = false; @@ -164,6 +166,10 @@ public class NotificationConversationInfo extends LinearLayout implements private OnClickListener mOnDone = v -> { mPressedApply = true; + // If the user selected Priority, maybe show the priority onboarding + if (mSelectedAction == ACTION_FAVORITE && shouldShowPriorityOnboarding()) { + showPriorityOnboarding(); + } mGutsContainer.closeControls(v, true); }; @@ -175,6 +181,10 @@ public class NotificationConversationInfo extends LinearLayout implements void onClick(View v, NotificationChannel channel, int appUid); } + public interface OnConversationSettingsClickListener { + void onClick(); + } + public interface OnAppSettingsClickListener { void onClick(View v, Intent intent); } @@ -190,14 +200,6 @@ public class NotificationConversationInfo extends LinearLayout implements } mSelectedAction = selectedAction; - onSelectedActionChanged(); - } - - private void onSelectedActionChanged() { - // If the user selected Priority, maybe show the priority onboarding - if (mSelectedAction == ACTION_FAVORITE && shouldShowPriorityOnboarding()) { - showPriorityOnboarding(); - } } public void bindNotification( @@ -216,7 +218,8 @@ public class NotificationConversationInfo extends LinearLayout implements Provider builderProvider, boolean isDeviceProvisioned, @Main Handler mainHandler, - @Background Handler bgHandler) { + @Background Handler bgHandler, + OnConversationSettingsClickListener onConversationSettingsClickListener) { mSelectedAction = -1; mINotificationManager = iNotificationManager; mVisualStabilityManager = visualStabilityManager; @@ -231,6 +234,7 @@ public class NotificationConversationInfo extends LinearLayout implements mDelegatePkg = mSbn.getOpPkg(); mIsDeviceProvisioned = isDeviceProvisioned; mOnSnoozeClickListener = onSnoozeClickListener; + mOnConversationSettingsClickListener = onConversationSettingsClickListener; mIconFactory = conversationIconFactory; mUserContext = userContext; mBubbleMetadata = bubbleMetadata; @@ -323,7 +327,6 @@ public class NotificationConversationInfo extends LinearLayout implements ImageView image = findViewById(R.id.conversation_icon); image.setImageDrawable(mIconFactory.getConversationDrawable( mShortcutInfo, mPackageName, mAppUid, important)); - } private void bindPackage() { @@ -521,9 +524,9 @@ public class NotificationConversationInfo extends LinearLayout implements boolean ignoreDnd = false; try { - ignoreDnd = (mINotificationManager - .getConsolidatedNotificationPolicy().priorityConversationSenders - & NotificationManager.Policy.CONVERSATION_SENDERS_IMPORTANT) != 0; + ignoreDnd = mINotificationManager + .getConsolidatedNotificationPolicy().priorityConversationSenders == + NotificationManager.Policy.CONVERSATION_SENDERS_IMPORTANT; } catch (RemoteException e) { Log.e(TAG, "Could not check conversation senders", e); } @@ -538,6 +541,8 @@ public class NotificationConversationInfo extends LinearLayout implements .setView(onboardingView) .setIgnoresDnd(ignoreDnd) .setShowsAsBubble(showAsBubble) + .setIcon(((ImageView) findViewById(R.id.conversation_icon)).getDrawable()) + .setOnSettingsClick(mOnConversationSettingsClickListener) .build(); controller.init(); @@ -613,8 +618,7 @@ public class NotificationConversationInfo extends LinearLayout implements try { switch (mAction) { case ACTION_FAVORITE: - mChannelToUpdate.setImportantConversation( - !mChannelToUpdate.isImportantConversation()); + mChannelToUpdate.setImportantConversation(true); if (mChannelToUpdate.isImportantConversation()) { mChannelToUpdate.setAllowBubbles(true); if (mAppBubble == BUBBLE_PREFERENCE_NONE) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java index a64dcdffff1e..1074adc3383d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java @@ -216,6 +216,11 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx } } + private void startConversationSettingsActivity(int uid, ExpandableNotificationRow row) { + final Intent intent = new Intent(Settings.ACTION_CONVERSATION_SETTINGS); + mNotificationActivityStarter.startNotificationGutsIntent(intent, uid, row); + } + private boolean bindGuts(final ExpandableNotificationRow row) { row.ensureGutsInflated(); return bindGuts(row, mGutsMenuItem); @@ -438,6 +443,12 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx mListContainer.getSwipeActionHelper().snooze(sbn, hours); }; + final NotificationConversationInfo.OnConversationSettingsClickListener + onConversationSettingsListener = + () -> { + startConversationSettingsActivity(sbn.getUid(), row); + }; + if (!userHandle.equals(UserHandle.ALL) || mLockscreenUserManager.getCurrentUserId() == UserHandle.USER_SYSTEM) { onSettingsClick = (View v, NotificationChannel channel, int appUid) -> { @@ -468,7 +479,8 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx mBuilderProvider, mDeviceProvisionedController.isDeviceProvisioned(), mMainHandler, - mBgHandler); + mBgHandler, + onConversationSettingsListener); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PriorityOnboardingDialogController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PriorityOnboardingDialogController.kt index d1b405256f39..88c325880241 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PriorityOnboardingDialogController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/PriorityOnboardingDialogController.kt @@ -21,19 +21,21 @@ import android.content.Context import android.graphics.Color import android.graphics.PixelFormat import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.Drawable +import android.text.SpannableStringBuilder +import android.text.style.BulletSpan import android.view.Gravity import android.view.View -import android.view.View.GONE import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.view.Window import android.view.WindowInsets.Type.statusBars import android.view.WindowManager -import android.widget.LinearLayout +import android.widget.ImageView import android.widget.TextView import com.android.systemui.Prefs import com.android.systemui.R -import java.lang.IllegalStateException +import com.android.systemui.statusbar.notification.row.NotificationConversationInfo.OnConversationSettingsClickListener import javax.inject.Inject /** @@ -43,7 +45,9 @@ class PriorityOnboardingDialogController @Inject constructor( val view: View, val context: Context, val ignoresDnd: Boolean, - val showsAsBubble: Boolean + val showsAsBubble: Boolean, + val icon : Drawable, + val onConversationSettingsClickListener : OnConversationSettingsClickListener ) { private lateinit var dialog: Dialog @@ -62,11 +66,21 @@ class PriorityOnboardingDialogController @Inject constructor( dialog.dismiss() } + private fun settings() { + // Log that the user has seen the onboarding + Prefs.putBoolean(context, Prefs.Key.HAS_SEEN_PRIORITY_ONBOARDING, true) + dialog.dismiss() + onConversationSettingsClickListener?.onClick() + } + class Builder @Inject constructor() { private lateinit var view: View private lateinit var context: Context private var ignoresDnd = false private var showAsBubble = false + private lateinit var icon: Drawable + private lateinit var onConversationSettingsClickListener + : OnConversationSettingsClickListener fun setView(v: View): Builder { view = v @@ -88,9 +102,20 @@ class PriorityOnboardingDialogController @Inject constructor( return this } + fun setIcon(draw : Drawable) : Builder { + icon = draw + return this + } + + fun setOnSettingsClick(onClick : OnConversationSettingsClickListener) : Builder { + onConversationSettingsClickListener = onClick + return this + } + fun build(): PriorityOnboardingDialogController { val controller = PriorityOnboardingDialogController( - view, context, ignoresDnd, showAsBubble) + view, context, ignoresDnd, showAsBubble, icon, + onConversationSettingsClickListener) return controller } } @@ -113,13 +138,32 @@ class PriorityOnboardingDialogController @Inject constructor( done() } - if (!ignoresDnd) { - findViewById(R.id.ignore_dnd_tip).visibility = GONE + findViewById(R.id.settings_button)?.setOnClickListener { + settings() } - if (!showsAsBubble) { - findViewById(R.id.floating_bubble_tip).visibility = GONE + findViewById(R.id.conversation_icon)?.setImageDrawable(icon) + + val gapWidth = dialog.context.getResources().getDimensionPixelSize( + R.dimen.conversation_onboarding_bullet_gap_width) + val description = SpannableStringBuilder() + description.append(context.getText(R.string.priority_onboarding_show_at_top_text), + BulletSpan(gapWidth), /* flags */0) + description.append(System.lineSeparator()) + description.append(context.getText(R.string.priority_onboarding_show_avatar_text), + BulletSpan(gapWidth), /* flags */0) + if (showsAsBubble) { + description.append(System.lineSeparator()) + description.append(context.getText( + R.string.priority_onboarding_appear_as_bubble_text), + BulletSpan(gapWidth), /* flags */0) + } + if (ignoresDnd) { + description.append(System.lineSeparator()) + description.append(context.getText(R.string.priority_onboarding_ignores_dnd_text), + BulletSpan(gapWidth), /* flags */0) } + findViewById(R.id.behaviors).setText(description) window?.apply { setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) @@ -129,7 +173,7 @@ class PriorityOnboardingDialogController @Inject constructor( attributes = attributes.apply { format = PixelFormat.TRANSLUCENT - title = ChannelEditorDialogController::class.java.simpleName + title = PriorityOnboardingDialogController::class.java.simpleName gravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL fitInsetsTypes = attributes.fitInsetsTypes and statusBars().inv() width = MATCH_PARENT diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java index b1f67ce8a581..4122cf5466e2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java @@ -256,7 +256,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); final ImageView view = mNotificationInfo.findViewById(R.id.conversation_icon); assertEquals(mIconDrawable, view.getDrawable()); } @@ -280,7 +280,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); final TextView textView = mNotificationInfo.findViewById(R.id.pkg_name); assertTrue(textView.getText().toString().contains("App Name")); assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility()); @@ -331,7 +331,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); final TextView textView = mNotificationInfo.findViewById(R.id.group_name); assertTrue(textView.getText().toString().contains(group.getName())); assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility()); @@ -356,7 +356,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); final TextView textView = mNotificationInfo.findViewById(R.id.group_name); assertEquals(VISIBLE, mNotificationInfo.findViewById(R.id.header).getVisibility()); assertEquals(GONE, textView.getVisibility()); @@ -380,7 +380,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); final TextView nameView = mNotificationInfo.findViewById(R.id.delegate_name); assertEquals(GONE, nameView.getVisibility()); } @@ -415,7 +415,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); final TextView nameView = mNotificationInfo.findViewById(R.id.delegate_name); assertEquals(VISIBLE, nameView.getVisibility()); assertTrue(nameView.getText().toString().contains("Proxied")); @@ -443,7 +443,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); final View settingsButton = mNotificationInfo.findViewById(R.id.info); settingsButton.performClick(); @@ -469,7 +469,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); final View settingsButton = mNotificationInfo.findViewById(R.id.info); assertTrue(settingsButton.getVisibility() != View.VISIBLE); } @@ -496,7 +496,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, false, mTestHandler, - mTestHandler); + mTestHandler, null); final View settingsButton = mNotificationInfo.findViewById(R.id.info); assertTrue(settingsButton.getVisibility() != View.VISIBLE); } @@ -521,7 +521,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); View view = mNotificationInfo.findViewById(R.id.silence); assertThat(view.isSelected()).isTrue(); } @@ -549,7 +549,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); View view = mNotificationInfo.findViewById(R.id.default_behavior); assertThat(view.isSelected()).isTrue(); assertThat(((TextView) view.findViewById(R.id.default_summary)).getText()).isEqualTo( @@ -580,7 +580,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); View view = mNotificationInfo.findViewById(R.id.default_behavior); assertThat(view.isSelected()).isTrue(); assertThat(((TextView) view.findViewById(R.id.default_summary)).getText()).isEqualTo( @@ -610,7 +610,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); View fave = mNotificationInfo.findViewById(R.id.priority); fave.performClick(); @@ -654,7 +654,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); mNotificationInfo.findViewById(R.id.default_behavior).performClick(); mTestableLooper.processAllMessages(); @@ -697,7 +697,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); View silence = mNotificationInfo.findViewById(R.id.silence); @@ -741,7 +741,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); View fave = mNotificationInfo.findViewById(R.id.priority); fave.performClick(); @@ -778,7 +778,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); View fave = mNotificationInfo.findViewById(R.id.priority); fave.performClick(); @@ -792,6 +792,45 @@ public class NotificationConversationInfoTest extends SysuiTestCase { assertEquals(IMPORTANCE_HIGH, captor.getValue().getImportance()); } + @Test + public void testFavorite_thenDefaultThenFavorite_andSave_nothingChanged() throws Exception { + mConversationChannel.setOriginalImportance(IMPORTANCE_HIGH); + mConversationChannel.setImportance(IMPORTANCE_HIGH); + mConversationChannel.setImportantConversation(true); + + mNotificationInfo.bindNotification( + mShortcutManager, + mMockPackageManager, + mMockINotificationManager, + mVisualStabilityManager, + TEST_PACKAGE_NAME, + mNotificationChannel, + mEntry, + mBubbleMetadata, + null, + null, + mIconFactory, + mContext, + mBuilderProvider, + true, + mTestHandler, + mTestHandler, null); + + View fave = mNotificationInfo.findViewById(R.id.priority); + fave.performClick(); + mNotificationInfo.findViewById(R.id.default_behavior).performClick(); + fave.performClick(); + mNotificationInfo.findViewById(R.id.done).performClick(); + mTestableLooper.processAllMessages(); + + ArgumentCaptor captor = + ArgumentCaptor.forClass(NotificationChannel.class); + verify(mMockINotificationManager, times(1)).updateNotificationChannelForPackage( + anyString(), anyInt(), captor.capture()); + assertEquals(IMPORTANCE_HIGH, captor.getValue().getImportance()); + assertTrue(captor.getValue().isImportantConversation()); + } + @Test public void testDefault_andSave() throws Exception { mConversationChannel.setAllowBubbles(true); @@ -813,7 +852,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); mNotificationInfo.findViewById(R.id.default_behavior).performClick(); mNotificationInfo.findViewById(R.id.done).performClick(); @@ -849,7 +888,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); mNotificationInfo.findViewById(R.id.default_behavior).performClick(); mNotificationInfo.findViewById(R.id.done).performClick(); @@ -885,7 +924,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); mNotificationInfo.findViewById(R.id.default_behavior).performClick(); mNotificationInfo.findViewById(R.id.done).performClick(); @@ -920,7 +959,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); View silence = mNotificationInfo.findViewById(R.id.silence); silence.performClick(); @@ -954,7 +993,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); verify(mMockINotificationManager, times(1)).createConversationNotificationChannelForPackage( anyString(), anyInt(), anyString(), any(), eq(CONVERSATION_ID)); @@ -979,7 +1018,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { mBuilderProvider, true, mTestHandler, - mTestHandler); + mTestHandler, null); verify(mMockINotificationManager, never()).createConversationNotificationChannelForPackage( anyString(), anyInt(), anyString(), any(), eq(CONVERSATION_ID)); @@ -1014,10 +1053,14 @@ public class NotificationConversationInfoTest extends SysuiTestCase { () -> b, true, mTestHandler, - mTestHandler); + mTestHandler, null); // WHEN user clicks "priority" mNotificationInfo.setSelectedAction(NotificationConversationInfo.ACTION_FAVORITE); + verify(controller, never()).show(); + + // and then done + mNotificationInfo.findViewById(R.id.done).performClick(); // THEN the user is presented with the priority onboarding screen verify(controller, atLeastOnce()).show(); @@ -1050,7 +1093,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase { () -> b, true, mTestHandler, - mTestHandler); + mTestHandler, null); // WHEN user clicks "priority" mNotificationInfo.setSelectedAction(NotificationConversationInfo.ACTION_FAVORITE); -- cgit v1.2.3-59-g8ed1b