Merge "Disallow_airplane_mode should not disable mobile network." into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cc65760354
@@ -37,7 +37,6 @@
|
|||||||
android:title="@string/network_settings_title"
|
android:title="@string/network_settings_title"
|
||||||
android:summary="@string/summary_placeholder"
|
android:summary="@string/summary_placeholder"
|
||||||
android:icon="@drawable/ic_network_cell"
|
android:icon="@drawable/ic_network_cell"
|
||||||
android:dependency="toggle_airplane"
|
|
||||||
android:order="-15"
|
android:order="-15"
|
||||||
settings:keywords="@string/keywords_more_mobile_networks"
|
settings:keywords="@string/keywords_more_mobile_networks"
|
||||||
settings:userRestriction="no_config_mobile_networks"
|
settings:userRestriction="no_config_mobile_networks"
|
||||||
|
@@ -18,8 +18,12 @@ package com.android.settings.network;
|
|||||||
import static android.os.UserHandle.myUserId;
|
import static android.os.UserHandle.myUserId;
|
||||||
import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
|
import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
@@ -29,6 +33,7 @@ import android.telephony.TelephonyManager;
|
|||||||
|
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.wrapper.RestrictedLockUtilsWrapper;
|
import com.android.settings.wrapper.RestrictedLockUtilsWrapper;
|
||||||
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
@@ -47,11 +52,20 @@ public class MobileNetworkPreferenceController extends AbstractPreferenceControl
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
PhoneStateListener mPhoneStateListener;
|
PhoneStateListener mPhoneStateListener;
|
||||||
|
|
||||||
|
private BroadcastReceiver mAirplanModeChangedReceiver;
|
||||||
|
|
||||||
public MobileNetworkPreferenceController(Context context) {
|
public MobileNetworkPreferenceController(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
|
||||||
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
mIsSecondaryUser = !mUserManager.isAdminUser();
|
mIsSecondaryUser = !mUserManager.isAdminUser();
|
||||||
|
|
||||||
|
mAirplanModeChangedReceiver = new BroadcastReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
updateState(mPreference);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -92,6 +106,10 @@ public class MobileNetworkPreferenceController extends AbstractPreferenceControl
|
|||||||
}
|
}
|
||||||
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
|
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
|
||||||
}
|
}
|
||||||
|
if (mAirplanModeChangedReceiver != null) {
|
||||||
|
mContext.registerReceiver(mAirplanModeChangedReceiver,
|
||||||
|
new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -99,6 +117,21 @@ public class MobileNetworkPreferenceController extends AbstractPreferenceControl
|
|||||||
if (mPhoneStateListener != null) {
|
if (mPhoneStateListener != null) {
|
||||||
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
|
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
|
||||||
}
|
}
|
||||||
|
if (mAirplanModeChangedReceiver != null) {
|
||||||
|
mContext.unregisterReceiver(mAirplanModeChangedReceiver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateState(Preference preference) {
|
||||||
|
super.updateState(preference);
|
||||||
|
|
||||||
|
if (preference instanceof RestrictedPreference &&
|
||||||
|
((RestrictedPreference) preference).isDisabledByAdmin()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
preference.setEnabled(Settings.Global.getInt(
|
||||||
|
mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -29,6 +29,8 @@ import android.arch.lifecycle.LifecycleOwner;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.provider.Settings;
|
||||||
|
import android.provider.Settings.Global;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
import android.telephony.PhoneStateListener;
|
import android.telephony.PhoneStateListener;
|
||||||
@@ -38,6 +40,8 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
|||||||
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
|
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
|
||||||
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsWrapper;
|
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsWrapper;
|
||||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -138,4 +142,36 @@ public class MobileNetworkPreferenceControllerTest {
|
|||||||
// Carrier name should be set.
|
// Carrier name should be set.
|
||||||
verify(mPreference).setSummary(testCarrierName);
|
verify(mPreference).setSummary(testCarrierName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void airplaneModeTurnedOn_shouldDisablePreference() {
|
||||||
|
Settings.Global.putInt(mContext.getContentResolver(),
|
||||||
|
Global.AIRPLANE_MODE_ON, 1);
|
||||||
|
mController = spy(new MobileNetworkPreferenceController(mContext));
|
||||||
|
final RestrictedPreference mPreference = new RestrictedPreference(mContext);
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
assertThat(mPreference.isEnabled()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void airplaneModeTurnedOffAndNoUserRestriction_shouldEnablePreference() {
|
||||||
|
Settings.Global.putInt(mContext.getContentResolver(),
|
||||||
|
Global.AIRPLANE_MODE_ON, 0);
|
||||||
|
mController = spy(new MobileNetworkPreferenceController(mContext));
|
||||||
|
final RestrictedPreference mPreference = new RestrictedPreference(mContext);
|
||||||
|
mPreference.setDisabledByAdmin(null);
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
assertThat(mPreference.isEnabled()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void airplaneModeTurnedOffAndHasUserRestriction_shouldDisablePreference() {
|
||||||
|
Settings.Global.putInt(mContext.getContentResolver(),
|
||||||
|
Global.AIRPLANE_MODE_ON, 0);
|
||||||
|
mController = spy(new MobileNetworkPreferenceController(mContext));
|
||||||
|
final RestrictedPreference mPreference = new RestrictedPreference(mContext);
|
||||||
|
mPreference.setDisabledByAdmin(EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN);
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
assertThat(mPreference.isEnabled()).isFalse();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user