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

Commit eee90d66 authored by Jack Yu's avatar Jack Yu
Browse files

Fixed that WiFi calling icon not shown

The logic of isAnyApnOnIwlan only checks "current transport", while
in the new data stack, "current transport" concept is abandoned.
Only "preferred transport" is maintained.

Used "preferred transport" to determine if any APN is on IWLAN
when new data stack is running.

Also migrated the unit tests to use Google common truth.

Fix: 217981412
Test: Manual
Change-Id: I973888430d382cafc8c4396b62c06235eaecbd49
parent 5928779c
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -710,10 +710,16 @@ public class AccessNetworksManager extends Handler {
     */
    public boolean isAnyApnOnIwlan() {
        for (int apnType : AccessNetworksManager.SUPPORTED_APN_TYPES) {
            if (mPhone.isUsingNewDataStack()) {
                if (getPreferredTransport(apnType) == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) {
                    return true;
                }
            } else {
                if (getCurrentTransport(apnType) == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) {
                    return true;
                }
            }
        }
        return false;
    }

+4 −0
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ import com.android.internal.telephony.data.DataConfigManager;
import com.android.internal.telephony.data.DataEnabledOverride;
import com.android.internal.telephony.data.DataNetworkController;
import com.android.internal.telephony.data.DataProfileManager;
import com.android.internal.telephony.data.DataRetryManager;
import com.android.internal.telephony.data.DataServiceManager;
import com.android.internal.telephony.data.DataSettingsManager;
import com.android.internal.telephony.data.LinkBandwidthEstimator;
@@ -211,6 +212,8 @@ public abstract class TelephonyTest {
    @Mock
    protected DataNetworkController mDataNetworkController;
    @Mock
    protected DataRetryManager mDataRetryManager;
    @Mock
    protected DataSettingsManager mDataSettingsManager;
    @Mock
    protected DataConfigManager mDataConfigManager;
@@ -626,6 +629,7 @@ public abstract class TelephonyTest {
        doReturn(mCellLocation).when(mCellIdentity).asCellLocation();
        doReturn(mDataConfigManager).when(mDataNetworkController).getDataConfigManager();
        doReturn(mDataProfileManager).when(mDataNetworkController).getDataProfileManager();
        doReturn(mDataRetryManager).when(mDataNetworkController).getDataRetryManager();

        //mUiccController
        doReturn(mUiccCardApplication3gpp).when(mUiccController).getUiccCardApplication(anyInt(),
+17 −14
Original line number Diff line number Diff line
@@ -16,9 +16,8 @@

package com.android.internal.telephony.data;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
@@ -88,6 +87,8 @@ public class AccessNetworksManagerTest extends TelephonyTest {
    public void setUp() throws Exception {
        super.setUp(getClass().getSimpleName());

        doReturn(true).when(mPhone).isUsingNewDataStack();

        addQnsService();
        mContextFixture.putResource(
                com.android.internal.R.string.config_qualified_networks_service_package,
@@ -106,26 +107,28 @@ public class AccessNetworksManagerTest extends TelephonyTest {
    @Test
    public void testBindService() {
        if (mAccessNetworksManager.isInLegacyMode()) return;
        assertNotNull(mQnsCallback);
        assertThat(mQnsCallback).isNotNull();
    }

    @Test
    public void testQualifiedNetworkTypesChanged() throws Exception {
        if (mAccessNetworksManager.isInLegacyMode()) return;
        assertNotNull(mQnsCallback);
        assertEquals(AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
                mAccessNetworksManager.getPreferredTransport(ApnSetting.TYPE_IMS));
        assertEquals(AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
                mAccessNetworksManager.getPreferredTransport(ApnSetting.TYPE_MMS));
        assertFalse(mAccessNetworksManager.isAnyApnOnIwlan());
        assertThat(mQnsCallback).isNotNull();
        assertThat(mAccessNetworksManager.isAnyApnOnIwlan()).isFalse();
        assertThat(mAccessNetworksManager.getPreferredTransport(ApnSetting.TYPE_IMS))
                .isEqualTo(AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        assertThat(mAccessNetworksManager.getPreferredTransport(ApnSetting.TYPE_MMS))
                .isEqualTo(AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        assertThat(mAccessNetworksManager.isAnyApnOnIwlan()).isFalse();

        mQnsCallback.onQualifiedNetworkTypesChanged(ApnSetting.TYPE_IMS | ApnSetting.TYPE_MMS,
                new int[]{AccessNetworkConstants.AccessNetworkType.IWLAN});
        processAllMessages();

        assertEquals(AccessNetworkConstants.TRANSPORT_TYPE_WLAN,
                mAccessNetworksManager.getPreferredTransport(ApnSetting.TYPE_IMS));
        assertEquals(AccessNetworkConstants.TRANSPORT_TYPE_WLAN,
                mAccessNetworksManager.getPreferredTransport(ApnSetting.TYPE_MMS));
        assertThat(mAccessNetworksManager.getPreferredTransport(ApnSetting.TYPE_IMS))
                .isEqualTo(AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
        assertThat(mAccessNetworksManager.getPreferredTransport(ApnSetting.TYPE_MMS))
                .isEqualTo(AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
        assertThat(mAccessNetworksManager.isAnyApnOnIwlan()).isTrue();
    }
}