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

Commit 616f54d9 authored by Archie Pusaka's avatar Archie Pusaka
Browse files

Cache the current HidDeviceService to avoid crashes

Bug: 348234524
Bug: 327485269
Test: m -j
Flag: EXEMPT, simple bugfix
Change-Id: I06b866842008b160c419b75d05f829d064f4ff9c
parent 1853c14e
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -302,14 +302,6 @@ public class HidDeviceService extends ProfileService {
            mService = service;
        }

        @VisibleForTesting
        HidDeviceService getServiceForTesting() {
            if (mService != null && mService.isAvailable()) {
                return mService;
            }
            return null;
        }

        @Override
        public void cleanup() {
            mService = null;
@@ -317,15 +309,18 @@ public class HidDeviceService extends ProfileService {

        @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
        private HidDeviceService getService(AttributionSource source) {
            // Cache mService because it can change while getService is called
            HidDeviceService service = mService;

            if (Utils.isInstrumentationTestMode()) {
                return mService;
                return service;
            }
            if (!Utils.checkServiceAvailable(mService, TAG)
                    || !Utils.checkCallerIsSystemOrActiveOrManagedUser(mService, TAG)
                    || !Utils.checkConnectPermissionForDataDelivery(mService, source, TAG)) {
            if (!Utils.checkServiceAvailable(service, TAG)
                    || !Utils.checkCallerIsSystemOrActiveOrManagedUser(service, TAG)
                    || !Utils.checkConnectPermissionForDataDelivery(service, source, TAG)) {
                return null;
            }
            return mService;
            return service;
        }

        @Override
+0 −1
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@ public class BluetoothHidDeviceBinderTest {
    @Test
    public void cleanup() {
        mBinder.cleanup();
        assertThat(mBinder.getServiceForTesting()).isNull();
    }

    @Test