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

Commit a9fa4c1d authored by jackqdyulei's avatar jackqdyulei
Browse files

Hook up feature flag to mobile network controller

Send intent to phone process if the flag is false.

Bug: 113069948
Test: RunSettingsRoboTests
Change-Id: Ie9726470e718144557f318fe7ea28e863d63679c
parent b1fa21ac
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);
    }
}