Merge "Fixed data icon disappeared issue"
diff --git a/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java b/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
index c04bcfb..dd9534d 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
@@ -90,6 +90,8 @@
private TelephonyDisplayInfo mTelephonyDisplayInfo;
private int mSrvccState = -1;
private int mRadioPowerState = RADIO_POWER_UNAVAILABLE;
+ private int mDataConnectionState = TelephonyManager.DATA_UNKNOWN;
+ private int mNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
private List<PhysicalChannelConfig> mPhysicalChannelConfigs;
private TelephonyRegistry.ConfigurationProvider mMockConfigurationProvider;
private CellLocation mCellLocation;
@@ -154,6 +156,7 @@
TelephonyCallback.ActiveDataSubscriptionIdListener,
TelephonyCallback.RadioPowerStateListener,
TelephonyCallback.PreciseDataConnectionStateListener,
+ TelephonyCallback.DataConnectionStateListener,
TelephonyCallback.DisplayInfoListener,
TelephonyCallback.LinkCapacityEstimateChangedListener,
TelephonyCallback.PhysicalChannelConfigListener,
@@ -188,6 +191,12 @@
invocationCount.incrementAndGet();
}
@Override
+ public void onDataConnectionStateChanged(int state, int networkType) {
+ invocationCount.incrementAndGet();
+ mDataConnectionState = state;
+ mNetworkType = networkType;
+ }
+ @Override
public void onDisplayInfoChanged(TelephonyDisplayInfo displayInfo) {
mTelephonyDisplayInfo = displayInfo;
}
@@ -374,6 +383,285 @@
}
/**
+ * Test {@link TelephonyCallback.DataConnectionStateListener}
+ */
+ @Test
+ public void testDataConnectionStateChanged() {
+ final int subId = 1;
+ int[] events = {TelephonyCallback.EVENT_DATA_CONNECTION_STATE_CHANGED};
+ doReturn(mMockSubInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
+ doReturn(0/*slotIndex*/).when(mMockSubInfo).getSimSlotIndex();
+
+ assertEquals(TelephonyManager.DATA_UNKNOWN, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_CONNECTED)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setApnName("default")
+ .setEntryName("default")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+ mTelephonyRegistry.listenWithEventList(subId, mContext.getOpPackageName(),
+ mContext.getAttributionTag(), mTelephonyCallback.callback, events, true);
+
+ assertEquals(TelephonyManager.DATA_CONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_DISCONNECTING)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setApnName("default")
+ .setEntryName("default")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_DISCONNECTING, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_DISCONNECTED)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setApnName("default")
+ .setEntryName("default")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_DISCONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+ }
+
+ /**
+ * Test the scenario that multiple PDNs support default type APN scenario. Make sure it reports
+ * aggregate data connection state.
+ */
+ @Test
+ public void testDataConnectionStateChangedMultipleInternet() {
+ final int subId = 1;
+ int[] events = {TelephonyCallback.EVENT_DATA_CONNECTION_STATE_CHANGED};
+ doReturn(mMockSubInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
+ doReturn(0/*slotIndex*/).when(mMockSubInfo).getSimSlotIndex();
+
+ assertEquals(TelephonyManager.DATA_UNKNOWN, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, mNetworkType);
+
+ mTelephonyRegistry.listenWithEventList(subId, mContext.getOpPackageName(),
+ mContext.getAttributionTag(), mTelephonyCallback.callback, events, true);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_CONNECTED)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setApnName("default")
+ .setEntryName("default")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_CONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_CONNECTING)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
+ .setApnName("default+mms")
+ .setEntryName("default+mms")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_CONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_DISCONNECTING)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
+ .setApnName("default+mms")
+ .setEntryName("default+mms")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+ assertEquals(TelephonyManager.DATA_CONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_DISCONNECTED)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
+ .setApnName("default+mms")
+ .setEntryName("default+mms")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+ assertEquals(TelephonyManager.DATA_CONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_CONNECTING)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
+ .setApnName("default+mms")
+ .setEntryName("default+mms")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_CONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_CONNECTED)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
+ .setApnName("default+mms")
+ .setEntryName("default+mms")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_CONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_DISCONNECTING)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setApnName("default")
+ .setEntryName("default")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_CONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_DISCONNECTING)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
+ .setApnName("default+mms")
+ .setEntryName("default+mms")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_DISCONNECTING, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_DISCONNECTED)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT)
+ .setApnName("default")
+ .setEntryName("default")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_DISCONNECTING, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+
+ mTelephonyRegistry.notifyDataConnectionForSubscriber(
+ /*phoneId*/ 0, subId,
+ new PreciseDataConnectionState.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setId(1)
+ .setState(TelephonyManager.DATA_DISCONNECTED)
+ .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE)
+ .setApnSetting(new ApnSetting.Builder()
+ .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_MMS)
+ .setApnName("default+mms")
+ .setEntryName("default+mms")
+ .build())
+ .setLinkProperties(new LinkProperties())
+ .setFailCause(0)
+ .build());
+
+ assertEquals(TelephonyManager.DATA_DISCONNECTED, mDataConnectionState);
+ assertEquals(TelephonyManager.NETWORK_TYPE_LTE, mNetworkType);
+ }
+
+ /**
* Test multi sim config change.
*/
@Test