Fixed incorrect data network type when device is on IWLAN

When the device is configured as AP-assisted mode, the cellular
network service should reports the cellular data RAT instead of
IWLAN. However, before we clean up all usages of
ServiceState.getDataNetworkType(), we still need to simulate the
old behavior, which is reporting IWLAN as the data network type.
Once all places are cleaned up, we can remove this temporary
solution.

Test: Manual
Bug: 124994459
Change-Id: I37256517af3bcf7330cefe55a33d6f09af7e1353
This commit is contained in:
Jack Yu
2019-02-20 15:48:07 -08:00
parent 4ffd8385a3
commit 2bd032071b

View File

@@ -1569,6 +1569,17 @@ public class ServiceState implements Parcelable {
/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public @TelephonyManager.NetworkType int getDataNetworkType() {
final NetworkRegistrationState iwlanRegState = getNetworkRegistrationState(
NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WLAN);
if (iwlanRegState != null
&& iwlanRegState.getRegState() == NetworkRegistrationState.REG_STATE_HOME) {
// If the device is on IWLAN, return IWLAN as the network type. This is to simulate the
// behavior of legacy mode device. In the future caller should use
// getNetworkRegistrationState() to retrieve the actual data network type on cellular
// or on IWLAN.
return iwlanRegState.getAccessNetworkTechnology();
}
final NetworkRegistrationState regState = getNetworkRegistrationState(
NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WWAN);
if (regState != null) {