Loading res/xml/network_and_internet.xml +0 −4 Original line number Diff line number Diff line Loading @@ -42,10 +42,6 @@ settings:keywords="@string/keywords_more_mobile_networks" settings:userRestriction="no_config_mobile_networks" settings:useAdminDisabledSummary="true"> <intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.phone" android:targetClass="com.android.phone.MobileNetworkSettings" /> </com.android.settingslib.RestrictedPreference> <com.android.settingslib.RestrictedPreference Loading src/com/android/settings/core/FeatureFlags.java +1 −0 Original line number Diff line number Diff line Loading @@ -25,4 +25,5 @@ public class FeatureFlags { public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher"; public static final String DYNAMIC_HOMEPAGE = "settings_dynamic_homepage"; public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid"; public static final String MOBILE_NETWORK_V2 = "settings_mobile_network_v2"; } src/com/android/settings/network/MobileNetworkPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static android.os.UserHandle.myUserId; import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; Loading @@ -27,7 +28,9 @@ import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.util.FeatureFlagUtils; import com.android.settings.core.FeatureFlags; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedPreference; Loading @@ -44,7 +47,12 @@ import androidx.preference.PreferenceScreen; public class MobileNetworkPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop { private static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings"; @VisibleForTesting static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings"; @VisibleForTesting static final String MOBILE_NETWORK_PACKAGE = "com.android.phone"; @VisibleForTesting static final String MOBILE_NETWORK_CLASS = "com.android.phone.MobileNetworkSettings"; private final boolean mIsSecondaryUser; private final TelephonyManager mTelephonyManager; Loading Loading @@ -134,6 +142,22 @@ public class MobileNetworkPreferenceController extends AbstractPreferenceControl mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) == 0); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (KEY_MOBILE_NETWORK_SETTINGS.equals(preference.getKey())) { if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2)) { //TODO(b/110260193): go to the mobile network page existed in settings } else { final Intent intent = new Intent(Intent.ACTION_MAIN); intent.setComponent( new ComponentName(MOBILE_NETWORK_PACKAGE, MOBILE_NETWORK_CLASS)); mContext.startActivity(intent); } return true; } return false; } @Override public CharSequence getSummary() { return mTelephonyManager.getNetworkOperatorName(); Loading tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java +29 −2 Original line number Diff line number Diff line Loading @@ -15,9 +15,11 @@ */ package com.android.settings.network; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import static com.android.settings.network.MobileNetworkPreferenceController.MOBILE_NETWORK_CLASS; import static com.android.settings.network.MobileNetworkPreferenceController.MOBILE_NETWORK_PACKAGE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; Loading @@ -25,14 +27,21 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.shadow.api.Shadow.extract; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.Global; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.FeatureFlagUtils; import com.android.settings.core.FeatureFlags; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowUserManager; Loading @@ -43,6 +52,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; Loading @@ -68,6 +78,7 @@ public class MobileNetworkPreferenceControllerTest { private Lifecycle mLifecycle; private LifecycleOwner mLifecycleOwner; private MobileNetworkPreferenceController mController; private Preference mPreference; @Before public void setUp() { Loading @@ -76,6 +87,8 @@ public class MobileNetworkPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager); mPreference = new Preference(mContext); mPreference.setKey(MobileNetworkPreferenceController.KEY_MOBILE_NETWORK_SETTINGS); } @Test Loading Loading @@ -173,4 +186,18 @@ public class MobileNetworkPreferenceControllerTest { mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isFalse(); } @Test public void handlePreferenceTreeClick_mobileFeatureDisabled_sendIntent() { mController = new MobileNetworkPreferenceController(mContext); FeatureFlagUtils.setEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2, false); ArgumentCaptor<Intent> argument = ArgumentCaptor.forClass(Intent.class); mController.handlePreferenceTreeClick(mPreference); verify(mContext).startActivity(argument.capture()); final ComponentName componentName = argument.getValue().getComponent(); assertThat(componentName.getPackageName()).isEqualTo(MOBILE_NETWORK_PACKAGE); assertThat(componentName.getClassName()).isEqualTo(MOBILE_NETWORK_CLASS); } } Loading
res/xml/network_and_internet.xml +0 −4 Original line number Diff line number Diff line Loading @@ -42,10 +42,6 @@ settings:keywords="@string/keywords_more_mobile_networks" settings:userRestriction="no_config_mobile_networks" settings:useAdminDisabledSummary="true"> <intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.phone" android:targetClass="com.android.phone.MobileNetworkSettings" /> </com.android.settingslib.RestrictedPreference> <com.android.settingslib.RestrictedPreference Loading
src/com/android/settings/core/FeatureFlags.java +1 −0 Original line number Diff line number Diff line Loading @@ -25,4 +25,5 @@ public class FeatureFlags { public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher"; public static final String DYNAMIC_HOMEPAGE = "settings_dynamic_homepage"; public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid"; public static final String MOBILE_NETWORK_V2 = "settings_mobile_network_v2"; }
src/com/android/settings/network/MobileNetworkPreferenceController.java +25 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static android.os.UserHandle.myUserId; import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; Loading @@ -27,7 +28,9 @@ import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.util.FeatureFlagUtils; import com.android.settings.core.FeatureFlags; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedPreference; Loading @@ -44,7 +47,12 @@ import androidx.preference.PreferenceScreen; public class MobileNetworkPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop { private static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings"; @VisibleForTesting static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings"; @VisibleForTesting static final String MOBILE_NETWORK_PACKAGE = "com.android.phone"; @VisibleForTesting static final String MOBILE_NETWORK_CLASS = "com.android.phone.MobileNetworkSettings"; private final boolean mIsSecondaryUser; private final TelephonyManager mTelephonyManager; Loading Loading @@ -134,6 +142,22 @@ public class MobileNetworkPreferenceController extends AbstractPreferenceControl mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) == 0); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (KEY_MOBILE_NETWORK_SETTINGS.equals(preference.getKey())) { if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2)) { //TODO(b/110260193): go to the mobile network page existed in settings } else { final Intent intent = new Intent(Intent.ACTION_MAIN); intent.setComponent( new ComponentName(MOBILE_NETWORK_PACKAGE, MOBILE_NETWORK_CLASS)); mContext.startActivity(intent); } return true; } return false; } @Override public CharSequence getSummary() { return mTelephonyManager.getNetworkOperatorName(); Loading
tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java +29 −2 Original line number Diff line number Diff line Loading @@ -15,9 +15,11 @@ */ package com.android.settings.network; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import static com.android.settings.network.MobileNetworkPreferenceController.MOBILE_NETWORK_CLASS; import static com.android.settings.network.MobileNetworkPreferenceController.MOBILE_NETWORK_PACKAGE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; Loading @@ -25,14 +27,21 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.shadow.api.Shadow.extract; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.Global; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.FeatureFlagUtils; import com.android.settings.core.FeatureFlags; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowUserManager; Loading @@ -43,6 +52,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; Loading @@ -68,6 +78,7 @@ public class MobileNetworkPreferenceControllerTest { private Lifecycle mLifecycle; private LifecycleOwner mLifecycleOwner; private MobileNetworkPreferenceController mController; private Preference mPreference; @Before public void setUp() { Loading @@ -76,6 +87,8 @@ public class MobileNetworkPreferenceControllerTest { mLifecycleOwner = () -> mLifecycle; mLifecycle = new Lifecycle(mLifecycleOwner); when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager); mPreference = new Preference(mContext); mPreference.setKey(MobileNetworkPreferenceController.KEY_MOBILE_NETWORK_SETTINGS); } @Test Loading Loading @@ -173,4 +186,18 @@ public class MobileNetworkPreferenceControllerTest { mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isFalse(); } @Test public void handlePreferenceTreeClick_mobileFeatureDisabled_sendIntent() { mController = new MobileNetworkPreferenceController(mContext); FeatureFlagUtils.setEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2, false); ArgumentCaptor<Intent> argument = ArgumentCaptor.forClass(Intent.class); mController.handlePreferenceTreeClick(mPreference); verify(mContext).startActivity(argument.capture()); final ComponentName componentName = argument.getValue().getComponent(); assertThat(componentName.getPackageName()).isEqualTo(MOBILE_NETWORK_PACKAGE); assertThat(componentName.getClassName()).isEqualTo(MOBILE_NETWORK_CLASS); } }