Use hasSentValidBubble in settings

This change makes it such that bubble settings will only be available once
the app has sent a bubble notification.

Test: atest BubbleSummaryPreferenceControllerTest
Bug: 178387292
Change-Id: I459ffcedc4194d953e8b7170937e2eb5334d1422
This commit is contained in:
Mady Mellor
2022-01-12 14:05:35 -08:00
parent 3ae979bf27
commit f9fc2e0d1e
3 changed files with 13 additions and 4 deletions

View File

@@ -361,6 +361,15 @@ public class NotificationBackend {
}
}
public boolean hasSentValidBubble(String pkg, int uid) {
try {
return sINM.hasSentValidBubble(pkg, uid);
} catch (Exception e) {
Log.w(TAG, "Error calling NoMan", e);
return false;
}
}
/**
* Returns all notification channels associated with the package and uid that will bypass DND
*/

View File

@@ -63,7 +63,7 @@ public class BubbleSummaryPreferenceController extends NotificationPreferenceCon
return mAppRow != null;
}
}
return isGloballyEnabled() && mBackend.hasSentValidMsg(mAppRow.pkg, mAppRow.uid);
return isGloballyEnabled() && mBackend.hasSentValidBubble(mAppRow.pkg, mAppRow.uid);
}
@Override

View File

@@ -73,7 +73,7 @@ public class BubbleSummaryPreferenceControllerTest {
MockitoAnnotations.initMocks(this);
ShadowApplication shadowApplication = ShadowApplication.getInstance();
mContext = RuntimeEnvironment.application;
when(mBackend.hasSentValidMsg(anyString(), anyInt())).thenReturn(true);
when(mBackend.hasSentValidBubble(anyString(), anyInt())).thenReturn(true);
mAppRow = new NotificationBackend.AppRow();
mAppRow.pkg = "pkg";
mAppRow.uid = 0;
@@ -103,10 +103,10 @@ public class BubbleSummaryPreferenceControllerTest {
}
@Test
public void isAvailable_NOTIFICATION_BUBBLESisOn_neverSentMsg_shouldReturnFalse() {
public void isAvailable_NOTIFICATION_BUBBLESisOn_neverSentBubble_shouldReturnFalse() {
Settings.Secure.putInt(mContext.getContentResolver(), NOTIFICATION_BUBBLES, SYSTEM_WIDE_ON);
mController.onResume(mAppRow, null, null, null, null, null, null);
when(mBackend.hasSentValidMsg(anyString(), anyInt())).thenReturn(false);
when(mBackend.hasSentValidBubble(anyString(), anyInt())).thenReturn(false);
assertFalse(mController.isAvailable());
}