Display carrier network name as celluar setting summary.
Bug: 34974598 Test: make RunSettingsRoboTests Change-Id: I99436337919440e0dd21653f9ea63d6f3a694df0
This commit is contained in:
@@ -253,7 +253,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
|
|||||||
new NfcPreferenceController(context).updateNonIndexableKeys(result);
|
new NfcPreferenceController(context).updateNonIndexableKeys(result);
|
||||||
new MobilePlanPreferenceController(context, null /* MobilePlanClickHandler */)
|
new MobilePlanPreferenceController(context, null /* MobilePlanClickHandler */)
|
||||||
.updateNonIndexableKeys(result);
|
.updateNonIndexableKeys(result);
|
||||||
new MobileNetworkPreferenceController(context).updateNonIndexableKeys(result);
|
new MobileNetworkPreferenceController(context)
|
||||||
|
.updateNonIndexableKeys(result);
|
||||||
|
|
||||||
// Remove Airplane Mode settings if it's a stationary device such as a TV.
|
// Remove Airplane Mode settings if it's a stationary device such as a TV.
|
||||||
new AirplaneModePreferenceController(context, null /* fragment */)
|
new AirplaneModePreferenceController(context, null /* fragment */)
|
||||||
|
@@ -17,25 +17,40 @@ package com.android.settings.network;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
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.telephony.PhoneStateListener;
|
||||||
|
import android.telephony.ServiceState;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.PreferenceController;
|
import com.android.settings.core.PreferenceController;
|
||||||
|
import com.android.settings.core.lifecycle.Lifecycle;
|
||||||
|
import com.android.settings.core.lifecycle.LifecycleObserver;
|
||||||
|
import com.android.settings.core.lifecycle.events.OnPause;
|
||||||
|
import com.android.settings.core.lifecycle.events.OnResume;
|
||||||
|
|
||||||
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 static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction;
|
import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction;
|
||||||
|
|
||||||
public class MobileNetworkPreferenceController extends PreferenceController {
|
public class MobileNetworkPreferenceController extends PreferenceController implements
|
||||||
|
LifecycleObserver, OnResume, OnPause {
|
||||||
|
|
||||||
private static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings";
|
private static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings";
|
||||||
|
|
||||||
private final UserManager mUserManager;
|
private final UserManager mUserManager;
|
||||||
private final boolean mIsSecondaryUser;
|
private final boolean mIsSecondaryUser;
|
||||||
|
private final TelephonyManager mTelephonyManager;
|
||||||
|
private Preference mPreference;
|
||||||
|
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
||||||
|
PhoneStateListener mPhoneStateListener;
|
||||||
|
|
||||||
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);
|
||||||
mIsSecondaryUser = !mUserManager.isAdminUser();
|
mIsSecondaryUser = !mUserManager.isAdminUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,8 +61,40 @@ public class MobileNetworkPreferenceController extends PreferenceController {
|
|||||||
&& !hasBaseUserRestriction(mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId());
|
&& !hasBaseUserRestriction(mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
|
super.displayPreference(screen);
|
||||||
|
if (isAvailable()) {
|
||||||
|
mPreference = screen.findPreference(getPreferenceKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPreferenceKey() {
|
public String getPreferenceKey() {
|
||||||
return KEY_MOBILE_NETWORK_SETTINGS;
|
return KEY_MOBILE_NETWORK_SETTINGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
if (isAvailable()) {
|
||||||
|
if (mPhoneStateListener == null) {
|
||||||
|
mPhoneStateListener = new PhoneStateListener() {
|
||||||
|
@Override
|
||||||
|
public void onServiceStateChanged(ServiceState serviceState) {
|
||||||
|
if (mPreference != null) {
|
||||||
|
mPreference.setSummary(mTelephonyManager.getNetworkOperatorName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
if (mPhoneStateListener != null) {
|
||||||
|
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -81,14 +81,17 @@ public class NetworkDashboardFragment extends DashboardFragment implements
|
|||||||
new MobilePlanPreferenceController(context, this);
|
new MobilePlanPreferenceController(context, this);
|
||||||
final WifiMasterSwitchPreferenceController wifiPreferenceController =
|
final WifiMasterSwitchPreferenceController wifiPreferenceController =
|
||||||
new WifiMasterSwitchPreferenceController(context, mMetricsFeatureProvider);
|
new WifiMasterSwitchPreferenceController(context, mMetricsFeatureProvider);
|
||||||
|
final MobileNetworkPreferenceController mobileNetworkPreferenceController =
|
||||||
|
new MobileNetworkPreferenceController(context);
|
||||||
final Lifecycle lifecycle = getLifecycle();
|
final Lifecycle lifecycle = getLifecycle();
|
||||||
lifecycle.addObserver(airplaneModePreferenceController);
|
lifecycle.addObserver(airplaneModePreferenceController);
|
||||||
lifecycle.addObserver(mobilePlanPreferenceController);
|
lifecycle.addObserver(mobilePlanPreferenceController);
|
||||||
lifecycle.addObserver(wifiPreferenceController);
|
lifecycle.addObserver(wifiPreferenceController);
|
||||||
|
lifecycle.addObserver(mobileNetworkPreferenceController);
|
||||||
|
|
||||||
final List<PreferenceController> controllers = new ArrayList<>();
|
final List<PreferenceController> controllers = new ArrayList<>();
|
||||||
controllers.add(airplaneModePreferenceController);
|
controllers.add(airplaneModePreferenceController);
|
||||||
controllers.add(new MobileNetworkPreferenceController(context));
|
controllers.add(mobileNetworkPreferenceController);
|
||||||
controllers.add(new TetherPreferenceController(context));
|
controllers.add(new TetherPreferenceController(context));
|
||||||
controllers.add(new VpnPreferenceController(context));
|
controllers.add(new VpnPreferenceController(context));
|
||||||
controllers.add(new ProxyPreferenceController(context));
|
controllers.add(new ProxyPreferenceController(context));
|
||||||
|
@@ -19,8 +19,15 @@ import android.content.Context;
|
|||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.support.v7.preference.Preference;
|
||||||
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
import android.telephony.PhoneStateListener;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import com.android.settings.SettingsRobolectricTestRunner;
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -32,6 +39,10 @@ import org.robolectric.annotation.Config;
|
|||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@@ -44,15 +55,23 @@ public class MobileNetworkPreferenceControllerTest {
|
|||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
@Mock
|
@Mock
|
||||||
private ConnectivityManager mConnectivityManager;
|
private ConnectivityManager mConnectivityManager;
|
||||||
|
@Mock
|
||||||
|
private TelephonyManager mTelephonyManager;
|
||||||
|
@Mock
|
||||||
|
private PreferenceScreen mScreen;
|
||||||
|
|
||||||
|
private Lifecycle mLifecycle;
|
||||||
private MobileNetworkPreferenceController mController;
|
private MobileNetworkPreferenceController mController;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
mLifecycle = new Lifecycle();
|
||||||
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
||||||
when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
|
when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
|
||||||
.thenReturn(mConnectivityManager);
|
.thenReturn(mConnectivityManager);
|
||||||
|
when(mContext.getSystemService(Context.TELEPHONY_SERVICE))
|
||||||
|
.thenReturn(mTelephonyManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -78,4 +97,45 @@ public class MobileNetworkPreferenceControllerTest {
|
|||||||
mController = new MobileNetworkPreferenceController(mContext);
|
mController = new MobileNetworkPreferenceController(mContext);
|
||||||
assertThat(mController.isAvailable()).isFalse();
|
assertThat(mController.isAvailable()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void goThroughLifecycle_isAvailable_shouldListenToServiceChange() {
|
||||||
|
mController = spy(new MobileNetworkPreferenceController(mContext));
|
||||||
|
mLifecycle.addObserver(mController);
|
||||||
|
doReturn(true).when(mController).isAvailable();
|
||||||
|
|
||||||
|
mLifecycle.onResume();
|
||||||
|
verify(mTelephonyManager).listen(mController.mPhoneStateListener,
|
||||||
|
PhoneStateListener.LISTEN_SERVICE_STATE);
|
||||||
|
|
||||||
|
mLifecycle.onPause();
|
||||||
|
verify(mTelephonyManager).listen(mController.mPhoneStateListener,
|
||||||
|
PhoneStateListener.LISTEN_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void serviceStateChange_shouldUpdatePrefSummary() {
|
||||||
|
final String testCarrierName = "test";
|
||||||
|
final Preference mPreference = mock(Preference.class);
|
||||||
|
mController = spy(new MobileNetworkPreferenceController(mContext));
|
||||||
|
mLifecycle.addObserver(mController);
|
||||||
|
|
||||||
|
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
|
||||||
|
doReturn(true).when(mController).isAvailable();
|
||||||
|
|
||||||
|
// Display pref and go through lifecycle to set up listener.
|
||||||
|
mController.displayPreference(mScreen);
|
||||||
|
mLifecycle.onResume();
|
||||||
|
verify(mController).onResume();
|
||||||
|
verify(mTelephonyManager).listen(mController.mPhoneStateListener,
|
||||||
|
PhoneStateListener.LISTEN_SERVICE_STATE);
|
||||||
|
|
||||||
|
// Trigger listener update
|
||||||
|
when(mTelephonyManager.getNetworkOperatorName()).thenReturn(testCarrierName);
|
||||||
|
mController.mPhoneStateListener.onServiceStateChanged(null);
|
||||||
|
|
||||||
|
// Carrier name should be set.
|
||||||
|
verify(mPreference).setSummary(testCarrierName);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user