From 8a41bbf466e78a63828ba03dde754f6879ad7e34 Mon Sep 17 00:00:00 2001 From: Rambo Wang Date: Fri, 8 May 2020 14:50:21 -0700 Subject: LTE+ indicator not shown when attached to CA network NetworkTypeController (or DcTracker in aosp/master) will set lte display type to LTE_CA when current ServiceState fulfills one of the following conditions: - getDataNetworkType return NETWORK_TYPE_LTE_CA - isUsingCarrierAggregation return true NetworkRegistrationInfo#getAccessNetworkTechnology() always returns LTE when data rat is LTE CA. So the first condition will never get fulfilled. isUsingCarrierAggregation flag will only get updated when ServiceStateTracker calls RatRatcheter.ratchet without location change. This makes isUsingCarrierAggregation flag not always reliable to determine if carrier aggregation is on. The CL fix the issue by changing ServiceState#isUsingCarrierAggregation to return true when ServiceState#getCellBandwidths return more than one. The same condition is already used by RatRatcheter when set isUsingCarrierAggregation flag in RatRatcheter#ratchet. Bug: 154060784 Test: atest com.android.internal.telephony.ServiceStateTest Test: atest android.telephony.cts.ServiceStateTest Change-Id: Ie6c07cb58d2a40eeb10e8f0131c98212ba463517 --- telephony/java/android/telephony/ServiceState.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index 07d71d0ad7f9..c6b06b467782 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -1392,15 +1392,16 @@ public class ServiceState implements Parcelable { /** @hide */ public boolean isUsingCarrierAggregation() { + boolean isUsingCa = false; NetworkRegistrationInfo nri = getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (nri != null) { DataSpecificRegistrationInfo dsri = nri.getDataSpecificInfo(); if (dsri != null) { - return dsri.isUsingCarrierAggregation(); + isUsingCa = dsri.isUsingCarrierAggregation(); } } - return false; + return isUsingCa || getCellBandwidths().length > 1; } /** @hide */ -- cgit v1.2.3-59-g8ed1b