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

Commit 1df05344 authored by Weng Su's avatar Weng Su
Browse files

Allow carrier Wi-Fi network to inflate signal strength (QS)

- Refer to CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL to inflate signal strength

Bug: 425739931
Flag: com.android.systemui.status_bar_inflate_carrier_merged
Test: Manual testing (see screenshot in b/425739931#comment9)
  atest InternetDetailsContentControllerTest
Change-Id: Ic3bd4968c341c3e7dd2a91c953b2c842e99b63d4
parent f3af41ce
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ import com.android.systemui.qs.flags.QsWifiConfig;
import com.android.systemui.res.R;
import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.statusbar.connectivity.AccessPointController;
import com.android.systemui.statusbar.pipeline.StatusBarInflateCarrierMerged;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.toast.SystemUIToast;
@@ -592,6 +593,11 @@ public class InternetDetailsContentController implements AccessPointController.A
        if (isCarrierNetworkActive) {
            level = getCarrierNetworkLevel();
            numLevels = WifiEntry.WIFI_LEVEL_MAX + 1;
            if (StatusBarInflateCarrierMerged.isEnabled()
                    && mCarrierConfigTracker.getInflateSignalStrengthBool(subId)) {
                level += 1;
                numLevels += 1;
            }
        } else if (mSubscriptionManager != null && shouldInflateSignalStrength(subId)) {
            level += 1;
            numLevels += 1;
+25 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ public class CarrierConfigTracker
    private final SparseBooleanArray mNoCallingConfigs = new SparseBooleanArray();
    private final SparseBooleanArray mCarrierProvisionsWifiMergedNetworks =
            new SparseBooleanArray();
    private final SparseBooleanArray mInflateSignalStrength = new SparseBooleanArray();
    private final SparseBooleanArray mShowOperatorNameConfigs = new SparseBooleanArray();
    private final CarrierConfigManager mCarrierConfigManager;
    private final Set<CarrierConfigChangedListener> mListeners = new ArraySet<>();
@@ -62,6 +63,8 @@ public class CarrierConfigTracker
            new ArraySet<>();
    private boolean mDefaultCarrierProvisionsWifiMergedNetworksLoaded;
    private boolean mDefaultCarrierProvisionsWifiMergedNetworks;
    private boolean mDefaultInflateSignalStrengthLoaded;
    private boolean mDefaultInflateSignalStrength;
    private boolean mDefaultShowOperatorNameConfigLoaded;
    private boolean mDefaultShowOperatorNameConfig;
    private boolean mDefaultAlwaysShowPrimarySignalBarInOpportunisticNetworkConfigLoaded;
@@ -116,6 +119,10 @@ public class CarrierConfigTracker
            mCarrierProvisionsWifiMergedNetworks.put(subId, config.getBoolean(
                    CarrierConfigManager.KEY_CARRIER_PROVISIONS_WIFI_MERGED_NETWORKS_BOOL));
        }
        synchronized (mInflateSignalStrength) {
            mInflateSignalStrength.put(subId, config.getBoolean(
                    CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL));
        }
        synchronized (mShowOperatorNameConfigs) {
            mShowOperatorNameConfigs.put(subId, config.getBoolean(
                    CarrierConfigManager.KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL));
@@ -159,6 +166,24 @@ public class CarrierConfigTracker
        return mDefaultCarrierProvisionsWifiMergedNetworks;
    }

    /**
     * Returns the KEY_INFLATE_SIGNAL_STRENGTH_BOOL value for the given subId.
     */
    public boolean getInflateSignalStrengthBool(int subId) {
        synchronized (mInflateSignalStrength) {
            if (mInflateSignalStrength.indexOfKey(subId) >= 0) {
                return mInflateSignalStrength.get(subId);
            }
        }
        if (!mDefaultInflateSignalStrengthLoaded) {
            mDefaultInflateSignalStrength =
                    CarrierConfigManager.getDefaultConfig().getBoolean(
                            CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL);
            mDefaultInflateSignalStrengthLoaded = true;
        }
        return mDefaultInflateSignalStrength;
    }

    /**
     * Returns the KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL value for the default config
     */
+36 −0
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ import android.net.NetworkCapabilities;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Handler;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
@@ -75,6 +77,7 @@ import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.connectivity.AccessPointController;
import com.android.systemui.statusbar.pipeline.StatusBarInflateCarrierMerged;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.toast.SystemUIToast;
@@ -1024,6 +1027,7 @@ public class InternetDetailsContentControllerTest extends SysuiTestCase {
    }

    @Test
    @DisableFlags(StatusBarInflateCarrierMerged.FLAG_NAME)
    public void getSignalStrengthDrawableWithLevel_carrierNetworkIsActive_useCarrierNetworkLevel() {
        // Fake mobile data level as SIGNAL_STRENGTH_POOR(1)
        when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_POOR);
@@ -1037,6 +1041,38 @@ public class InternetDetailsContentControllerTest extends SysuiTestCase {
                eq(WIFI_LEVEL_MAX + 1), anyInt(), anyBoolean());
    }

    @Test
    @EnableFlags(StatusBarInflateCarrierMerged.FLAG_NAME)
    public void getSignalStrengthDrawableWithLevel_carrierNetworkIsActive_useCarrierLevelInflate() {
        when(mCarrierConfigTracker.getInflateSignalStrengthBool(SUB_ID)).thenReturn(true);
        // Fake mobile data level as SIGNAL_STRENGTH_POOR(1)
        when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_POOR);
        // Fake carrier network level as WIFI_LEVEL_MAX(4)
        when(mInternetDetailsContentController.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX);

        InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
        spyController.getSignalStrengthDrawableWithLevel(true /* isCarrierNetworkActive */, SUB_ID);

        verify(spyController).getSignalStrengthIcon(eq(SUB_ID), any(), eq(WIFI_LEVEL_MAX + 1),
                eq(WIFI_LEVEL_MAX + 2), anyInt(), anyBoolean());
    }

    @Test
    @DisableFlags(StatusBarInflateCarrierMerged.FLAG_NAME)
    public void getSignalStrengthDrawableWithLevel_carrierNetworkIsActive_useCarrierLevel() {
        when(mCarrierConfigTracker.getInflateSignalStrengthBool(SUB_ID)).thenReturn(true);
        // Fake mobile data level as SIGNAL_STRENGTH_POOR(1)
        when(mSignalStrength.getLevel()).thenReturn(SIGNAL_STRENGTH_POOR);
        // Fake carrier network level as WIFI_LEVEL_MAX(4)
        when(mInternetDetailsContentController.getCarrierNetworkLevel()).thenReturn(WIFI_LEVEL_MAX);

        InternetDetailsContentController spyController = spy(mInternetDetailsContentController);
        spyController.getSignalStrengthDrawableWithLevel(true /* isCarrierNetworkActive */, SUB_ID);

        verify(spyController).getSignalStrengthIcon(eq(SUB_ID), any(), eq(WIFI_LEVEL_MAX),
                eq(WIFI_LEVEL_MAX + 1), anyInt(), anyBoolean());
    }

    @Test
    public void getCarrierNetworkLevel_mergedCarrierEntryIsNull_returnMinLevel() {
        when(mAccessPointController.getMergedCarrierEntry()).thenReturn(null);