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

Commit 7a1d2177 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "settings(nfc): Remove reference to APM setting in NFC page" into udc-dev

parents b29aa72f 3ebfceaf
Loading
Loading
Loading
Loading
+1 −15
Original line number Diff line number Diff line
@@ -18,9 +18,6 @@ package com.android.settings.nfc;

import android.content.Context;
import android.nfc.NfcAdapter;
import android.provider.Settings;

import androidx.annotation.VisibleForTesting;

import com.android.settingslib.widget.MainSwitchPreference;

@@ -41,7 +38,7 @@ public class NfcEnabler extends BaseNfcEnabler {
        switch (newState) {
            case NfcAdapter.STATE_OFF:
                mPreference.updateStatus(false);
                mPreference.setEnabled(isToggleable());
                mPreference.setEnabled(true);
                break;
            case NfcAdapter.STATE_ON:
                mPreference.updateStatus(true);
@@ -57,15 +54,4 @@ public class NfcEnabler extends BaseNfcEnabler {
                break;
        }
    }

    @VisibleForTesting
    boolean isToggleable() {
        if (NfcPreferenceController.isToggleableInAirplaneMode(mContext)
                || !NfcPreferenceController.shouldTurnOffNFCInAirplaneMode(mContext)) {
            return true;
        }
        final int airplaneMode = Settings.Global.getInt(
                mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0);
        return airplaneMode != 1;
    }
}
+0 −13
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.nfc.NfcAdapter;
import android.provider.Settings;
import android.util.Log;
import android.widget.Switch;

@@ -128,18 +127,6 @@ public class NfcPreferenceController extends TogglePreferenceController
        }
    }

    public static boolean shouldTurnOffNFCInAirplaneMode(Context context) {
        final String airplaneModeRadios = Settings.Global.getString(context.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_RADIOS);
        return airplaneModeRadios != null && airplaneModeRadios.contains(Settings.Global.RADIO_NFC);
    }

    public static boolean isToggleableInAirplaneMode(Context context) {
        final String toggleable = Settings.Global.getString(context.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
        return toggleable != null && toggleable.contains(Settings.Global.RADIO_NFC);
    }

    /**
     * Listener for background changes to NFC.
     *
+6 −50
Original line number Diff line number Diff line
@@ -16,15 +16,12 @@

package com.android.settings.nfc;

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

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import android.content.ContentResolver;
import android.content.Context;
import android.nfc.NfcAdapter;
import android.provider.Settings;

import com.android.settingslib.widget.MainSwitchPreference;

@@ -52,55 +49,14 @@ public class NfcEnablerTest {
        mNfcEnabler = spy(new NfcEnabler(mContext, mNfcPreference));
    }

    @Test
    public void isToggleable_AirplaneModeOff_shouldReturnTrue() {
        final ContentResolver contentResolver = mContext.getContentResolver();
        Settings.Global.putInt(contentResolver, Settings.Global.AIRPLANE_MODE_ON, 0);
        Settings.Global.putString(contentResolver,
            Settings.Global.AIRPLANE_MODE_RADIOS, Settings.Global.RADIO_NFC);
        Settings.Global.putString(contentResolver,
            Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS, Settings.Global.RADIO_NFC);

        assertThat(mNfcEnabler.isToggleable()).isTrue();
    }

    @Test
    public void isToggleable_AirplaneModeOnNfcNotInAirplaneModeRadio_shouldReturnTrue() {
        final ContentResolver contentResolver = mContext.getContentResolver();
        Settings.Global.putInt(contentResolver, Settings.Global.AIRPLANE_MODE_ON, 1);
        Settings.Global.putString(contentResolver, Settings.Global.AIRPLANE_MODE_RADIOS, "");

        assertThat(mNfcEnabler.isToggleable()).isTrue();
    }

    @Test
    public void isToggleable_AirplaneModeOnNfcToggleable_shouldReturnTrue() {
        final ContentResolver contentResolver = mContext.getContentResolver();
        Settings.Global.putInt(contentResolver, Settings.Global.AIRPLANE_MODE_ON, 1);
        Settings.Global.putString(contentResolver,
            Settings.Global.AIRPLANE_MODE_RADIOS, Settings.Global.RADIO_NFC);
        Settings.Global.putString(contentResolver,
            Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS, Settings.Global.RADIO_NFC);

        assertThat(mNfcEnabler.isToggleable()).isTrue();
    }

    @Test
    public void isToggleable_AirplaneModeOnNfcNotToggleable_shouldReturnFalse() {
        final ContentResolver contentResolver = mContext.getContentResolver();
        Settings.Global.putInt(contentResolver, Settings.Global.AIRPLANE_MODE_ON, 1);
        Settings.Global.putString(contentResolver,
            Settings.Global.AIRPLANE_MODE_RADIOS, Settings.Global.RADIO_NFC);
        Settings.Global.putString(contentResolver,
                Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS, "");

        assertThat(mNfcEnabler.isToggleable()).isFalse();
    }

    @Test
    public void handleNfcStateChanged_stateOff_shouldCheckIfPreferenceEnableState() {
        mNfcEnabler.handleNfcStateChanged(NfcAdapter.STATE_OFF);
        verify(mNfcPreference).updateStatus(false);
        verify(mNfcPreference).setEnabled(true);

        verify(mNfcEnabler).isToggleable();
        mNfcEnabler.handleNfcStateChanged(NfcAdapter.STATE_ON);
        verify(mNfcPreference).updateStatus(true);
        verify(mNfcPreference, times(2)).setEnabled(true);
    }
}
+0 −39
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.content.Intent;
import android.nfc.NfcAdapter;
import android.nfc.NfcManager;
import android.os.UserManager;
import android.provider.Settings;

import androidx.preference.PreferenceScreen;

@@ -188,44 +187,6 @@ public class NfcPreferenceControllerTest {
        assertThat(mNfcController.hasAsyncUpdate()).isTrue();
    }

    @Test
    public void isToggleableInAirplaneMode_containNfc_shouldReturnTrue() {
        Settings.Global.putString(mContext.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
                Settings.Global.RADIO_NFC);
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_ON, 1);

        assertThat(NfcPreferenceController.isToggleableInAirplaneMode(mContext)).isTrue();
    }

    @Test
    public void isToggleableInAirplaneMode_withoutNfc_shouldReturnFalse() {
        Settings.Global.putString(mContext.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
                "null");
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_ON, 1);

        assertThat(NfcPreferenceController.isToggleableInAirplaneMode(mContext)).isFalse();
    }

    @Test
    public void shouldTurnOffNFCInAirplaneMode_airplaneModeRadiosContainsNfc_shouldReturnTrue() {
        Settings.Global.putString(mContext.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_RADIOS, Settings.Global.RADIO_NFC);

        assertThat(NfcPreferenceController.shouldTurnOffNFCInAirplaneMode(mContext)).isTrue();
    }

    @Test
    public void shouldTurnOffNFCInAirplaneMode_airplaneModeRadiosWithoutNfc_shouldReturnFalse() {
        Settings.Global.putString(mContext.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_RADIOS, "");

        assertThat(NfcPreferenceController.shouldTurnOffNFCInAirplaneMode(mContext)).isFalse();
    }

    @Test
    public void ncfSliceWorker_nfcBroadcast_noExtra_sliceDoesntUpdate() {
        final NfcSliceWorker worker = spy(