Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit a63bcc3e authored by Kevin F. Haggerty's avatar Kevin F. Haggerty
Browse files

Merge tag 'android-security-11.0.0_r68' of...

Merge tag 'android-security-11.0.0_r68' of https://android.googlesource.com/platform/packages/services/Telecomm into staging/lineage-18.1_merge_android-security-11.0.0_r68

Android Security 11.0.0 Release 68 (9892680)

* tag 'android-security-11.0.0_r68' of https://android.googlesource.com/platform/packages/services/Telecomm:
  Call Redirection: unbind service when onBind returns null

Change-Id: Icdc109ae545479bbf562920333464fceb29721a1
parents 2de69058 dc6a8206
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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 {
+24 −0
Original line number Diff line number Diff line
@@ -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));
    }
}