Companion device mgr doesn't always exist

E.g. on tvs.

Test: runtest systemui-notification
Change-Id: I1f1fd3cc5d361d3854eef5e5726816b50f5d7eb6
Fixes: 37276184
This commit is contained in:
Julia Reynolds
2017-04-13 10:54:01 -04:00
parent 3a543a1bd2
commit 727a728836
2 changed files with 25 additions and 2 deletions

View File

@@ -4663,8 +4663,11 @@ public class NotificationManagerService extends SystemService {
boolean hasCompanionDevice(ManagedServiceInfo info) {
if (mCompanionManager == null) {
mCompanionManager = ICompanionDeviceManager.Stub.asInterface(
ServiceManager.getService(Context.COMPANION_DEVICE_SERVICE));
mCompanionManager = getCompanionManager();
}
// Companion mgr doesn't exist on all device types
if (mCompanionManager == null) {
return false;
}
long identity = Binder.clearCallingIdentity();
try {
@@ -4685,6 +4688,11 @@ public class NotificationManagerService extends SystemService {
return false;
}
protected ICompanionDeviceManager getCompanionManager() {
return ICompanionDeviceManager.Stub.asInterface(
ServiceManager.getService(Context.COMPANION_DEVICE_SERVICE));
}
private boolean isVisibleToListener(StatusBarNotification sbn, ManagedServiceInfo listener) {
if (!listener.enabledAndUserMatches(sbn.getUserId())) {
return false;

View File

@@ -19,6 +19,7 @@ package com.android.server.notification;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static junit.framework.Assert.fail;
@@ -99,6 +100,11 @@ public class NotificationManagerServiceTest {
protected boolean isCallerSystem() {
return true;
}
@Override
protected ICompanionDeviceManager getCompanionManager() {
return null;
}
}
@Before
@@ -644,4 +650,13 @@ public class NotificationManagerServiceTest {
new IllegalArgumentException());
mNotificationManagerService.hasCompanionDevice(mListener);
}
@Test
@UiThreadTest
public void testHasCompanionDevice_noService() throws Exception {
mNotificationManagerService = new TestableNotificationManagerService(mContext);
assertFalse(mNotificationManagerService.hasCompanionDevice(mListener));
}
}