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

Commit e67af197 authored by William Escande's avatar William Escande
Browse files

Always initialize the AirplaneModeListener

Tests now need a provider since they are calling the settings
Some helper tests no longer work with the fake provider. They are
removed since this is not a meaningful test.

Bug: 271963349
Bug: 262605980
Test: atest ServiceBluetoothTests | no-op change
Change-Id: I9881edb1a89e65542c36eedc4670fa6a8a5f51a5
parent 48ef6e02
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -103,9 +103,19 @@ class BluetoothAirplaneModeListener extends Handler {
        mNotificationManager = notificationManager;
        mContext = context;

        String airplaneModeRadios =
                Settings.Global.getString(
                        mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_RADIOS);
        if (airplaneModeRadios != null
                && !airplaneModeRadios.contains(Settings.Global.RADIO_BLUETOOTH)) {
            Log.w(TAG, "BluetoothAirplaneModeListener: blocked by AIRPLANE_MODE_RADIOS");
            mIsAirplaneModeOn = false;
            return;
        }

        mIsAirplaneModeOn = isGlobalAirplaneModeOn(mContext);

        context.getContentResolver()
        mContext.getContentResolver()
                .registerContentObserver(
                        Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON),
                        true,
+5 −11
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ class BluetoothManagerService {

    private BluetoothModeChangeHelper mBluetoothModeChangeHelper;

    private BluetoothAirplaneModeListener mBluetoothAirplaneModeListener;
    private final BluetoothAirplaneModeListener mBluetoothAirplaneModeListener;

    private BluetoothNotificationManager mBluetoothNotificationManager;

@@ -732,14 +732,9 @@ class BluetoothManagerService {
            mEnableExternal = true;
        }

        String airplaneModeRadios =
                Settings.Global.getString(mContentResolver, Settings.Global.AIRPLANE_MODE_RADIOS);
        if (airplaneModeRadios == null
                || airplaneModeRadios.contains(Settings.Global.RADIO_BLUETOOTH)) {
        mBluetoothAirplaneModeListener =
                new BluetoothAirplaneModeListener(
                        this, mLooper, mContext, mBluetoothNotificationManager);
        }

        if (!USE_NEW_SATELLITE_MODE) {
            mBluetoothSatelliteModeListener =
@@ -753,8 +748,7 @@ class BluetoothManagerService {

    /** Returns true if airplane mode is currently on */
    private boolean isAirplaneModeOn() {
        return mBluetoothAirplaneModeListener != null
            && mBluetoothAirplaneModeListener.isAirplaneModeOn();
        return mBluetoothAirplaneModeListener.isAirplaneModeOn();
    }

    /** Returns true if satellite mode is turned on. */
+6 −2
Original line number Diff line number Diff line
@@ -28,17 +28,19 @@ import static com.android.server.bluetooth.BluetoothAirplaneModeListener.WIFI_AP

import static org.mockito.Mockito.*;

import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Looper;
import android.provider.Settings;
import android.test.mock.MockContentResolver;

import androidx.test.filters.MediumTest;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;

import com.android.internal.util.test.FakeSettingsProvider;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -55,12 +57,12 @@ public class BluetoothAirplaneModeListenerTest {

    @Mock private Context mContext;
    @Mock private BluetoothServerProxy mBluetoothServerProxy;
    @Mock private ContentResolver mContentResolver;
    @Mock private BluetoothManagerService mBluetoothManagerService;
    @Mock private BluetoothModeChangeHelper mHelper;
    @Mock private BluetoothNotificationManager mBluetoothNotificationManager;
    @Mock private PackageManager mPackageManager;
    @Mock private Resources mResources;
    private MockContentResolver mContentResolver;

    static {
        // Required for reading DeviceConfig during BluetoothManagerService static init
@@ -72,6 +74,8 @@ public class BluetoothAirplaneModeListenerTest {
    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        mContentResolver = new MockContentResolver();
        mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
        when(mContext.getContentResolver()).thenReturn(mContentResolver);
        when(mHelper.getSettingsInt(BluetoothAirplaneModeListener.TOAST_COUNT))
                .thenReturn(BluetoothAirplaneModeListener.MAX_TOAST_COUNT);
+0 −27
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import static org.mockito.Mockito.spy;

import android.content.Context;
import android.content.ContextWrapper;
import android.provider.Settings;
import android.text.TextUtils;

import androidx.test.InstrumentationRegistry;
@@ -68,32 +67,6 @@ public class BluetoothModeChangeHelperTest {
        mHelper.isBluetoothOn();
    }

    @Test
    public void setSettingsInt() {
        String testSettingsName = "BluetoothModeChangeHelperTest_test_settings_name";
        int value = 9876;

        try {
            mHelper.setSettingsInt(testSettingsName, value);
            assertThat(mHelper.getSettingsInt(testSettingsName)).isEqualTo(value);
        } finally {
            Settings.Global.resetToDefaults(mContext.getContentResolver(), null);
        }
    }

    @Test
    public void setSettingsSecureInt() {
        String testSettingsName = "BluetoothModeChangeHelperTest_test_settings_name";
        int value = 1234;

        try {
            mHelper.setSettingsSecureInt(testSettingsName, value);
            assertThat(mHelper.getSettingsSecureInt(testSettingsName, 0)).isEqualTo(value);
        } finally {
            Settings.Global.resetToDefaults(mContext.getContentResolver(), null);
        }
    }

    @Test
    public void isBluetoothOnAPM_doesNotCrash() {
        mHelper.isBluetoothOnAPM();