Handle onNullBinding
According to the docs, an onNullBinding requires the service to be manually unbound Test: A test NLS service that returns null from onBind; ensure that the ServiceRecord does not appear in the bugreport when that app has NLS permission Bug: 192475653 Change-Id: I784910865fa11a5f88c4e6821007564d3aea7ec9
This commit is contained in:
@@ -1536,7 +1536,7 @@ abstract public class ManagedServices {
|
||||
@Override
|
||||
public void onNullBinding(ComponentName name) {
|
||||
Slog.v(TAG, "onNullBinding() called with: name = [" + name + "]");
|
||||
mServicesBound.remove(servicesBindingTag);
|
||||
mContext.unbindService(this);
|
||||
}
|
||||
};
|
||||
if (!mContext.bindServiceAsUser(intent,
|
||||
|
||||
@@ -65,6 +65,7 @@ import com.google.android.collect.Lists;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
@@ -1320,16 +1321,15 @@ public class ManagedServicesTest extends UiServiceTestCase {
|
||||
APPROVAL_BY_COMPONENT);
|
||||
ComponentName cn = ComponentName.unflattenFromString("a/a");
|
||||
|
||||
service.registerSystemService(cn, 0);
|
||||
when(context.bindServiceAsUser(any(), any(), anyInt(), any())).thenAnswer(invocation -> {
|
||||
Object[] args = invocation.getArguments();
|
||||
ServiceConnection sc = (ServiceConnection) args[1];
|
||||
sc.onNullBinding(cn);
|
||||
return true;
|
||||
});
|
||||
ArgumentCaptor<ServiceConnection> captor = ArgumentCaptor.forClass(ServiceConnection.class);
|
||||
when(context.bindServiceAsUser(any(), captor.capture(), anyInt(), any()))
|
||||
.thenAnswer(invocation -> {
|
||||
captor.getValue().onNullBinding(cn);
|
||||
return true;
|
||||
});
|
||||
|
||||
service.registerSystemService(cn, 0);
|
||||
assertFalse(service.isBound(cn, 0));
|
||||
verify(context).unbindService(captor.getValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user