Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java +4 −17 Original line number Diff line number Diff line Loading @@ -18,10 +18,7 @@ package com.android.systemui.statusbar.notification.row; import static android.app.AppOpsManager.OP_CAMERA; import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.app.AppOpsManager.OP_SYSTEM_ALERT_WINDOW; import static android.service.notification.NotificationListenerService.Ranking .USER_SENTIMENT_NEGATIVE; import static com.android.systemui.statusbar.notification.row.NotificationInfo.ACTION_NONE; import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_NEGATIVE; import android.app.INotificationManager; import android.app.NotificationChannel; Loading @@ -43,7 +40,6 @@ import android.view.accessibility.AccessibilityManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.statusbar.IStatusBarService; import com.android.systemui.Dependency; import com.android.systemui.Dumpable; import com.android.systemui.plugins.ActivityStarter; Loading Loading @@ -188,13 +184,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx } else if (gutsView instanceof AppOpsInfo) { initializeAppOpsInfo(row, (AppOpsInfo) gutsView); } else if (gutsView instanceof NotificationInfo) { int action; if (item instanceof NotificationMenuRow.NotificationInfoMenuItem) { action = ((NotificationMenuRow.NotificationInfoMenuItem) item).mAction; } else { action = ACTION_NONE; } initializeNotificationInfo(row, (NotificationInfo) gutsView, action); initializeNotificationInfo(row, (NotificationInfo) gutsView); } return true; } catch (Exception e) { Loading Loading @@ -253,13 +243,11 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx * Sets up the {@link NotificationInfo} inside the notification row's guts. * @param row view to set up the guts for * @param notificationInfoView view to set up/bind within {@code row} * @param action The action to take immediately upon binding, if any. */ @VisibleForTesting void initializeNotificationInfo( final ExpandableNotificationRow row, NotificationInfo notificationInfoView, @NotificationInfo.NotificationInfoAction int action) throws Exception { NotificationInfo notificationInfoView) throws Exception { NotificationGuts guts = row.getGuts(); StatusBarNotification sbn = row.getStatusBarNotification(); String packageName = sbn.getPackageName(); Loading Loading @@ -303,8 +291,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx isForBlockingHelper, row.getEntry().userSentiment == USER_SENTIMENT_NEGATIVE, row.getEntry().noisy, row.getEntry().importance, action); row.getEntry().importance); } Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java +3 −9 Original line number Diff line number Diff line Loading @@ -187,14 +187,13 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G boolean isDeviceProvisioned, boolean isNonblockable, boolean isNoisy, int importance, @NotificationInfoAction int action) int importance) throws RemoteException { bindNotification(pm, iNotificationManager, pkg, notificationChannel, numUniqueChannelsInRow, sbn, checkSaveListener, onSettingsClick, onAppSettingsClick, isDeviceProvisioned, isNonblockable, false /* isBlockingHelper */, false /* isUserSentimentNegative */, isNoisy, importance, action); importance); } public void bindNotification( Loading @@ -212,8 +211,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G boolean isForBlockingHelper, boolean isUserSentimentNegative, boolean isNoisy, int importance, @NotificationInfoAction int action) int importance) throws RemoteException { mINotificationManager = iNotificationManager; mMetricsLogger = Dependency.get(MetricsLogger.class); Loading Loading @@ -255,10 +253,6 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G bindHeader(); bindPrompt(); bindButtons(); if (action != ACTION_NONE) { swapContent(action, false /* don't animate */); } } private void bindHeader() throws RemoteException { Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java +34 −75 Original line number Diff line number Diff line Loading @@ -17,9 +17,6 @@ package com.android.systemui.statusbar.notification.row; import static com.android.systemui.SwipeHelper.SWIPED_FAR_ENOUGH_SIZE_FRACTION; import static com.android.systemui.statusbar.notification.row.NotificationInfo.ACTION_BLOCK; import static com.android.systemui.statusbar.notification.row.NotificationInfo.ACTION_NONE; import static com.android.systemui.statusbar.notification.row.NotificationInfo.ACTION_TOGGLE_SILENT; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; Loading @@ -46,7 +43,6 @@ import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.statusbar.AlphaOptimizedImageView; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.notification.row.NotificationGuts.GutsContent; import com.android.systemui.statusbar.notification.row.NotificationInfo.NotificationInfoAction; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import java.util.ArrayList; Loading @@ -73,7 +69,7 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl private Context mContext; private FrameLayout mMenuContainer; private NotificationInfoMenuItem mInfoItem; private NotificationMenuItem mInfoItem; private MenuItem mAppOpsItem; private MenuItem mSnoozeItem; private ArrayList<MenuItem> mLeftMenuItems; Loading Loading @@ -248,36 +244,30 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl if (!isForeground) { // Only show snooze for non-foreground notifications mSnoozeItem = createSnoozeItem(mContext); mLeftMenuItems.add(mSnoozeItem); } mInfoItem = createInfoItem(mContext); if (!NotificationUtils.useNewInterruptionModel(mContext)) { mLeftMenuItems.add(mInfoItem); } mAppOpsItem = createAppOpsItem(mContext); mLeftMenuItems.add(mAppOpsItem); if (NotificationUtils.useNewInterruptionModel(mContext)) { if (!mParent.getIsNonblockable()) { mRightMenuItems.add(createBlockItem(mContext, mInfoItem.getGutsView())); } // TODO(kprevas): this is duplicated logic // but it's currently spread across NotificationGutsManager and NotificationInfo. // Try to consolidate and reuse here. boolean canToggleSilent = !mParent.getIsNonblockable() && !isForeground && mParent.getEntry().noisy; if (canToggleSilent) { int channelImportance = mParent.getEntry().channel.getImportance(); int effectiveImportance = channelImportance == NotificationManager.IMPORTANCE_UNSPECIFIED ? mParent.getEntry().importance : channelImportance; mRightMenuItems.add(createToggleSilentItem(mContext, mInfoItem.getGutsView(), effectiveImportance < NotificationManager.IMPORTANCE_DEFAULT)); mInfoItem = createInfoItem(mContext, effectiveImportance < NotificationManager.IMPORTANCE_DEFAULT); } else { mInfoItem = createInfoItem(mContext); } if (!NotificationUtils.useNewInterruptionModel(mContext)) { if (!isForeground) { mRightMenuItems.add(mSnoozeItem); } mRightMenuItems.add(mInfoItem); mRightMenuItems.add(mAppOpsItem); mLeftMenuItems.addAll(mRightMenuItems); } else { mRightMenuItems.addAll(mLeftMenuItems); mRightMenuItems.add(mInfoItem); mRightMenuItems.add(mAppOpsItem); mRightMenuItems.add(mSnoozeItem); } populateMenuViews(); Loading Loading @@ -634,13 +624,24 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl return snooze; } static NotificationInfoMenuItem createInfoItem(Context context) { static NotificationMenuItem createInfoItem(Context context) { Resources res = context.getResources(); String infoDescription = res.getString(R.string.notification_menu_gear_description); NotificationInfo infoContent = (NotificationInfo) LayoutInflater.from(context).inflate( R.layout.notification_info, null, false); return new NotificationInfoMenuItem(context, infoDescription, infoContent, R.drawable.ic_settings, ACTION_NONE); return new NotificationMenuItem(context, infoDescription, infoContent, R.drawable.ic_settings); } static NotificationMenuItem createInfoItem(Context context, boolean isCurrentlySilent) { Resources res = context.getResources(); String infoDescription = res.getString(R.string.notification_menu_gear_description); NotificationInfo infoContent = (NotificationInfo) LayoutInflater.from(context).inflate( R.layout.notification_info, null, false); int iconResId = isCurrentlySilent ? R.drawable.ic_notifications_alert : R.drawable.ic_notifications_silence; return new NotificationMenuItem(context, infoDescription, infoContent, iconResId); } static MenuItem createAppOpsItem(Context context) { Loading @@ -651,29 +652,6 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl return info; } private static MenuItem createBlockItem(Context context, NotificationInfo gutsView) { return new NotificationInfoMenuItem( context, context.getResources().getString(R.string.inline_stop_button), gutsView, R.drawable.ic_notification_block, ACTION_BLOCK); } private static MenuItem createToggleSilentItem(Context context, NotificationInfo gutsView, boolean isCurrentlySilent) { return new NotificationInfoMenuItem( context, isCurrentlySilent ? context.getResources().getString(R.string.inline_silent_button_alert) : context.getResources().getString(R.string.inline_silent_button_silent), gutsView, isCurrentlySilent ? R.drawable.ic_notifications_alert : R.drawable.ic_notifications_silence, ACTION_TOGGLE_SILENT); } private void addMenuView(MenuItem item, ViewGroup parent) { View menuView = item.getMenuView(); if (menuView != null) { Loading Loading @@ -789,23 +767,4 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl return mContentDescription; } } /** A {@link NotificationMenuItem} with an associated {@link NotificationInfoAction}. */ public static class NotificationInfoMenuItem extends NotificationMenuItem { @NotificationInfoAction int mAction; public NotificationInfoMenuItem(Context context, String contentDescription, NotificationInfo content, int iconResId, @NotificationInfoAction int action) { super(context, contentDescription, content, iconResId); this.mAction = action; } @Override public NotificationInfo getGutsView() { return (NotificationInfo) super.getGutsView(); } } } packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java +14 −29 Original line number Diff line number Diff line Loading @@ -20,8 +20,7 @@ import static android.app.AppOpsManager.OP_CAMERA; import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.app.AppOpsManager.OP_SYSTEM_ALERT_WINDOW; import static android.app.NotificationManager.IMPORTANCE_DEFAULT; import static android.service.notification.NotificationListenerService.Ranking .USER_SENTIMENT_NEGATIVE; import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_NEGATIVE; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; Loading Loading @@ -54,7 +53,6 @@ import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.ArraySet; import android.util.Log; import android.view.View; import com.android.systemui.SysuiTestCase; Loading @@ -63,8 +61,7 @@ import com.android.systemui.statusbar.NotificationPresenter; import com.android.systemui.statusbar.NotificationTestHelper; import com.android.systemui.statusbar.notification.NotificationData; import com.android.systemui.statusbar.notification.NotificationEntryManager; 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.policy.DeviceProvisionedController; Loading Loading @@ -298,8 +295,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -316,8 +312,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(true) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_NONE)); eq(0)); } @Test Loading @@ -329,8 +324,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -347,8 +341,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(false) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_NONE)); eq(0)); } @Test Loading @@ -361,8 +354,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -379,8 +371,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(true) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(true) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_NONE)); eq(0)); } @Test Loading @@ -393,8 +384,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -411,8 +401,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(true) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(IMPORTANCE_DEFAULT), eq(NotificationInfo.ACTION_NONE)); eq(IMPORTANCE_DEFAULT)); } @Test Loading @@ -425,8 +414,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { StatusBarNotification statusBarNotification = row.getStatusBarNotification(); when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(true); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -443,8 +431,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(false) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_NONE)); eq(0)); } @Test Loading @@ -456,8 +443,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_BLOCK); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -474,8 +460,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(true) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_BLOCK)); eq(0)); } @Test Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java +72 −131 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java +4 −17 Original line number Diff line number Diff line Loading @@ -18,10 +18,7 @@ package com.android.systemui.statusbar.notification.row; import static android.app.AppOpsManager.OP_CAMERA; import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.app.AppOpsManager.OP_SYSTEM_ALERT_WINDOW; import static android.service.notification.NotificationListenerService.Ranking .USER_SENTIMENT_NEGATIVE; import static com.android.systemui.statusbar.notification.row.NotificationInfo.ACTION_NONE; import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_NEGATIVE; import android.app.INotificationManager; import android.app.NotificationChannel; Loading @@ -43,7 +40,6 @@ import android.view.accessibility.AccessibilityManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.statusbar.IStatusBarService; import com.android.systemui.Dependency; import com.android.systemui.Dumpable; import com.android.systemui.plugins.ActivityStarter; Loading Loading @@ -188,13 +184,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx } else if (gutsView instanceof AppOpsInfo) { initializeAppOpsInfo(row, (AppOpsInfo) gutsView); } else if (gutsView instanceof NotificationInfo) { int action; if (item instanceof NotificationMenuRow.NotificationInfoMenuItem) { action = ((NotificationMenuRow.NotificationInfoMenuItem) item).mAction; } else { action = ACTION_NONE; } initializeNotificationInfo(row, (NotificationInfo) gutsView, action); initializeNotificationInfo(row, (NotificationInfo) gutsView); } return true; } catch (Exception e) { Loading Loading @@ -253,13 +243,11 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx * Sets up the {@link NotificationInfo} inside the notification row's guts. * @param row view to set up the guts for * @param notificationInfoView view to set up/bind within {@code row} * @param action The action to take immediately upon binding, if any. */ @VisibleForTesting void initializeNotificationInfo( final ExpandableNotificationRow row, NotificationInfo notificationInfoView, @NotificationInfo.NotificationInfoAction int action) throws Exception { NotificationInfo notificationInfoView) throws Exception { NotificationGuts guts = row.getGuts(); StatusBarNotification sbn = row.getStatusBarNotification(); String packageName = sbn.getPackageName(); Loading Loading @@ -303,8 +291,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx isForBlockingHelper, row.getEntry().userSentiment == USER_SENTIMENT_NEGATIVE, row.getEntry().noisy, row.getEntry().importance, action); row.getEntry().importance); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java +3 −9 Original line number Diff line number Diff line Loading @@ -187,14 +187,13 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G boolean isDeviceProvisioned, boolean isNonblockable, boolean isNoisy, int importance, @NotificationInfoAction int action) int importance) throws RemoteException { bindNotification(pm, iNotificationManager, pkg, notificationChannel, numUniqueChannelsInRow, sbn, checkSaveListener, onSettingsClick, onAppSettingsClick, isDeviceProvisioned, isNonblockable, false /* isBlockingHelper */, false /* isUserSentimentNegative */, isNoisy, importance, action); importance); } public void bindNotification( Loading @@ -212,8 +211,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G boolean isForBlockingHelper, boolean isUserSentimentNegative, boolean isNoisy, int importance, @NotificationInfoAction int action) int importance) throws RemoteException { mINotificationManager = iNotificationManager; mMetricsLogger = Dependency.get(MetricsLogger.class); Loading Loading @@ -255,10 +253,6 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G bindHeader(); bindPrompt(); bindButtons(); if (action != ACTION_NONE) { swapContent(action, false /* don't animate */); } } private void bindHeader() throws RemoteException { Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java +34 −75 Original line number Diff line number Diff line Loading @@ -17,9 +17,6 @@ package com.android.systemui.statusbar.notification.row; import static com.android.systemui.SwipeHelper.SWIPED_FAR_ENOUGH_SIZE_FRACTION; import static com.android.systemui.statusbar.notification.row.NotificationInfo.ACTION_BLOCK; import static com.android.systemui.statusbar.notification.row.NotificationInfo.ACTION_NONE; import static com.android.systemui.statusbar.notification.row.NotificationInfo.ACTION_TOGGLE_SILENT; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; Loading @@ -46,7 +43,6 @@ import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.statusbar.AlphaOptimizedImageView; import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.notification.row.NotificationGuts.GutsContent; import com.android.systemui.statusbar.notification.row.NotificationInfo.NotificationInfoAction; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import java.util.ArrayList; Loading @@ -73,7 +69,7 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl private Context mContext; private FrameLayout mMenuContainer; private NotificationInfoMenuItem mInfoItem; private NotificationMenuItem mInfoItem; private MenuItem mAppOpsItem; private MenuItem mSnoozeItem; private ArrayList<MenuItem> mLeftMenuItems; Loading Loading @@ -248,36 +244,30 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl if (!isForeground) { // Only show snooze for non-foreground notifications mSnoozeItem = createSnoozeItem(mContext); mLeftMenuItems.add(mSnoozeItem); } mInfoItem = createInfoItem(mContext); if (!NotificationUtils.useNewInterruptionModel(mContext)) { mLeftMenuItems.add(mInfoItem); } mAppOpsItem = createAppOpsItem(mContext); mLeftMenuItems.add(mAppOpsItem); if (NotificationUtils.useNewInterruptionModel(mContext)) { if (!mParent.getIsNonblockable()) { mRightMenuItems.add(createBlockItem(mContext, mInfoItem.getGutsView())); } // TODO(kprevas): this is duplicated logic // but it's currently spread across NotificationGutsManager and NotificationInfo. // Try to consolidate and reuse here. boolean canToggleSilent = !mParent.getIsNonblockable() && !isForeground && mParent.getEntry().noisy; if (canToggleSilent) { int channelImportance = mParent.getEntry().channel.getImportance(); int effectiveImportance = channelImportance == NotificationManager.IMPORTANCE_UNSPECIFIED ? mParent.getEntry().importance : channelImportance; mRightMenuItems.add(createToggleSilentItem(mContext, mInfoItem.getGutsView(), effectiveImportance < NotificationManager.IMPORTANCE_DEFAULT)); mInfoItem = createInfoItem(mContext, effectiveImportance < NotificationManager.IMPORTANCE_DEFAULT); } else { mInfoItem = createInfoItem(mContext); } if (!NotificationUtils.useNewInterruptionModel(mContext)) { if (!isForeground) { mRightMenuItems.add(mSnoozeItem); } mRightMenuItems.add(mInfoItem); mRightMenuItems.add(mAppOpsItem); mLeftMenuItems.addAll(mRightMenuItems); } else { mRightMenuItems.addAll(mLeftMenuItems); mRightMenuItems.add(mInfoItem); mRightMenuItems.add(mAppOpsItem); mRightMenuItems.add(mSnoozeItem); } populateMenuViews(); Loading Loading @@ -634,13 +624,24 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl return snooze; } static NotificationInfoMenuItem createInfoItem(Context context) { static NotificationMenuItem createInfoItem(Context context) { Resources res = context.getResources(); String infoDescription = res.getString(R.string.notification_menu_gear_description); NotificationInfo infoContent = (NotificationInfo) LayoutInflater.from(context).inflate( R.layout.notification_info, null, false); return new NotificationInfoMenuItem(context, infoDescription, infoContent, R.drawable.ic_settings, ACTION_NONE); return new NotificationMenuItem(context, infoDescription, infoContent, R.drawable.ic_settings); } static NotificationMenuItem createInfoItem(Context context, boolean isCurrentlySilent) { Resources res = context.getResources(); String infoDescription = res.getString(R.string.notification_menu_gear_description); NotificationInfo infoContent = (NotificationInfo) LayoutInflater.from(context).inflate( R.layout.notification_info, null, false); int iconResId = isCurrentlySilent ? R.drawable.ic_notifications_alert : R.drawable.ic_notifications_silence; return new NotificationMenuItem(context, infoDescription, infoContent, iconResId); } static MenuItem createAppOpsItem(Context context) { Loading @@ -651,29 +652,6 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl return info; } private static MenuItem createBlockItem(Context context, NotificationInfo gutsView) { return new NotificationInfoMenuItem( context, context.getResources().getString(R.string.inline_stop_button), gutsView, R.drawable.ic_notification_block, ACTION_BLOCK); } private static MenuItem createToggleSilentItem(Context context, NotificationInfo gutsView, boolean isCurrentlySilent) { return new NotificationInfoMenuItem( context, isCurrentlySilent ? context.getResources().getString(R.string.inline_silent_button_alert) : context.getResources().getString(R.string.inline_silent_button_silent), gutsView, isCurrentlySilent ? R.drawable.ic_notifications_alert : R.drawable.ic_notifications_silence, ACTION_TOGGLE_SILENT); } private void addMenuView(MenuItem item, ViewGroup parent) { View menuView = item.getMenuView(); if (menuView != null) { Loading Loading @@ -789,23 +767,4 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl return mContentDescription; } } /** A {@link NotificationMenuItem} with an associated {@link NotificationInfoAction}. */ public static class NotificationInfoMenuItem extends NotificationMenuItem { @NotificationInfoAction int mAction; public NotificationInfoMenuItem(Context context, String contentDescription, NotificationInfo content, int iconResId, @NotificationInfoAction int action) { super(context, contentDescription, content, iconResId); this.mAction = action; } @Override public NotificationInfo getGutsView() { return (NotificationInfo) super.getGutsView(); } } }
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java +14 −29 Original line number Diff line number Diff line Loading @@ -20,8 +20,7 @@ import static android.app.AppOpsManager.OP_CAMERA; import static android.app.AppOpsManager.OP_RECORD_AUDIO; import static android.app.AppOpsManager.OP_SYSTEM_ALERT_WINDOW; import static android.app.NotificationManager.IMPORTANCE_DEFAULT; import static android.service.notification.NotificationListenerService.Ranking .USER_SENTIMENT_NEGATIVE; import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_NEGATIVE; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; Loading Loading @@ -54,7 +53,6 @@ import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.ArraySet; import android.util.Log; import android.view.View; import com.android.systemui.SysuiTestCase; Loading @@ -63,8 +61,7 @@ import com.android.systemui.statusbar.NotificationPresenter; import com.android.systemui.statusbar.NotificationTestHelper; import com.android.systemui.statusbar.notification.NotificationData; import com.android.systemui.statusbar.notification.NotificationEntryManager; 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.policy.DeviceProvisionedController; Loading Loading @@ -298,8 +295,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -316,8 +312,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(true) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_NONE)); eq(0)); } @Test Loading @@ -329,8 +324,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -347,8 +341,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(false) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_NONE)); eq(0)); } @Test Loading @@ -361,8 +354,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -379,8 +371,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(true) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(true) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_NONE)); eq(0)); } @Test Loading @@ -393,8 +384,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -411,8 +401,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(true) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(IMPORTANCE_DEFAULT), eq(NotificationInfo.ACTION_NONE)); eq(IMPORTANCE_DEFAULT)); } @Test Loading @@ -425,8 +414,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { StatusBarNotification statusBarNotification = row.getStatusBarNotification(); when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(true); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_NONE); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -443,8 +431,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(false) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_NONE)); eq(0)); } @Test Loading @@ -456,8 +443,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(row.getIsNonblockable()).thenReturn(false); StatusBarNotification statusBarNotification = row.getStatusBarNotification(); mGutsManager.initializeNotificationInfo(row, notificationInfoView, NotificationInfo.ACTION_BLOCK); mGutsManager.initializeNotificationInfo(row, notificationInfoView); verify(notificationInfoView).bindNotification( any(PackageManager.class), Loading @@ -474,8 +460,7 @@ public class NotificationGutsManagerTest extends SysuiTestCase { eq(true) /* isForBlockingHelper */, eq(true) /* isUserSentimentNegative */, eq(false) /*isNoisy */, eq(0), eq(NotificationInfo.ACTION_BLOCK)); eq(0)); } @Test Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java +72 −131 File changed.Preview size limit exceeded, changes collapsed. Show changes