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

Commit 790fa6e0 authored by Liana Kazanova (xWF)'s avatar Liana Kazanova (xWF)
Browse files

Revert "Make Satellite UI updatable during receiving callback (P..."

Revert submission 31790253

Reason for revert: DroidMonitor: Potential culprit for http://b/397368653 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.

Reverted changes: /q/submissionid:31790253

Change-Id: I851046019821fff0d132efb0b00cbff1e3ecbe72
parent 196a3120
Loading
Loading
Loading
Loading
+11 −108
Original line number Diff line number Diff line
@@ -16,48 +16,35 @@

package com.android.settings.network.telephony;

import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC;
import static android.telephony.CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT;
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_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;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.PreferenceCategory;
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;

/** Preference controller for Satellite functions in mobile network settings. */
public class SatelliteSettingsPreferenceCategoryController
        extends TelephonyBasePreferenceController implements DefaultLifecycleObserver {
    private static final String TAG = "SatelliteSettingsPrefCategoryCon";

    @VisibleForTesting
    final CarrierRoamingNtnModeCallback mCarrierRoamingNtnModeCallback =
            new CarrierRoamingNtnModeCallback(this);

    private CarrierConfigCache mCarrierConfigCache;
    private SatelliteManager mSatelliteManager;
    private TelephonyManager mTelephonyManager;
    private PreferenceScreen mPreferenceScreen;
    private PreferenceCategory mPreferenceCategory;

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

    /**
@@ -68,23 +55,13 @@ public class SatelliteSettingsPreferenceCategoryController
    public void init(int subId) {
        Log.d(TAG, "init(), subId=" + subId);
        mSubId = subId;
        mCarrierConfigCache = CarrierConfigCache.getInstance(mContext);
        mSatelliteManager = mContext.getSystemService(SatelliteManager.class);
        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        if (mPreferenceScreen != null) {
            mPreferenceScreen = screen;
        }
    }

    void displayPreference() {
        if (mPreferenceScreen != null) {
            displayPreference(mPreferenceScreen);
        }
        mPreferenceCategory = screen.findPreference(getPreferenceKey());
        mPreferenceCategory.setTitle(R.string.category_title_satellite_connectivity);
    }

    @Override
@@ -98,89 +75,15 @@ public class SatelliteSettingsPreferenceCategoryController
        }

        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);
        }

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

        if (isSatelliteSosSupported) {
            return AVAILABLE_UNSEARCHABLE;
        }

        if (CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC == carrierConfig.getInt(
                KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
                CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC)) {
            return AVAILABLE_UNSEARCHABLE;
        } else {
            return mCarrierRoamingNtnModeCallback.isSatelliteSmsAvailable()
                    ? AVAILABLE_UNSEARCHABLE
                    : CONDITIONALLY_UNAVAILABLE;
        }
    }

    @Override
    public void onResume(@NonNull LifecycleOwner owner) {
        if (com.android.settings.flags.Flags.satelliteOemSettingsUxMigration()) {
            if (mTelephonyManager != null) {
                mTelephonyManager.registerTelephonyCallback(mContext.getMainExecutor(),
                        mCarrierRoamingNtnModeCallback);
            }
        }
    }

    @Override
    public void onPause(@NonNull LifecycleOwner owner) {
        if (com.android.settings.flags.Flags.satelliteOemSettingsUxMigration()) {
            if (mTelephonyManager != null) {
                mTelephonyManager.unregisterTelephonyCallback(mCarrierRoamingNtnModeCallback);
            }
        }
    }

    @VisibleForTesting
    static class CarrierRoamingNtnModeCallback extends TelephonyCallback implements
            TelephonyCallback.CarrierRoamingNtnListener {
        SatelliteSettingsPreferenceCategoryController mController;
        private boolean mIsSatelliteSmsAvailable = false;

        CarrierRoamingNtnModeCallback(
                SatelliteSettingsPreferenceCategoryController controller) {
            mController = controller;
        }

        boolean isSatelliteSmsAvailable() {
            return mIsSatelliteSmsAvailable;
        }

        @Override
        public void onCarrierRoamingNtnAvailableServicesChanged(@NonNull int[] availableServices) {
            CarrierRoamingNtnListener.super.onCarrierRoamingNtnAvailableServicesChanged(
                    availableServices);
            List<Integer> availableServicesList = Arrays.stream(availableServices).boxed().toList();
            mIsSatelliteSmsAvailable = availableServicesList.contains(SERVICE_TYPE_SMS);
            Log.d(TAG, "isSmsAvailable : " + mIsSatelliteSmsAvailable);
            mController.displayPreference();
        }

        @Override
        public void onCarrierRoamingNtnEligibleStateChanged(boolean eligible) {
            // Do nothing
        }

        @Override
        public void onCarrierRoamingNtnModeChanged(boolean active) {
            // Do nothing
        }

        @Override
        public void onCarrierRoamingNtnSignalStrengthChanged(
                @NonNull NtnSignalStrength ntnSignalStrength) {
            // Do nothing
        }
        return (isSatelliteAttachSupported || isSatelliteSosSupported)
                ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
    }
}
+20 −101
Original line number Diff line number Diff line
@@ -16,38 +16,29 @@

package com.android.settings.network.telephony;

import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC;
import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_MANUAL;
import static android.telephony.CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT;
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_SMS;

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

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

import static junit.framework.Assert.assertEquals;

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.os.Looper;
import android.os.PersistableBundle;
import android.platform.test.annotations.EnableFlags;

import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.internal.telephony.flags.Flags;
import com.android.settings.network.CarrierConfigCache;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

@@ -59,12 +50,8 @@ public class SatelliteSettingsPreferenceCategoryControllerTest {
    @Rule
    public final MockitoRule mMockitoRule = MockitoJUnit.rule();

    @Mock
    private CarrierConfigCache mCarrierConfigCache;

    private Context mContext = null;
    private SatelliteSettingsPreferenceCategoryController mController = null;
    private PersistableBundle mPersistableBundle = new PersistableBundle();

    @Before
    public void setUp() {
@@ -72,95 +59,27 @@ public class SatelliteSettingsPreferenceCategoryControllerTest {
            Looper.prepare();
        }
        mContext = spy(ApplicationProvider.getApplicationContext());
        CarrierConfigCache.setTestInstance(mContext, mCarrierConfigCache);
        mController = new SatelliteSettingsPreferenceCategoryController(mContext, KEY);
        when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mPersistableBundle);

    }

    @Test
    public void getAvailabilityStatus_deviceUnsupported_returnUnsupported() {
    @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_carrierNotSupport_returnUnsupported() {
        mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, false);
        mController.init(TEST_SUB_ID);

        int result = mController.getAvailabilityStatus(TEST_SUB_ID);

        assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

    @Test
    @EnableFlags({
            Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG,
            com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION
    })
    public void getAvailabilityStatus_sosSupported_returnAvailable() {
        mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, true);
        mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true);
        mController.init(TEST_SUB_ID);

        int result = mController.getAvailabilityStatus(TEST_SUB_ID);

        assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE);
    }

    @Test
    @EnableFlags({
            Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG,
            com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION
    })
    public void getAvailabilityStatus_connectTypeAuto_returnAvailable() {
        mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false);
        mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true);
        mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
                CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC);
        mController.init(TEST_SUB_ID);

        int result = mController.getAvailabilityStatus(TEST_SUB_ID);

        assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE);
    }

    @Test
    @EnableFlags({
            Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG,
            com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION
    })
    public void getAvailabilityStatus_connectTypeManualAndAvailable_returnAvailable() {
        mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false);
        mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true);
        mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
                CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC);
        mController.init(TEST_SUB_ID);
        mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged(
                new int[]{SERVICE_TYPE_SMS});

        int result = mController.getAvailabilityStatus(TEST_SUB_ID);

        assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE);
    }

    @Test
    @EnableFlags({
            Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG,
            com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION
    })
    public void getAvailabilityStatus_connectTypeManualAndUnavailable_returnUnavailable() {
        mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false);
        mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true);
        mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
                CARRIER_ROAMING_NTN_CONNECT_MANUAL);
        mController.init(TEST_SUB_ID);
        mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged(
                new int[]{});

        int result = mController.getAvailabilityStatus(TEST_SUB_ID);

        assertThat(result).isEqualTo(CONDITIONALLY_UNAVAILABLE);
    @Ignore("b/382664790")
    public void setPreferenceTitle_hasSmsService_showMessaging() {
        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);

        assertEquals(preferenceCategory.getTitle(), "Satellite connectivity");
    }
}