Merge "Catch when telecom isn't ready yet" into tm-dev am: 5a633e1b99

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18577095

Change-Id: I3b5660be715a2366915ecf6d415319b91c8e28fa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2022-05-25 18:15:33 +00:00
committed by Automerger Merge Worker
2 changed files with 27 additions and 3 deletions

View File

@@ -6948,9 +6948,14 @@ public class NotificationManagerService extends SystemService {
try { try {
if (mPackageManagerClient.hasSystemFeature(FEATURE_TELECOM) if (mPackageManagerClient.hasSystemFeature(FEATURE_TELECOM)
&& mTelecomManager != null) { && mTelecomManager != null) {
return mTelecomManager.isInManagedCall() try {
|| mTelecomManager.isInSelfManagedCall( return mTelecomManager.isInManagedCall()
pkg, UserHandle.getUserHandleForUid(uid)); || mTelecomManager.isInSelfManagedCall(
pkg, UserHandle.getUserHandleForUid(uid));
} catch (IllegalStateException ise) {
// Telecom is not ready (this is likely early boot), so there are no calls.
return false;
}
} }
return false; return false;
} finally { } finally {

View File

@@ -9331,6 +9331,13 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
assertThat(mService.checkDisqualifyingFeatures(r.getUserId(), r.getUid(), assertThat(mService.checkDisqualifyingFeatures(r.getUserId(), r.getUid(),
r.getSbn().getId(), r.getSbn().getTag(), r, false)) r.getSbn().getId(), r.getSbn().getTag(), r, false))
.isFalse(); .isFalse();
// telecom manager is not ready - blocked
mService.setTelecomManager(mTelecomManager);
when(mTelecomManager.isInCall()).thenThrow(new IllegalStateException("not ready"));
assertThat(mService.checkDisqualifyingFeatures(r.getUserId(), r.getUid(),
r.getSbn().getId(), r.getSbn().getTag(), r, false))
.isFalse();
} }
@Test @Test
@@ -9430,6 +9437,18 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
verify(mUsageStats).registerBlocked(any()); verify(mUsageStats).registerBlocked(any());
verify(mUsageStats, never()).registerPostedByApp(any()); verify(mUsageStats, never()).registerPostedByApp(any());
// telecom is not ready - notifications should be blocked but no crashes
mService.setTelecomManager(mTelecomManager);
when(mTelecomManager.isInCall()).thenThrow(new IllegalStateException("not ready"));
reset(mUsageStats);
mService.addEnqueuedNotification(r);
runnable.run();
waitForIdle();
verify(mUsageStats).registerBlocked(any());
verify(mUsageStats, never()).registerPostedByApp(any());
} }
@Test @Test