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

Commit 50a43ea4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Improve satellite category visiblity logic." into main

parents a543a579 ef835bb5
Loading
Loading
Loading
Loading
+29 −11
Original line number Diff line number Diff line
@@ -16,13 +16,17 @@

package com.android.settings.network.telephony;

import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL;
import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ESOS_SUPPORTED_BOOL;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_DATA;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS;

import android.content.Context;
import android.os.PersistableBundle;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.telephony.satellite.NtnSignalStrength;
import android.telephony.satellite.SatelliteManager;
import android.util.Log;

import androidx.annotation.NonNull;
@@ -34,6 +38,7 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.flags.Flags;
import com.android.settings.network.CarrierConfigCache;

import java.util.Arrays;
import java.util.List;
@@ -43,8 +48,10 @@ public class SatelliteSettingsPreferenceCategoryController
        extends TelephonyBasePreferenceController implements DefaultLifecycleObserver {
    private static final String TAG = "SatelliteSettingsPrefCategoryCon";

    private CarrierConfigCache mCarrierConfigCache;
    private SatelliteManager mSatelliteManager;
    private PreferenceCategory mPreferenceCategory;
    private TelephonyManager mTelephonyManager = null;
    private TelephonyManager mTelephonyManager;

    @VisibleForTesting
    final CarrierRoamingNtnModeCallback mCarrierRoamingNtnModeCallback =
@@ -52,7 +59,8 @@ public class SatelliteSettingsPreferenceCategoryController

    public SatelliteSettingsPreferenceCategoryController(Context context, String key) {
        super(context, key);
        setAvailabilityStatus(UNSUPPORTED_ON_DEVICE);
        mCarrierConfigCache = CarrierConfigCache.getInstance(context);
        mSatelliteManager = context.getSystemService(SatelliteManager.class);
        mTelephonyManager = context.getSystemService(TelephonyManager.class);
    }

@@ -71,19 +79,29 @@ public class SatelliteSettingsPreferenceCategoryController
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPreferenceCategory = screen.findPreference(getPreferenceKey());
        if (mPreferenceCategory.getPreferenceCount() > 0) {
            for (int i = 0; i < mPreferenceCategory.getPreferenceCount(); i++) {
                if (mPreferenceCategory.getPreference(i).isVisible()) {
                    setAvailabilityStatus(AVAILABLE_UNSEARCHABLE);
                    break;
    }

    @Override
    public int getAvailabilityStatus(int subId) {
        if (!com.android.internal.telephony.flags.Flags.carrierEnabledSatelliteFlag()) {
            return UNSUPPORTED_ON_DEVICE;
        }

        if (mSatelliteManager == null) {
            return UNSUPPORTED_ON_DEVICE;
        }

        final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId);
        final boolean isSatelliteAttachSupported = carrierConfig.getBoolean(
                KEY_SATELLITE_ATTACH_SUPPORTED_BOOL);
        boolean isSatelliteSosSupported = false;
        if (Flags.satelliteOemSettingsUxMigration()) {
            isSatelliteSosSupported = carrierConfig.getBoolean(
                    KEY_SATELLITE_ESOS_SUPPORTED_BOOL);
        }

    @Override
    public int getAvailabilityStatus(int subId) {
        return isAvailable() ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
        return (isSatelliteAttachSupported || isSatelliteSosSupported)
                ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
+6 −33
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.settings.network.telephony;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_DATA;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS;

import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;

import static com.google.common.truth.Truth.assertThat;
@@ -39,6 +38,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.settings.R;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -47,7 +47,7 @@ import org.mockito.junit.MockitoRule;

@RunWith(AndroidJUnit4.class)
public class SatelliteSettingsPreferenceCategoryControllerTest {
    private static final String KEY = "key";
    private static final String KEY = "telephony_satellite_settings_category_key";
    private static final int TEST_SUB_ID = 0;

    @Rule
@@ -66,48 +66,21 @@ public class SatelliteSettingsPreferenceCategoryControllerTest {
    }

    @Test
    @Ignore("b/382664790")
    public void getAvailabilityStatus_default_returnUnsupported() {
        int result = mController.getAvailabilityStatus(TEST_SUB_ID);
        assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void getAvailabilityStatus_hasAvailablePreference_returnAvailableUnsearchable() {
        PreferenceManager preferenceManager = new PreferenceManager(mContext);
        PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext);
        PreferenceCategory preferenceCategory = new PreferenceCategory(mContext);
        preferenceCategory.setKey(KEY);
        preferenceScreen.addPreference(preferenceCategory);
        preferenceCategory.addPreference(new Preference(mContext));
        mController.displayPreference(preferenceScreen);

        int result = mController.getAvailabilityStatus(TEST_SUB_ID);

        assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE);
    }

    @Test
    public void getAvailabilityStatus_noAvailablePreference_returnUnsupported() {
        PreferenceManager preferenceManager = new PreferenceManager(mContext);
        PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext);
        PreferenceCategory preferenceCategory = new PreferenceCategory(mContext);
        preferenceCategory.setKey(KEY);
        preferenceScreen.addPreference(preferenceCategory);
        mController.displayPreference(preferenceScreen);

        int result = mController.getAvailabilityStatus(TEST_SUB_ID);

        assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

    @Test
    @Ignore("b/382664790")
    public void setPreferenceTitle_hasDataService_showConnectivity() {
        PreferenceManager preferenceManager = new PreferenceManager(mContext);
        PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext);
        PreferenceCategory preferenceCategory = new PreferenceCategory(mContext);
        preferenceCategory.setKey(KEY);
        preferenceScreen.addPreference(preferenceCategory);
        preferenceCategory.addPreference(new Preference(mContext));
        preferenceScreen.addPreference(preferenceCategory);
        mController.displayPreference(preferenceScreen);

        mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged(
@@ -117,8 +90,8 @@ public class SatelliteSettingsPreferenceCategoryControllerTest {
                mContext.getString(R.string.title_satellite_setting_connectivity));
    }


    @Test
    @Ignore("b/382664790")
    public void setPreferenceTitle_hasSmsService_showMessaging() {
        PreferenceManager preferenceManager = new PreferenceManager(mContext);
        PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext);