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

Commit 77e5d0f8 authored by Grace Jia's avatar Grace Jia Committed by Automerger Merge Worker
Browse files

Fix crash when service unbinding exception happens. am: 576b6199 am: 547c8bdd am: 05075e3e

Original change: https://android-review.googlesource.com/c/platform/packages/services/Telecomm/+/1437314

Change-Id: I9de4cf76eb845b3d5cff187d6a6a3f3f20d3a0aa
parents ffef8f58 05075e3e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -289,7 +289,12 @@ public class CallScreeningServiceFilter extends CallFilter {

    public void unbindCallScreeningService() {
        if (mConnection != null) {
            try {
                mContext.unbindService(mConnection);
            } catch (IllegalArgumentException e) {
                Log.i(this, "Exception when unbind service %s : %s", mConnection,
                        e.getMessage());
            }
        }
        mConnection = null;
    }
+14 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -209,6 +210,19 @@ public class CallScreeningServiceFilterTest extends TelecomTestCase {
        connection.onServiceDisconnected(COMPONENT_NAME);
    }

    @SmallTest
    @Test
    public void testUnbindingException() {
        // Make sure that exceptions when unbinding won't make the device crash.
        doThrow(new IllegalArgumentException()).when(mContext)
                .unbindService(nullable(ServiceConnection.class));
        CallScreeningServiceFilter filter = new CallScreeningServiceFilter(mCall, PKG_NAME,
                CallScreeningServiceFilter.PACKAGE_TYPE_CARRIER, mContext, mCallsManager,
                mAppLabelProxy, mParcelableCallUtilsConverter);
        filter.startFilterLookup(inputResult);
        filter.unbindCallScreeningService();
    }

    @SmallTest
    @Test
    public void testAllowCall() throws Exception {