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

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

Merge "Avoid fetch all carrierconfig to cache." into main

parents 7c931e5a c142fbe7
Loading
Loading
Loading
Loading
+29 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.telephony.CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANG
import static android.telephony.SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;

import android.annotation.Nullable;
import android.annotation.TestApi;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -154,6 +155,33 @@ public class CarrierConfigCache {
        }
    }

    /**
     * Gets the specific Carrier-Configurations for a particular subscription, which is associated
     * with a specific SIM card. If an invalid subId is used, the returned config will contain
     * default values.
     *
     * @param subId the subscription ID, normally obtained from {@link SubscriptionManager}.
     * @return A {@link PersistableBundle} containing the config for the given subId, or default
     * values for an invalid subId.
     */
    public @Nullable PersistableBundle getSpecificConfigsForSubId(int subId,
            @NonNull String... keys) {
        if (sCarrierConfigManager == null) return null;

        synchronized (sCarrierConfigs) {
            if (sCarrierConfigs.containsKey(subId)) {
                return sCarrierConfigs.get(subId);
            }
            final PersistableBundle config = sCarrierConfigManager.getConfigForSubId(subId, keys);
            if (config == null) {
                Log.e(TAG, "Could not get carrier config, subId:" + subId);
                return null;
            }
            sCarrierConfigs.put(subId, config);
            return config;
        }
    }

    /**
     * Gets the Carrier-Configuration for the default subscription.
     *
+17 −4
Original line number Diff line number Diff line
@@ -69,6 +69,8 @@ public class SatelliteSettingPreferenceController extends
    public SatelliteSettingPreferenceController(@NonNull Context context, @NonNull String key) {
        super(context, key);
        mCarrierConfigCache = CarrierConfigCache.getInstance(mContext);
        mSatelliteManager = mContext.getSystemService(SatelliteManager.class);
        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
    }

    /**
@@ -79,12 +81,15 @@ public class SatelliteSettingPreferenceController extends
    public void initialize(int subId) {
        logd("initialize(), subId=" + subId);
        mSubId = subId;
        mSatelliteManager = mContext.getSystemService(SatelliteManager.class);
        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
        if (mTelephonyManager != null) {
            mTelephonyManager = mTelephonyManager.createForSubscriptionId(subId);
        }
        mCarrierConfigs = mCarrierConfigCache.getConfigForSubId(subId);
        if (mCarrierConfigs == null) {
            return;
        }
        mCarrierConfigs = mCarrierConfigCache.getSpecificConfigsForSubId(
                subId, KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
                KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT);
    }

    @Override
@@ -93,7 +98,15 @@ public class SatelliteSettingPreferenceController extends
            return UNSUPPORTED_ON_DEVICE;
        }

        if (!mCarrierConfigs.getBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL)) {
        if (mCarrierConfigs.isEmpty()) {
            // for search
            mCarrierConfigs = mCarrierConfigCache.getSpecificConfigsForSubId(
                    subId,
                    KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
                    KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT);
        }

        if (!mCarrierConfigs.getBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, false)) {
            return CONDITIONALLY_UNAVAILABLE;
        }

+16 −5
Original line number Diff line number Diff line
@@ -65,6 +65,8 @@ public class SatelliteSettingsPreferenceCategoryController extends
    public SatelliteSettingsPreferenceCategoryController(Context context, String key) {
        super(context, key);
        mCarrierConfigCache = CarrierConfigCache.getInstance(mContext);
        mSatelliteManager = mContext.getSystemService(SatelliteManager.class);
        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
    }

    /**
@@ -75,8 +77,9 @@ public class SatelliteSettingsPreferenceCategoryController extends
    public void init(int subId) {
        Log.d(TAG, "init(), subId=" + subId);
        mSubId = subId;
        mSatelliteManager = mContext.getSystemService(SatelliteManager.class);
        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
        if (mTelephonyManager != null) {
            mTelephonyManager = mTelephonyManager.createForSubscriptionId(subId);
        }
        requestIsSatelliteSupported();
    }

@@ -99,7 +102,14 @@ public class SatelliteSettingsPreferenceCategoryController extends
        if (!com.android.internal.telephony.flags.Flags.carrierEnabledSatelliteFlag()) {
            return UNSUPPORTED_ON_DEVICE;
        }
        final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId);
        PersistableBundle carrierConfig =
                mCarrierConfigCache.getSpecificConfigsForSubId(
                        subId, KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
                        KEY_SATELLITE_ESOS_SUPPORTED_BOOL, KEY_SATELLITE_ATTACH_SUPPORTED_BOOL);

        if (carrierConfig == null) {
            carrierConfig = new PersistableBundle();
        }

        boolean isSatelliteConnectedTypeIsAuto =
                CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC == carrierConfig.getInt(
@@ -114,10 +124,11 @@ public class SatelliteSettingsPreferenceCategoryController extends

        boolean isSatelliteSosSupported = false;
        if (Flags.satelliteOemSettingsUxMigration()) {
            isSatelliteSosSupported = carrierConfig.getBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL);
            isSatelliteSosSupported = carrierConfig.getBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL,
                    false);
        }

        if (!carrierConfig.getBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL)) {
        if (!carrierConfig.getBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, false)) {
            return UNSUPPORTED_ON_DEVICE;
        }

+4 −2
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -87,7 +88,8 @@ public class SatelliteSettingPreferenceControllerTest {
        when(mContext.getSystemService(SatelliteManager.class)).thenReturn(satelliteManager);
        when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
        when(mTelephonyManager.createForSubscriptionId(TEST_SUB_ID)).thenReturn(mTelephonyManager);
        when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mCarrierConfig);
        when(mCarrierConfigCache.getSpecificConfigsForSubId(eq(TEST_SUB_ID), any())).thenReturn(
                mCarrierConfig);
        mController = new SatelliteSettingPreferenceController(mContext, KEY);
    }

+4 −1
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

@@ -76,7 +78,8 @@ public class SatelliteSettingsPreferenceCategoryControllerTest {
        SatelliteManager satelliteManager = new SatelliteManager(mContext);
        CarrierConfigCache.setTestInstance(mContext, mCarrierConfigCache);
        mController = new SatelliteSettingsPreferenceCategoryController(mContext, KEY);
        when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mPersistableBundle);
        when(mCarrierConfigCache.getSpecificConfigsForSubId(eq(TEST_SUB_ID), any())).thenReturn(
                mPersistableBundle);
        mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
                CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC);
        when(mContext.getSystemService(SatelliteManager.class)).thenReturn(satelliteManager);