Show dialog on Wifi, and APM' entries in Settings
- When satellite mode is switched on Wifi, and APM entry shall show the warning dialog and avoid user uses these functions. Bug: 337154438 Test: Manual test. Test: atest pass Change-Id: I45cd92a8688e7a619613361ea4a8d58a0984d99f
This commit is contained in:
@@ -17,6 +17,9 @@ package com.android.settings.network;
|
|||||||
|
|
||||||
import static android.provider.SettingsSlicesContract.KEY_AIRPLANE_MODE;
|
import static android.provider.SettingsSlicesContract.KEY_AIRPLANE_MODE;
|
||||||
|
|
||||||
|
import static com.android.settings.network.SatelliteWarningDialogActivity.EXTRA_TYPE_OF_SATELLITE_WARNING_DIALOG;
|
||||||
|
import static com.android.settings.network.SatelliteWarningDialogActivity.TYPE_IS_AIRPLANE_MODE;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -25,6 +28,7 @@ import android.content.pm.PackageManager;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.provider.SettingsSlicesContract;
|
import android.provider.SettingsSlicesContract;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
@@ -38,13 +42,20 @@ import com.android.settings.Utils;
|
|||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
||||||
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnStart;
|
import com.android.settingslib.core.lifecycle.events.OnStart;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnStop;
|
import com.android.settingslib.core.lifecycle.events.OnStop;
|
||||||
|
|
||||||
public class AirplaneModePreferenceController extends TogglePreferenceController
|
import java.util.concurrent.ExecutionException;
|
||||||
implements LifecycleObserver, OnStart, OnStop, OnDestroy,
|
import java.util.concurrent.Executors;
|
||||||
AirplaneModeEnabler.OnAirplaneModeChangedListener {
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
public class AirplaneModePreferenceController extends TogglePreferenceController
|
||||||
|
implements LifecycleObserver, OnStart, OnResume, OnStop, OnDestroy,
|
||||||
|
AirplaneModeEnabler.OnAirplaneModeChangedListener {
|
||||||
|
private static final String TAG = AirplaneModePreferenceController.class.getSimpleName();
|
||||||
public static final int REQUEST_CODE_EXIT_ECM = 1;
|
public static final int REQUEST_CODE_EXIT_ECM = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -60,12 +71,15 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
|
|||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
private AirplaneModeEnabler mAirplaneModeEnabler;
|
private AirplaneModeEnabler mAirplaneModeEnabler;
|
||||||
private TwoStatePreference mAirplaneModePreference;
|
private TwoStatePreference mAirplaneModePreference;
|
||||||
|
private SatelliteRepository mSatelliteRepository;
|
||||||
|
@VisibleForTesting
|
||||||
|
AtomicBoolean mIsSatelliteOn = new AtomicBoolean(false);
|
||||||
|
|
||||||
public AirplaneModePreferenceController(Context context, String key) {
|
public AirplaneModePreferenceController(Context context, String key) {
|
||||||
super(context, key);
|
super(context, key);
|
||||||
|
|
||||||
if (isAvailable(mContext)) {
|
if (isAvailable(mContext)) {
|
||||||
mAirplaneModeEnabler = new AirplaneModeEnabler(mContext, this);
|
mAirplaneModeEnabler = new AirplaneModeEnabler(mContext, this);
|
||||||
|
mSatelliteRepository = new SatelliteRepository(mContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,18 +94,28 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean handlePreferenceTreeClick(Preference preference) {
|
public boolean handlePreferenceTreeClick(Preference preference) {
|
||||||
if (KEY_AIRPLANE_MODE.equals(preference.getKey()) && isAvailable()
|
if (KEY_AIRPLANE_MODE.equals(preference.getKey()) && isAvailable()) {
|
||||||
&& mAirplaneModeEnabler.isInEcmMode()) {
|
|
||||||
// In ECM mode launch ECM app dialog
|
// In ECM mode launch ECM app dialog
|
||||||
if (mFragment != null) {
|
if (mAirplaneModeEnabler.isInEcmMode()) {
|
||||||
mFragment.startActivityForResult(
|
if (mFragment != null) {
|
||||||
new Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null)
|
mFragment.startActivityForResult(
|
||||||
.setPackage(Utils.PHONE_PACKAGE_NAME),
|
new Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null)
|
||||||
REQUEST_CODE_EXIT_ECM);
|
.setPackage(Utils.PHONE_PACKAGE_NAME),
|
||||||
|
REQUEST_CODE_EXIT_ECM);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (mIsSatelliteOn.get()) {
|
||||||
|
mContext.startActivity(
|
||||||
|
new Intent(mContext, SatelliteWarningDialogActivity.class)
|
||||||
|
.putExtra(
|
||||||
|
EXTRA_TYPE_OF_SATELLITE_WARNING_DIALOG,
|
||||||
|
TYPE_IS_AIRPLANE_MODE)
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,6 +158,17 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
try {
|
||||||
|
mIsSatelliteOn.set(
|
||||||
|
mSatelliteRepository.requestIsEnabled(Executors.newSingleThreadExecutor())
|
||||||
|
.get(2000, TimeUnit.MILLISECONDS));
|
||||||
|
} catch (ExecutionException | TimeoutException | InterruptedException e) {
|
||||||
|
Log.e(TAG, "Error to get satellite status : " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
if (isAvailable()) {
|
if (isAvailable()) {
|
||||||
@@ -165,7 +200,7 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
if (isChecked() == isChecked) {
|
if (isChecked() == isChecked || mIsSatelliteOn.get()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (isAvailable()) {
|
if (isAvailable()) {
|
||||||
|
@@ -41,7 +41,7 @@ class SatelliteWarningDialogActivity : SpaDialogWindowTypeActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getDialogWindowType(): Int {
|
override fun getDialogWindowType(): Int {
|
||||||
return WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW
|
return WindowManager.LayoutParams.LAST_APPLICATION_WINDOW
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
@@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
package com.android.settings.wifi;
|
package com.android.settings.wifi;
|
||||||
|
|
||||||
|
import static com.android.settings.network.SatelliteWarningDialogActivity.EXTRA_TYPE_OF_SATELLITE_WARNING_DIALOG;
|
||||||
|
import static com.android.settings.network.SatelliteWarningDialogActivity.TYPE_IS_WIFI;
|
||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -27,19 +30,26 @@ import android.net.wifi.SupplicantState;
|
|||||||
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.network.SatelliteRepository;
|
||||||
|
import com.android.settings.network.SatelliteWarningDialogActivity;
|
||||||
import com.android.settings.widget.SwitchWidgetController;
|
import com.android.settings.widget.SwitchWidgetController;
|
||||||
import com.android.settingslib.WirelessUtils;
|
import com.android.settingslib.WirelessUtils;
|
||||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListener {
|
public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListener {
|
||||||
|
private static final String TAG = WifiEnabler.class.getSimpleName();
|
||||||
private final SwitchWidgetController mSwitchWidget;
|
private final SwitchWidgetController mSwitchWidget;
|
||||||
private final WifiManager mWifiManager;
|
private final WifiManager mWifiManager;
|
||||||
private final ConnectivityManager mConnectivityManager;
|
private final ConnectivityManager mConnectivityManager;
|
||||||
@@ -48,7 +58,9 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
private boolean mListeningToOnSwitchChange = false;
|
private boolean mListeningToOnSwitchChange = false;
|
||||||
private AtomicBoolean mConnected = new AtomicBoolean(false);
|
private AtomicBoolean mConnected = new AtomicBoolean(false);
|
||||||
|
private SatelliteRepository mSatelliteRepository;
|
||||||
|
@VisibleForTesting
|
||||||
|
AtomicBoolean mIsSatelliteOn = new AtomicBoolean(false);
|
||||||
|
|
||||||
private boolean mStateMachineEvent;
|
private boolean mStateMachineEvent;
|
||||||
private final IntentFilter mIntentFilter;
|
private final IntentFilter mIntentFilter;
|
||||||
@@ -93,7 +105,7 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
|||||||
// The order matters! We really should not depend on this. :(
|
// The order matters! We really should not depend on this. :(
|
||||||
mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
|
mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
|
||||||
mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
|
mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
|
||||||
|
mSatelliteRepository = new SatelliteRepository(context);
|
||||||
setupSwitchController();
|
setupSwitchController();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,6 +136,14 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
|||||||
mSwitchWidget.startListening();
|
mSwitchWidget.startListening();
|
||||||
mListeningToOnSwitchChange = true;
|
mListeningToOnSwitchChange = true;
|
||||||
}
|
}
|
||||||
|
// Refresh satellite mode status.
|
||||||
|
try {
|
||||||
|
mIsSatelliteOn.set(
|
||||||
|
mSatelliteRepository.requestIsEnabled(Executors.newSingleThreadExecutor())
|
||||||
|
.get(2000, TimeUnit.MILLISECONDS));
|
||||||
|
} catch (ExecutionException | TimeoutException | InterruptedException e) {
|
||||||
|
Log.e(TAG, "Error to get satellite status : " + e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pause() {
|
public void pause() {
|
||||||
@@ -185,6 +205,18 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
|||||||
if (mStateMachineEvent) {
|
if (mStateMachineEvent) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show dialog and do nothing under satellite mode.
|
||||||
|
if (mIsSatelliteOn.get()) {
|
||||||
|
mContext.startActivity(
|
||||||
|
new Intent(mContext, SatelliteWarningDialogActivity.class)
|
||||||
|
.putExtra(
|
||||||
|
EXTRA_TYPE_OF_SATELLITE_WARNING_DIALOG,
|
||||||
|
TYPE_IS_WIFI)
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Show toast message if Wi-Fi is not allowed in airplane mode
|
// Show toast message if Wi-Fi is not allowed in airplane mode
|
||||||
if (isChecked && !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) {
|
if (isChecked && !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) {
|
||||||
Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
|
||||||
|
@@ -52,6 +52,7 @@ import com.android.settings.SubSettings;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.network.NetworkProviderSettings;
|
import com.android.settings.network.NetworkProviderSettings;
|
||||||
|
import com.android.settings.network.SatelliteRepository;
|
||||||
import com.android.settings.network.WifiSwitchPreferenceController;
|
import com.android.settings.network.WifiSwitchPreferenceController;
|
||||||
import com.android.settings.slices.CustomSliceable;
|
import com.android.settings.slices.CustomSliceable;
|
||||||
import com.android.settings.slices.SliceBackgroundWorker;
|
import com.android.settings.slices.SliceBackgroundWorker;
|
||||||
@@ -66,6 +67,10 @@ import com.android.wifitrackerlib.WifiEntry;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -225,7 +230,8 @@ public class WifiSlice implements CustomSliceable {
|
|||||||
.setAccentColor(COLOR_NOT_TINTED)
|
.setAccentColor(COLOR_NOT_TINTED)
|
||||||
.setKeywords(getKeywords())
|
.setKeywords(getKeywords())
|
||||||
.addRow(getHeaderRow(isWifiEnabled, wifiSliceItem));
|
.addRow(getHeaderRow(isWifiEnabled, wifiSliceItem));
|
||||||
if (!isWiFiPermissionGranted || !mWifiRestriction.isChangeWifiStateAllowed(mContext)) {
|
if (!isWiFiPermissionGranted || !mWifiRestriction.isChangeWifiStateAllowed(mContext)
|
||||||
|
|| isSatelliteOn()) {
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -416,4 +422,17 @@ public class WifiSlice implements CustomSliceable {
|
|||||||
return WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(context);
|
return WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isSatelliteOn() {
|
||||||
|
SatelliteRepository satelliteRepository = new SatelliteRepository(mContext);
|
||||||
|
boolean isSatelliteOn = false;
|
||||||
|
try {
|
||||||
|
isSatelliteOn =
|
||||||
|
satelliteRepository.requestIsEnabled(Executors.newSingleThreadExecutor())
|
||||||
|
.get(2000, TimeUnit.MILLISECONDS);
|
||||||
|
} catch (ExecutionException | TimeoutException | InterruptedException e) {
|
||||||
|
Log.e(TAG, "Error to get satellite status : " + e);
|
||||||
|
}
|
||||||
|
return isSatelliteOn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,12 +18,15 @@ package com.android.settings.wifi;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.util.AndroidRuntimeException;
|
||||||
|
|
||||||
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
|
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
|
||||||
import com.android.settings.widget.SwitchWidgetController;
|
import com.android.settings.widget.SwitchWidgetController;
|
||||||
@@ -65,4 +68,17 @@ public class WifiEnablerTest {
|
|||||||
|
|
||||||
assertThat(mEnabler.onSwitchToggled(true)).isTrue();
|
assertThat(mEnabler.onSwitchToggled(true)).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onSwitchToggled_satelliteOn_startWarningActivity() {
|
||||||
|
mEnabler.mIsSatelliteOn.set(true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
mEnabler.onSwitchToggled(true);
|
||||||
|
} catch (AndroidRuntimeException e) {
|
||||||
|
// Catch exception of starting activity .
|
||||||
|
}
|
||||||
|
|
||||||
|
verify(mContext).startActivity(any());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,10 +16,14 @@
|
|||||||
|
|
||||||
package com.android.settings.network;
|
package com.android.settings.network;
|
||||||
|
|
||||||
|
import static android.provider.SettingsSlicesContract.KEY_AIRPLANE_MODE;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
@@ -28,6 +32,7 @@ import android.content.pm.PackageManager;
|
|||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.provider.SettingsSlicesContract;
|
import android.provider.SettingsSlicesContract;
|
||||||
|
import android.util.AndroidRuntimeException;
|
||||||
|
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
@@ -73,12 +78,12 @@ public class AirplaneModePreferenceControllerTest {
|
|||||||
mResolver = mContext.getContentResolver();
|
mResolver = mContext.getContentResolver();
|
||||||
doReturn(mPackageManager).when(mContext).getPackageManager();
|
doReturn(mPackageManager).when(mContext).getPackageManager();
|
||||||
mController = new AirplaneModePreferenceController(mContext,
|
mController = new AirplaneModePreferenceController(mContext,
|
||||||
SettingsSlicesContract.KEY_AIRPLANE_MODE);
|
KEY_AIRPLANE_MODE);
|
||||||
|
|
||||||
mPreferenceManager = new PreferenceManager(mContext);
|
mPreferenceManager = new PreferenceManager(mContext);
|
||||||
mScreen = mPreferenceManager.createPreferenceScreen(mContext);
|
mScreen = mPreferenceManager.createPreferenceScreen(mContext);
|
||||||
mPreference = new RestrictedSwitchPreference(mContext);
|
mPreference = new RestrictedSwitchPreference(mContext);
|
||||||
mPreference.setKey(SettingsSlicesContract.KEY_AIRPLANE_MODE);
|
mPreference.setKey(KEY_AIRPLANE_MODE);
|
||||||
mScreen.addPreference(mPreference);
|
mScreen.addPreference(mPreference);
|
||||||
mController.setFragment(null);
|
mController.setFragment(null);
|
||||||
}
|
}
|
||||||
@@ -167,4 +172,18 @@ public class AirplaneModePreferenceControllerTest {
|
|||||||
public void isPublicSlice_returnsTrue() {
|
public void isPublicSlice_returnsTrue() {
|
||||||
assertThat(mController.isPublicSlice()).isTrue();
|
assertThat(mController.isPublicSlice()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handlePreferenceTreeClick_satelliteOn_startWarningActivity() {
|
||||||
|
mController.mIsSatelliteOn.set(true);
|
||||||
|
when(mAirplaneModeEnabler.isInEcmMode()).thenReturn(false);
|
||||||
|
|
||||||
|
try {
|
||||||
|
mController.handlePreferenceTreeClick(mPreference);
|
||||||
|
} catch (AndroidRuntimeException e) {
|
||||||
|
// Catch exception of starting activity .
|
||||||
|
}
|
||||||
|
|
||||||
|
verify(mContext).startActivity(any());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user