Loading packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -228,6 +228,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G // Settings button. // Settings button. final TextView settingsButton = (TextView) findViewById(R.id.more_settings); final TextView settingsButton = (TextView) findViewById(R.id.more_settings); if (mAppUid >= 0 && onSettingsClick != null) { if (mAppUid >= 0 && onSettingsClick != null) { settingsButton.setVisibility(View.VISIBLE); final int appUidF = mAppUid; final int appUidF = mAppUid; settingsButton.setOnClickListener( settingsButton.setOnClickListener( (View view) -> { (View view) -> { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +10 −6 Original line number Original line Diff line number Diff line Loading @@ -5769,12 +5769,16 @@ public class StatusBar extends SystemUI implements DemoMode, ServiceManager.getService(Context.NOTIFICATION_SERVICE)); ServiceManager.getService(Context.NOTIFICATION_SERVICE)); final String pkg = sbn.getPackageName(); final String pkg = sbn.getPackageName(); NotificationInfo info = (NotificationInfo) gutsView; NotificationInfo info = (NotificationInfo) gutsView; final NotificationInfo.OnSettingsClickListener onSettingsClick = (View v, // Settings link is only valid for notifications that specify a user, unless this is the NotificationChannel channel, int appUid) -> { // system user. NotificationInfo.OnSettingsClickListener onSettingsClick = null; if (!userHandle.equals(UserHandle.ALL) || mCurrentUserId == UserHandle.USER_SYSTEM) { onSettingsClick = (View v, NotificationChannel channel, int appUid) -> { mMetricsLogger.action(MetricsEvent.ACTION_NOTE_INFO); mMetricsLogger.action(MetricsEvent.ACTION_NOTE_INFO); guts.resetFalsingCheck(); guts.resetFalsingCheck(); startAppNotificationSettingsActivity(pkg, appUid, channel); startAppNotificationSettingsActivity(pkg, appUid, channel); }; }; } final View.OnClickListener onDoneClick = (View v) -> { final View.OnClickListener onDoneClick = (View v) -> { saveAndCloseNotificationMenu(info, row, guts, v); saveAndCloseNotificationMenu(info, row, guts, v); }; }; Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java +23 −0 Original line number Original line Diff line number Diff line Loading @@ -205,6 +205,29 @@ public class NotificationInfoTest extends SysuiTestCase { assertEquals(0, latch.getCount()); assertEquals(0, latch.getCount()); } } @Test public void testBindNotification_SettingsButtonInvisibleWhenNoClickListener() throws Exception { mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager, TEST_PACKAGE_NAME, Arrays.asList(mNotificationChannel), null, null, null, null); final TextView settingsButton = (TextView) mNotificationInfo.findViewById(R.id.more_settings); assertTrue(settingsButton.getVisibility() != View.VISIBLE); } @Test public void testBindNotification_SettingsButtonReappersAfterSecondBind() throws Exception { mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager, TEST_PACKAGE_NAME, Arrays.asList(mNotificationChannel), null, null, null, null); mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager, TEST_PACKAGE_NAME, Arrays.asList(mNotificationChannel), (View v, NotificationChannel c, int appUid) -> {}, null, null, null); final TextView settingsButton = (TextView) mNotificationInfo.findViewById(R.id.more_settings); assertEquals(View.VISIBLE, settingsButton.getVisibility()); } @Test @Test public void testOnClickListenerPassesNullChannelForBundle() throws Exception { public void testOnClickListenerPassesNullChannelForBundle() throws Exception { final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1); Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/NotificationInfo.java +1 −0 Original line number Original line Diff line number Diff line Loading @@ -228,6 +228,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G // Settings button. // Settings button. final TextView settingsButton = (TextView) findViewById(R.id.more_settings); final TextView settingsButton = (TextView) findViewById(R.id.more_settings); if (mAppUid >= 0 && onSettingsClick != null) { if (mAppUid >= 0 && onSettingsClick != null) { settingsButton.setVisibility(View.VISIBLE); final int appUidF = mAppUid; final int appUidF = mAppUid; settingsButton.setOnClickListener( settingsButton.setOnClickListener( (View view) -> { (View view) -> { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +10 −6 Original line number Original line Diff line number Diff line Loading @@ -5769,12 +5769,16 @@ public class StatusBar extends SystemUI implements DemoMode, ServiceManager.getService(Context.NOTIFICATION_SERVICE)); ServiceManager.getService(Context.NOTIFICATION_SERVICE)); final String pkg = sbn.getPackageName(); final String pkg = sbn.getPackageName(); NotificationInfo info = (NotificationInfo) gutsView; NotificationInfo info = (NotificationInfo) gutsView; final NotificationInfo.OnSettingsClickListener onSettingsClick = (View v, // Settings link is only valid for notifications that specify a user, unless this is the NotificationChannel channel, int appUid) -> { // system user. NotificationInfo.OnSettingsClickListener onSettingsClick = null; if (!userHandle.equals(UserHandle.ALL) || mCurrentUserId == UserHandle.USER_SYSTEM) { onSettingsClick = (View v, NotificationChannel channel, int appUid) -> { mMetricsLogger.action(MetricsEvent.ACTION_NOTE_INFO); mMetricsLogger.action(MetricsEvent.ACTION_NOTE_INFO); guts.resetFalsingCheck(); guts.resetFalsingCheck(); startAppNotificationSettingsActivity(pkg, appUid, channel); startAppNotificationSettingsActivity(pkg, appUid, channel); }; }; } final View.OnClickListener onDoneClick = (View v) -> { final View.OnClickListener onDoneClick = (View v) -> { saveAndCloseNotificationMenu(info, row, guts, v); saveAndCloseNotificationMenu(info, row, guts, v); }; }; Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationInfoTest.java +23 −0 Original line number Original line Diff line number Diff line Loading @@ -205,6 +205,29 @@ public class NotificationInfoTest extends SysuiTestCase { assertEquals(0, latch.getCount()); assertEquals(0, latch.getCount()); } } @Test public void testBindNotification_SettingsButtonInvisibleWhenNoClickListener() throws Exception { mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager, TEST_PACKAGE_NAME, Arrays.asList(mNotificationChannel), null, null, null, null); final TextView settingsButton = (TextView) mNotificationInfo.findViewById(R.id.more_settings); assertTrue(settingsButton.getVisibility() != View.VISIBLE); } @Test public void testBindNotification_SettingsButtonReappersAfterSecondBind() throws Exception { mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager, TEST_PACKAGE_NAME, Arrays.asList(mNotificationChannel), null, null, null, null); mNotificationInfo.bindNotification(mMockPackageManager, mMockINotificationManager, TEST_PACKAGE_NAME, Arrays.asList(mNotificationChannel), (View v, NotificationChannel c, int appUid) -> {}, null, null, null); final TextView settingsButton = (TextView) mNotificationInfo.findViewById(R.id.more_settings); assertEquals(View.VISIBLE, settingsButton.getVisibility()); } @Test @Test public void testOnClickListenerPassesNullChannelForBundle() throws Exception { public void testOnClickListenerPassesNullChannelForBundle() throws Exception { final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1); Loading