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

Commit 709535c4 authored by Lucas Silva's avatar Lucas Silva Committed by Automerger Merge Worker
Browse files

Merge "Handle bindService errors in ObservableServiceConnection" into...

Merge "Handle bindService errors in ObservableServiceConnection" into tm-qpr-dev am: 5846d277 am: 0b3460ca am: 5b5ad203

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21853359



Change-Id: Ibc584fab054e8e9d3899696bdfc39a2a0e743122
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 9b2a3028 5b5ad203
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -143,7 +143,13 @@ public class ObservableServiceConnection<T> implements ServiceConnection {
     * @return {@code true} if initiating binding succeed, {@code false} otherwise.
     */
    public boolean bind() {
        final boolean bindResult = mContext.bindService(mServiceIntent, mFlags, mExecutor, this);
        boolean bindResult = false;
        try {
            bindResult = mContext.bindService(mServiceIntent, mFlags, mExecutor, this);
        } catch (SecurityException e) {
            Log.d(TAG, "Could not bind to service", e);
            mContext.unbindService(this);
        }
        mBoundCalled = true;
        if (DEBUG) {
            Log.d(TAG, "bind. bound:" + bindResult);
+17 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.util.service;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.clearInvocations;
@@ -169,4 +171,19 @@ public class ObservableServiceConnectionTest extends SysuiTestCase {
        verify(mCallback).onDisconnected(eq(connection),
                eq(ObservableServiceConnection.DISCONNECT_REASON_UNBIND));
    }

    @Test
    public void testBindServiceThrowsError() {
        ObservableServiceConnection<Foo> connection = new ObservableServiceConnection<>(mContext,
                mIntent, mExecutor, mTransformer);
        connection.addCallback(mCallback);

        when(mContext.bindService(eq(mIntent), anyInt(), eq(mExecutor), eq(connection)))
                .thenThrow(new SecurityException());

        // Verify that the exception was caught and that bind returns false, and we properly
        // unbind.
        assertThat(connection.bind()).isFalse();
        verify(mContext).unbindService(connection);
    }
}