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

Commit 10995c9b authored by Lei Yu's avatar Lei Yu Committed by Android (Google) Code Review
Browse files

Merge "Hook up feature flag to mobile network controller"

parents dcd8e75b a9fa4c1d
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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";
}
+25 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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();
+29 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -68,6 +78,7 @@ public class MobileNetworkPreferenceControllerTest {
    private Lifecycle mLifecycle;
    private LifecycleOwner mLifecycleOwner;
    private MobileNetworkPreferenceController mController;
    private Preference mPreference;

    @Before
    public void setUp() {
@@ -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
@@ -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);
    }
}