Loading src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java +13 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,19 @@ public class CallRedirectionProcessor implements CallRedirectionCallback { Log.endSession(); } } @Override public void onNullBinding(ComponentName componentName) { // Make sure we unbind the service if onBind returns null Log.startSession("CRSC.oNB"); try { synchronized (mTelecomLock) { finishCallRedirection(); } } finally { Log.endSession(); } } } private class CallRedirectionAdapter extends ICallRedirectionAdapter.Stub { Loading tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -354,4 +354,28 @@ public class CallRedirectionProcessorTest extends TelecomTestCase { assertEquals(REDIRECTED_GATEWAY_NUMBER_WITH_POST_DIAL, gatewayInfoArgumentCaptor.getValue().getGatewayAddress()); } @Test public void testUnbindOnNullBind() throws Exception { startProcessWithNoGateWayInfo(); // To make sure tests are not flaky, clean all the previous handler messages waitForHandlerAction(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY); enableUserDefinedCallRedirectionService(); disableCarrierCallRedirectionService(); mProcessor.performCallRedirection(); // Capture the binder ArgumentCaptor<ServiceConnection> serviceConnectionCaptor = ArgumentCaptor.forClass( ServiceConnection.class); // Verify binding occurred verify(mContext, times(1)).bindServiceAsUser(any(Intent.class), serviceConnectionCaptor.capture(), anyInt(), eq(UserHandle.CURRENT)); // Simulate null return from onBind serviceConnectionCaptor.getValue().onNullBinding(USER_DEFINED_SERVICE_TEST_COMPONENT_NAME); // Verify service was unbound verify(mContext, times(1)). unbindService(any(ServiceConnection.class)); } } Loading
src/com/android/server/telecom/callredirection/CallRedirectionProcessor.java +13 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,19 @@ public class CallRedirectionProcessor implements CallRedirectionCallback { Log.endSession(); } } @Override public void onNullBinding(ComponentName componentName) { // Make sure we unbind the service if onBind returns null Log.startSession("CRSC.oNB"); try { synchronized (mTelecomLock) { finishCallRedirection(); } } finally { Log.endSession(); } } } private class CallRedirectionAdapter extends ICallRedirectionAdapter.Stub { Loading
tests/src/com/android/server/telecom/tests/CallRedirectionProcessorTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -354,4 +354,28 @@ public class CallRedirectionProcessorTest extends TelecomTestCase { assertEquals(REDIRECTED_GATEWAY_NUMBER_WITH_POST_DIAL, gatewayInfoArgumentCaptor.getValue().getGatewayAddress()); } @Test public void testUnbindOnNullBind() throws Exception { startProcessWithNoGateWayInfo(); // To make sure tests are not flaky, clean all the previous handler messages waitForHandlerAction(mProcessor.getHandler(), HANDLER_TIMEOUT_DELAY); enableUserDefinedCallRedirectionService(); disableCarrierCallRedirectionService(); mProcessor.performCallRedirection(); // Capture the binder ArgumentCaptor<ServiceConnection> serviceConnectionCaptor = ArgumentCaptor.forClass( ServiceConnection.class); // Verify binding occurred verify(mContext, times(1)).bindServiceAsUser(any(Intent.class), serviceConnectionCaptor.capture(), anyInt(), eq(UserHandle.CURRENT)); // Simulate null return from onBind serviceConnectionCaptor.getValue().onNullBinding(USER_DEFINED_SERVICE_TEST_COMPONENT_NAME); // Verify service was unbound verify(mContext, times(1)). unbindService(any(ServiceConnection.class)); } }