Merge "Show conversation guts when HUNing" into rvc-dev am: 161cdc30ec am: a43d3edfe1

Change-Id: I2eabe722c4d7a4bfa1f5da06b6901d32d0f15307
This commit is contained in:
Steve Elliott
2020-04-03 15:17:57 +00:00
committed by Automerger Merge Worker
7 changed files with 78 additions and 31 deletions

View File

@@ -89,6 +89,7 @@ import com.android.systemui.statusbar.notification.NotificationUtils;
import com.android.systemui.statusbar.notification.VisualStabilityManager; import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.logging.NotificationCounters; import com.android.systemui.statusbar.notification.logging.NotificationCounters;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper; import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper;
import com.android.systemui.statusbar.notification.stack.AmbientState; import com.android.systemui.statusbar.notification.stack.AmbientState;
@@ -148,6 +149,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
private KeyguardBypassController mBypassController; private KeyguardBypassController mBypassController;
private LayoutListener mLayoutListener; private LayoutListener mLayoutListener;
private RowContentBindStage mRowContentBindStage; private RowContentBindStage mRowContentBindStage;
private PeopleNotificationIdentifier mPeopleNotificationIdentifier;
private int mIconTransformContentShift; private int mIconTransformContentShift;
private int mMaxHeadsUpHeightBeforeN; private int mMaxHeadsUpHeightBeforeN;
private int mMaxHeadsUpHeightBeforeP; private int mMaxHeadsUpHeightBeforeP;
@@ -1145,7 +1147,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
@Override @Override
public void onPluginDisconnected(NotificationMenuRowPlugin plugin) { public void onPluginDisconnected(NotificationMenuRowPlugin plugin) {
boolean existed = mMenuRow.getMenuView() != null; boolean existed = mMenuRow.getMenuView() != null;
mMenuRow = new NotificationMenuRow(mContext); mMenuRow = new NotificationMenuRow(mContext, mPeopleNotificationIdentifier);
if (existed) { if (existed) {
createMenu(); createMenu();
} }
@@ -1582,7 +1584,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
public ExpandableNotificationRow(Context context, AttributeSet attrs) { public ExpandableNotificationRow(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
mMenuRow = new NotificationMenuRow(mContext);
mImageResolver = new NotificationInlineImageResolver(context, mImageResolver = new NotificationInlineImageResolver(context,
new NotificationInlineImageCache()); new NotificationInlineImageCache());
initDimens(); initDimens();
@@ -1603,9 +1604,13 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
NotificationMediaManager notificationMediaManager, NotificationMediaManager notificationMediaManager,
OnAppOpsClickListener onAppOpsClickListener, OnAppOpsClickListener onAppOpsClickListener,
FalsingManager falsingManager, FalsingManager falsingManager,
StatusBarStateController statusBarStateController) { StatusBarStateController statusBarStateController,
PeopleNotificationIdentifier peopleNotificationIdentifier) {
mAppName = appName; mAppName = appName;
if (mMenuRow != null && mMenuRow.getMenuView() != null) { if (mMenuRow == null) {
mMenuRow = new NotificationMenuRow(mContext, peopleNotificationIdentifier);
}
if (mMenuRow.getMenuView() != null) {
mMenuRow.setAppName(mAppName); mMenuRow.setAppName(mAppName);
} }
mLogger = logger; mLogger = logger;
@@ -1620,6 +1625,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
setAppOpsOnClickListener(onAppOpsClickListener); setAppOpsOnClickListener(onAppOpsClickListener);
mFalsingManager = falsingManager; mFalsingManager = falsingManager;
mStatusbarStateController = statusBarStateController; mStatusbarStateController = statusBarStateController;
mPeopleNotificationIdentifier = peopleNotificationIdentifier;
} }
private void initDimens() { private void initDimens() {

View File

@@ -28,6 +28,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.notification.logging.NotificationLogger; import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.row.dagger.AppName; import com.android.systemui.statusbar.notification.row.dagger.AppName;
import com.android.systemui.statusbar.notification.row.dagger.DismissRunnable; import com.android.systemui.statusbar.notification.row.dagger.DismissRunnable;
import com.android.systemui.statusbar.notification.row.dagger.NotificationKey; import com.android.systemui.statusbar.notification.row.dagger.NotificationKey;
@@ -68,6 +69,7 @@ public class ExpandableNotificationRowController {
private Runnable mOnDismissRunnable; private Runnable mOnDismissRunnable;
private final FalsingManager mFalsingManager; private final FalsingManager mFalsingManager;
private final boolean mAllowLongPress; private final boolean mAllowLongPress;
private final PeopleNotificationIdentifier mPeopleNotificationIdentifier;
@Inject @Inject
public ExpandableNotificationRowController(ExpandableNotificationRow view, public ExpandableNotificationRowController(ExpandableNotificationRow view,
@@ -83,7 +85,8 @@ public class ExpandableNotificationRowController {
NotificationRowContentBinder.InflationCallback inflationCallback, NotificationRowContentBinder.InflationCallback inflationCallback,
NotificationGutsManager notificationGutsManager, NotificationGutsManager notificationGutsManager,
@Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowLongPress, @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowLongPress,
@DismissRunnable Runnable onDismissRunnable, FalsingManager falsingManager) { @DismissRunnable Runnable onDismissRunnable, FalsingManager falsingManager,
PeopleNotificationIdentifier peopleNotificationIdentifier) {
mView = view; mView = view;
mActivatableNotificationViewController = activatableNotificationViewController; mActivatableNotificationViewController = activatableNotificationViewController;
mMediaManager = mediaManager; mMediaManager = mediaManager;
@@ -104,6 +107,7 @@ public class ExpandableNotificationRowController {
mOnAppOpsClickListener = mNotificationGutsManager::openGuts; mOnAppOpsClickListener = mNotificationGutsManager::openGuts;
mAllowLongPress = allowLongPress; mAllowLongPress = allowLongPress;
mFalsingManager = falsingManager; mFalsingManager = falsingManager;
mPeopleNotificationIdentifier = peopleNotificationIdentifier;
} }
/** /**
@@ -123,7 +127,8 @@ public class ExpandableNotificationRowController {
mMediaManager, mMediaManager,
mOnAppOpsClickListener, mOnAppOpsClickListener,
mFalsingManager, mFalsingManager,
mStatusBarStateController mStatusBarStateController,
mPeopleNotificationIdentifier
); );
mView.setOnDismissRunnable(mOnDismissRunnable); mView.setOnDismissRunnable(mOnDismissRunnable);
mView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); mView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);

View File

@@ -45,8 +45,9 @@ import com.android.systemui.Interpolators;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.statusbar.AlphaOptimizedImageView; import com.android.systemui.statusbar.AlphaOptimizedImageView;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.row.NotificationGuts.GutsContent; import com.android.systemui.statusbar.notification.row.NotificationGuts.GutsContent;
import com.android.systemui.statusbar.notification.stack.NotificationSectionsManager;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import java.util.ArrayList; import java.util.ArrayList;
@@ -114,12 +115,16 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
private boolean mIsUserTouching; private boolean mIsUserTouching;
public NotificationMenuRow(Context context) { private final PeopleNotificationIdentifier mPeopleNotificationIdentifier;
public NotificationMenuRow(Context context,
PeopleNotificationIdentifier peopleNotificationIdentifier) {
mContext = context; mContext = context;
mShouldShowMenu = context.getResources().getBoolean(R.bool.config_showNotificationGear); mShouldShowMenu = context.getResources().getBoolean(R.bool.config_showNotificationGear);
mHandler = new Handler(Looper.getMainLooper()); mHandler = new Handler(Looper.getMainLooper());
mLeftMenuItems = new ArrayList<>(); mLeftMenuItems = new ArrayList<>();
mRightMenuItems = new ArrayList<>(); mRightMenuItems = new ArrayList<>();
mPeopleNotificationIdentifier = peopleNotificationIdentifier;
} }
@Override @Override
@@ -260,7 +265,10 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl
mSnoozeItem = createSnoozeItem(mContext); mSnoozeItem = createSnoozeItem(mContext);
} }
mAppOpsItem = createAppOpsItem(mContext); mAppOpsItem = createAppOpsItem(mContext);
if (mParent.getEntry().getBucket() == NotificationSectionsManager.BUCKET_PEOPLE) { NotificationEntry entry = mParent.getEntry();
int personNotifType = mPeopleNotificationIdentifier
.getPeopleNotificationType(entry.getSbn(), entry.getRanking());
if (personNotifType != PeopleNotificationIdentifier.TYPE_NON_PERSON) {
mInfoItem = createConversationItem(mContext); mInfoItem = createConversationItem(mContext);
} else { } else {
mInfoItem = createInfoItem(mContext); mInfoItem = createInfoItem(mContext);

View File

@@ -131,6 +131,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
@Mock private ActivatableNotificationViewController mActivatableNotificationViewController; @Mock private ActivatableNotificationViewController mActivatableNotificationViewController;
@Mock private NotificationRowComponent.Builder mNotificationRowComponentBuilder; @Mock private NotificationRowComponent.Builder mNotificationRowComponentBuilder;
@Mock private PeopleNotificationIdentifier mPeopleNotificationIdentifier;
private StatusBarNotification mSbn; private StatusBarNotification mSbn;
private NotificationListenerService.RankingMap mRankingMap; private NotificationListenerService.RankingMap mRankingMap;
@@ -239,7 +240,8 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase {
mGutsManager, mGutsManager,
true, true,
null, null,
mFalsingManager mFalsingManager,
mPeopleNotificationIdentifier
)); ));
when(mNotificationRowComponentBuilder.activatableNotificationView(any())) when(mNotificationRowComponentBuilder.activatableNotificationView(any()))

View File

@@ -72,6 +72,7 @@ import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.VisualStabilityManager; import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider; import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.row.NotificationGutsManager.OnSettingsClickListener; import com.android.systemui.statusbar.notification.row.NotificationGutsManager.OnSettingsClickListener;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBar;
@@ -118,6 +119,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase {
@Mock private INotificationManager mINotificationManager; @Mock private INotificationManager mINotificationManager;
@Mock private LauncherApps mLauncherApps; @Mock private LauncherApps mLauncherApps;
@Mock private ShortcutManager mShortcutManager; @Mock private ShortcutManager mShortcutManager;
@Mock private PeopleNotificationIdentifier mPeopleNotificationIdentifier;
@Before @Before
public void setUp() { public void setUp() {
@@ -465,7 +467,8 @@ public class NotificationGutsManagerTest extends SysuiTestCase {
} }
private NotificationMenuRowPlugin.MenuItem createTestMenuItem(ExpandableNotificationRow row) { private NotificationMenuRowPlugin.MenuItem createTestMenuItem(ExpandableNotificationRow row) {
NotificationMenuRowPlugin menuRow = new NotificationMenuRow(mContext); NotificationMenuRowPlugin menuRow =
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier);
menuRow.createMenu(row, row.getEntry().getSbn()); menuRow.createMenu(row, row.getEntry().getSbn());
NotificationMenuRowPlugin.MenuItem menuItem = menuRow.getLongpressMenuItem(mContext); NotificationMenuRowPlugin.MenuItem menuItem = menuRow.getLongpressMenuItem(mContext);

View File

@@ -40,6 +40,7 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.utils.leaks.LeakCheckedTest; import com.android.systemui.utils.leaks.LeakCheckedTest;
import org.junit.After; import org.junit.After;
@@ -54,11 +55,13 @@ import org.mockito.Mockito;
public class NotificationMenuRowTest extends LeakCheckedTest { public class NotificationMenuRowTest extends LeakCheckedTest {
private ExpandableNotificationRow mRow; private ExpandableNotificationRow mRow;
private PeopleNotificationIdentifier mPeopleNotificationIdentifier;
@Before @Before
public void setup() { public void setup() {
injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES); injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES);
mRow = mock(ExpandableNotificationRow.class); mRow = mock(ExpandableNotificationRow.class);
mPeopleNotificationIdentifier = mock(PeopleNotificationIdentifier.class);
NotificationEntry entry = new NotificationEntryBuilder().build(); NotificationEntry entry = new NotificationEntryBuilder().build();
when(mRow.getEntry()).thenReturn(entry); when(mRow.getEntry()).thenReturn(entry);
} }
@@ -71,7 +74,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testAttachDetach() { public void testAttachDetach() {
NotificationMenuRowPlugin row = new NotificationMenuRow(mContext); NotificationMenuRowPlugin row =
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier);
row.createMenu(mRow, null); row.createMenu(mRow, null);
ViewUtils.attachView(row.getMenuView()); ViewUtils.attachView(row.getMenuView());
TestableLooper.get(this).processAllMessages(); TestableLooper.get(this).processAllMessages();
@@ -81,7 +85,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testRecreateMenu() { public void testRecreateMenu() {
NotificationMenuRowPlugin row = new NotificationMenuRow(mContext); NotificationMenuRowPlugin row =
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier);
row.createMenu(mRow, null); row.createMenu(mRow, null);
assertTrue(row.getMenuView() != null); assertTrue(row.getMenuView() != null);
row.createMenu(mRow, null); row.createMenu(mRow, null);
@@ -90,7 +95,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testResetUncreatedMenu() { public void testResetUncreatedMenu() {
NotificationMenuRowPlugin row = new NotificationMenuRow(mContext); NotificationMenuRowPlugin row =
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier);
row.resetMenu(); row.resetMenu();
} }
@@ -99,7 +105,7 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
public void testNoAppOpsInSlowSwipe() { public void testNoAppOpsInSlowSwipe() {
Settings.Secure.putInt(mContext.getContentResolver(), SHOW_NOTIFICATION_SNOOZE, 0); Settings.Secure.putInt(mContext.getContentResolver(), SHOW_NOTIFICATION_SNOOZE, 0);
NotificationMenuRow row = new NotificationMenuRow(mContext); NotificationMenuRow row = new NotificationMenuRow(mContext, mPeopleNotificationIdentifier);
row.createMenu(mRow, null); row.createMenu(mRow, null);
ViewGroup container = (ViewGroup) row.getMenuView(); ViewGroup container = (ViewGroup) row.getMenuView();
@@ -111,7 +117,7 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
public void testNoSnoozeInSlowSwipe() { public void testNoSnoozeInSlowSwipe() {
Settings.Secure.putInt(mContext.getContentResolver(), SHOW_NOTIFICATION_SNOOZE, 0); Settings.Secure.putInt(mContext.getContentResolver(), SHOW_NOTIFICATION_SNOOZE, 0);
NotificationMenuRow row = new NotificationMenuRow(mContext); NotificationMenuRow row = new NotificationMenuRow(mContext, mPeopleNotificationIdentifier);
row.createMenu(mRow, null); row.createMenu(mRow, null);
ViewGroup container = (ViewGroup) row.getMenuView(); ViewGroup container = (ViewGroup) row.getMenuView();
@@ -123,7 +129,7 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
public void testSnoozeInSlowSwipe() { public void testSnoozeInSlowSwipe() {
Settings.Secure.putInt(mContext.getContentResolver(), SHOW_NOTIFICATION_SNOOZE, 1); Settings.Secure.putInt(mContext.getContentResolver(), SHOW_NOTIFICATION_SNOOZE, 1);
NotificationMenuRow row = new NotificationMenuRow(mContext); NotificationMenuRow row = new NotificationMenuRow(mContext, mPeopleNotificationIdentifier);
row.createMenu(mRow, null); row.createMenu(mRow, null);
ViewGroup container = (ViewGroup) row.getMenuView(); ViewGroup container = (ViewGroup) row.getMenuView();
@@ -133,7 +139,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testIsSnappedAndOnSameSide() { public void testIsSnappedAndOnSameSide() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
when(row.isMenuVisible()).thenReturn(true); when(row.isMenuVisible()).thenReturn(true);
when(row.isMenuSnapped()).thenReturn(true); when(row.isMenuSnapped()).thenReturn(true);
@@ -165,7 +172,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testGetMenuSnapTarget() { public void testGetMenuSnapTarget() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
when(row.isMenuOnLeft()).thenReturn(true); when(row.isMenuOnLeft()).thenReturn(true);
doReturn(30).when(row).getSpaceForMenu(); doReturn(30).when(row).getSpaceForMenu();
@@ -179,7 +187,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testIsSwipedEnoughToShowMenu() { public void testIsSwipedEnoughToShowMenu() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
when(row.isMenuVisible()).thenReturn(true); when(row.isMenuVisible()).thenReturn(true);
when(row.isMenuOnLeft()).thenReturn(true); when(row.isMenuOnLeft()).thenReturn(true);
doReturn(40f).when(row).getMinimumSwipeDistance(); doReturn(40f).when(row).getMinimumSwipeDistance();
@@ -205,7 +214,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testIsWithinSnapMenuThreshold() { public void testIsWithinSnapMenuThreshold() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
doReturn(30f).when(row).getSnapBackThreshold(); doReturn(30f).when(row).getSnapBackThreshold();
doReturn(50f).when(row).getDismissThreshold(); doReturn(50f).when(row).getDismissThreshold();
@@ -238,7 +248,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testShouldSnapBack() { public void testShouldSnapBack() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
doReturn(40f).when(row).getSnapBackThreshold(); doReturn(40f).when(row).getSnapBackThreshold();
when(row.isMenuVisible()).thenReturn(false); when(row.isMenuVisible()).thenReturn(false);
when(row.isMenuOnLeft()).thenReturn(true); when(row.isMenuOnLeft()).thenReturn(true);
@@ -259,7 +270,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testCanBeDismissed() { public void testCanBeDismissed() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
ExpandableNotificationRow parent = mock(ExpandableNotificationRow.class); ExpandableNotificationRow parent = mock(ExpandableNotificationRow.class);
when(row.getParent()).thenReturn(parent); when(row.getParent()).thenReturn(parent);
@@ -274,7 +286,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testIsTowardsMenu() { public void testIsTowardsMenu() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
when(row.isMenuVisible()).thenReturn(true); when(row.isMenuVisible()).thenReturn(true);
when(row.isMenuOnLeft()).thenReturn(true); when(row.isMenuOnLeft()).thenReturn(true);
@@ -294,7 +307,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void onSnapBack() { public void onSnapBack() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
NotificationMenuRowPlugin.OnMenuEventListener listener = mock(NotificationMenuRowPlugin NotificationMenuRowPlugin.OnMenuEventListener listener = mock(NotificationMenuRowPlugin
.OnMenuEventListener.class); .OnMenuEventListener.class);
row.setMenuClickListener(listener); row.setMenuClickListener(listener);
@@ -315,7 +329,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testOnSnap() { public void testOnSnap() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
when(row.isMenuOnLeft()).thenReturn(true); when(row.isMenuOnLeft()).thenReturn(true);
NotificationMenuRowPlugin.OnMenuEventListener listener = mock(NotificationMenuRowPlugin NotificationMenuRowPlugin.OnMenuEventListener listener = mock(NotificationMenuRowPlugin
.OnMenuEventListener.class); .OnMenuEventListener.class);
@@ -335,7 +350,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testOnDismiss() { public void testOnDismiss() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
doNothing().when(row).cancelDrag(); doNothing().when(row).cancelDrag();
row.onSnapOpen(); row.onSnapOpen();
@@ -351,7 +367,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testOnDown() { public void testOnDown() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
doNothing().when(row).beginDrag(); doNothing().when(row).beginDrag();
row.onTouchStart(); row.onTouchStart();
@@ -361,7 +378,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testOnUp() { public void testOnUp() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
row.onTouchStart(); row.onTouchStart();
assertTrue("before onTouchEnd, isUserTouching is true", row.isUserTouching()); assertTrue("before onTouchEnd, isUserTouching is true", row.isUserTouching());
@@ -373,7 +391,8 @@ public class NotificationMenuRowTest extends LeakCheckedTest {
@Test @Test
public void testIsMenuVisible() { public void testIsMenuVisible() {
NotificationMenuRow row = Mockito.spy(new NotificationMenuRow((mContext))); NotificationMenuRow row = Mockito.spy(
new NotificationMenuRow(mContext, mPeopleNotificationIdentifier));
row.setMenuAlpha(0); row.setMenuAlpha(0);
assertFalse("when alpha is 0, menu is not visible", row.isMenuVisible()); assertFalse("when alpha is 0, menu is not visible", row.isMenuVisible());

View File

@@ -57,6 +57,7 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.Co
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.icon.IconBuilder; import com.android.systemui.statusbar.notification.icon.IconBuilder;
import com.android.systemui.statusbar.notification.icon.IconManager; import com.android.systemui.statusbar.notification.icon.IconManager;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.ExpansionLogger; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.ExpansionLogger;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.OnExpandClickListener; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.OnExpandClickListener;
import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
@@ -100,6 +101,7 @@ public class NotificationTestHelper {
private final RowContentBindStage mBindStage; private final RowContentBindStage mBindStage;
private final IconManager mIconManager; private final IconManager mIconManager;
private StatusBarStateController mStatusBarStateController; private StatusBarStateController mStatusBarStateController;
private final PeopleNotificationIdentifier mPeopleNotificationIdentifier;
public NotificationTestHelper(Context context, TestableDependency dependency) { public NotificationTestHelper(Context context, TestableDependency dependency) {
mContext = context; mContext = context;
@@ -138,6 +140,7 @@ public class NotificationTestHelper {
ArgumentCaptor.forClass(NotifCollectionListener.class); ArgumentCaptor.forClass(NotifCollectionListener.class);
verify(collection).addCollectionListener(collectionListenerCaptor.capture()); verify(collection).addCollectionListener(collectionListenerCaptor.capture());
mBindPipelineEntryListener = collectionListenerCaptor.getValue(); mBindPipelineEntryListener = collectionListenerCaptor.getValue();
mPeopleNotificationIdentifier = mock(PeopleNotificationIdentifier.class);
} }
/** /**
@@ -407,7 +410,8 @@ public class NotificationTestHelper {
mock(NotificationMediaManager.class), mock(NotificationMediaManager.class),
mock(ExpandableNotificationRow.OnAppOpsClickListener.class), mock(ExpandableNotificationRow.OnAppOpsClickListener.class),
mock(FalsingManager.class), mock(FalsingManager.class),
mStatusBarStateController); mStatusBarStateController,
mPeopleNotificationIdentifier);
row.setAboveShelfChangedListener(aboveShelf -> { }); row.setAboveShelfChangedListener(aboveShelf -> { });
mBindStage.getStageParams(entry).requireContentViews(extraInflationFlags); mBindStage.getStageParams(entry).requireContentViews(extraInflationFlags);
inflateAndWait(entry, mBindStage); inflateAndWait(entry, mBindStage);