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

Commit ddc585d5 authored by William Escande's avatar William Escande Committed by Gerrit Code Review
Browse files

Merge "Revert "SystemServer: enable/disable from main thread earlier"" into main

parents 618c9faa 96f2d362
Loading
Loading
Loading
Loading
+19 −24
Original line number Diff line number Diff line
@@ -950,10 +950,6 @@ class BluetoothManagerService {
        return appCount;
    }

    boolean enableBleFromBinder(String packageName, IBinder token) {
        return postAndWait(() -> enableBle(packageName, token));
    }

    boolean enableBle(String packageName, IBinder token) {
        Log.i(
                TAG,
@@ -984,6 +980,7 @@ class BluetoothManagerService {
            return false;
        }

        // TODO(b/262605980): enableBle/disableBle should be on handler thread
        updateBleAppCount(token, true, packageName);

        if (mState.oneOf(
@@ -996,15 +993,12 @@ class BluetoothManagerService {
            return true;
        }
        synchronized (mReceiver) {
            // waive WRITE_SECURE_SETTINGS permission check
            sendEnableMsg(false, ENABLE_DISABLE_REASON_APPLICATION_REQUEST, packageName, true);
        }
        return true;
    }

    boolean disableBleFromBinder(String packageName, IBinder token) {
        return postAndWait(() -> disableBle(packageName, token));
    }

    boolean disableBle(String packageName, IBinder token) {
        Log.i(
                TAG,
@@ -1023,6 +1017,7 @@ class BluetoothManagerService {
            Log.i(TAG, "disableBle: Already disabled");
            return false;
        }
        // TODO(b/262605980): enableBle/disableBle should be on handler thread
        updateBleAppCount(token, false, packageName);

        if (mState.oneOf(STATE_BLE_ON) && !isBleAppPresent()) {
@@ -1120,10 +1115,6 @@ class BluetoothManagerService {
        return Unit.INSTANCE;
    }

    boolean enableNoAutoConnectFromBinder(String packageName) {
        return postAndWait(() -> enableNoAutoConnect(packageName));
    }

    boolean enableNoAutoConnect(String packageName) {
        if (isSatelliteModeOn()) {
            Log.d(TAG, "enableNoAutoConnect(" + packageName + "): Blocked by satellite mode");
@@ -1138,10 +1129,6 @@ class BluetoothManagerService {
        return true;
    }

    boolean enableFromBinder(String packageName) {
        return postAndWait(() -> enable(packageName));
    }

    boolean enable(String packageName) {
        Log.d(
                TAG,
@@ -1158,17 +1145,19 @@ class BluetoothManagerService {
        synchronized (mReceiver) {
            mQuietEnableExternal = false;
            mEnableExternal = true;
            // TODO(b/288450479): Remove clearCallingIdentity when threading is fixed
            final long callingIdentity = Binder.clearCallingIdentity();
            try {
                AirplaneModeListener.notifyUserToggledBluetooth(
                        mContentResolver, mCurrentUserContext, true);
            } finally {
                Binder.restoreCallingIdentity(callingIdentity);
            }
            sendEnableMsg(false, ENABLE_DISABLE_REASON_APPLICATION_REQUEST, packageName);
        }
        return true;
    }

    boolean disableFromBinder(String packageName, boolean persist) {
        return postAndWait(() -> disable(packageName, persist));
    }

    boolean disable(String packageName, boolean persist) {
        Log.d(
                TAG,
@@ -1178,8 +1167,14 @@ class BluetoothManagerService {
                        + (" mState=" + mState));

        synchronized (mReceiver) {
            // TODO(b/288450479): Remove clearCallingIdentity when threading is fixed
            final long callingIdentity = Binder.clearCallingIdentity();
            try {
                AirplaneModeListener.notifyUserToggledBluetooth(
                        mContentResolver, mCurrentUserContext, false);
            } finally {
                Binder.restoreCallingIdentity(callingIdentity);
            }

            if (persist) {
                setBluetoothPersistedState(BLUETOOTH_OFF);
+5 −5
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ class BluetoothServiceBinder extends IBluetoothManager.Stub {
            return false;
        }

        return mBluetoothManagerService.enableFromBinder(source.getPackageName());
        return mBluetoothManagerService.enable(source.getPackageName());
    }

    @Override
@@ -138,7 +138,7 @@ class BluetoothServiceBinder extends IBluetoothManager.Stub {
            throw new SecurityException("No permission to enable Bluetooth quietly");
        }

        return mBluetoothManagerService.enableNoAutoConnectFromBinder(source.getPackageName());
        return mBluetoothManagerService.enableNoAutoConnect(source.getPackageName());
    }

    @Override
@@ -163,7 +163,7 @@ class BluetoothServiceBinder extends IBluetoothManager.Stub {
            return false;
        }

        return mBluetoothManagerService.disableFromBinder(source.getPackageName(), persist);
        return mBluetoothManagerService.disable(source.getPackageName(), persist);
    }

    @Override
@@ -260,7 +260,7 @@ class BluetoothServiceBinder extends IBluetoothManager.Stub {
            return false;
        }

        return mBluetoothManagerService.enableBleFromBinder(source.getPackageName(), token);
        return mBluetoothManagerService.enableBle(source.getPackageName(), token);
    }

    @Override
@@ -283,7 +283,7 @@ class BluetoothServiceBinder extends IBluetoothManager.Stub {
            return false;
        }

        return mBluetoothManagerService.disableBleFromBinder(source.getPackageName(), token);
        return mBluetoothManagerService.disableBle(source.getPackageName(), token);
    }

    @Override
+8 −8
Original line number Diff line number Diff line
@@ -146,10 +146,10 @@ public class BluetoothServiceBinderTest {

        checkDisabled(() -> mBinder.enable(mSource));
        checkHardDenied(() -> mBinder.enable(mSource), true);
        doReturn(true).when(mManagerService).enableFromBinder(any());
        doReturn(true).when(mManagerService).enable(any());
        checkGranted(() -> mBinder.enable(mSource), true);
        verify(mUserManager).getProfileParent(any());
        verify(mManagerService).enableFromBinder(eq(TAG));
        verify(mManagerService).enable(eq(TAG));
        verifyMock();
    }

@@ -193,10 +193,10 @@ public class BluetoothServiceBinderTest {

        checkDisabled(() -> mBinder.disable(mSource, true));
        checkHardDenied(() -> mBinder.disable(mSource, true), true);
        doReturn(true).when(mManagerService).disableFromBinder(any(), anyBoolean());
        doReturn(true).when(mManagerService).disable(any(), anyBoolean());
        checkGranted(() -> mBinder.disable(mSource, true), true);
        verify(mUserManager).getProfileParent(any());
        verify(mManagerService).disableFromBinder(eq(TAG), anyBoolean());
        verify(mManagerService).disable(eq(TAG), anyBoolean());
        verifyMock();
    }

@@ -308,9 +308,9 @@ public class BluetoothServiceBinderTest {

        checkDisabled(() -> mBinder.enableBle(mSource, token));
        checkHardDenied(() -> mBinder.enableBle(mSource, token), false);
        doReturn(true).when(mManagerService).enableBleFromBinder(eq(TAG), eq(token));
        doReturn(true).when(mManagerService).enableBle(eq(TAG), eq(token));
        checkGranted(() -> mBinder.enableBle(mSource, token), true);
        verify(mManagerService).enableBleFromBinder(eq(TAG), eq(token));
        verify(mManagerService).enableBle(eq(TAG), eq(token));
        verifyMock();
    }

@@ -322,9 +322,9 @@ public class BluetoothServiceBinderTest {

        checkDisabled(() -> mBinder.disableBle(mSource, token));
        checkHardDenied(() -> mBinder.disableBle(mSource, token), false);
        doReturn(true).when(mManagerService).disableBleFromBinder(eq(TAG), eq(token));
        doReturn(true).when(mManagerService).disableBle(eq(TAG), eq(token));
        checkGranted(() -> mBinder.disableBle(mSource, token), true);
        verify(mManagerService).disableBleFromBinder(eq(TAG), eq(token));
        verify(mManagerService).disableBle(eq(TAG), eq(token));
        verifyMock();
    }