Merge "Add PhoneStateListener#onPreferredDataSubIdChanged"
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 8c08420..5414e34 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -2304,7 +2304,7 @@
if (mPreferredDataSubId != subId) {
mPreferredDataSubId = subId;
PhoneSwitcher.getInstance().setPreferredData(subId);
- //TODO: notifyPreferredDataSubIdChanged();
+ notifyPreferredDataSubIdChanged();
}
return 0;
@@ -2313,6 +2313,17 @@
}
}
+ private void notifyPreferredDataSubIdChanged() {
+ ITelephonyRegistry tr = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService(
+ "telephony.registry"));
+ try {
+ if (DBG) logd("notifyPreferredDataSubIdChanged:");
+ tr.notifyPreferredDataSubIdChanged(mPreferredDataSubId);
+ } catch (RemoteException ex) {
+ // Should never happen because its always available.
+ }
+ }
+
@Override
public List<SubscriptionInfo> getOpportunisticSubscriptions(int slotId, String callingPackage) {
return getSubscriptionInfoListFromCacheHelper(
diff --git a/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java b/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
index 42a8ad1..0809224 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/TelephonyRegistryTest.java
@@ -16,6 +16,7 @@
package com.android.internal.telephony;
import static android.telephony.PhoneStateListener.LISTEN_PHONE_CAPABILITY_CHANGE;
+import static android.telephony.PhoneStateListener.LISTEN_PREFERRED_DATA_SUBID_CHANGE;
import static org.junit.Assert.assertEquals;
@@ -38,6 +39,7 @@
private PhoneStateListener mPhoneStateListener;
private TelephonyRegistry mTelephonyRegistry;
private PhoneCapability mPhoneCapability;
+ private int mPreferredSubId;
public class PhoneStateListenerWrapper extends PhoneStateListener {
@Override
@@ -45,6 +47,11 @@
mPhoneCapability = capability;
setReady(true);
}
+ @Override
+ public void onPreferredDataSubIdChanged(int preferredSubId) {
+ mPreferredSubId = preferredSubId;
+ setReady(true);
+ }
}
private void addTelephonyRegistryService() {
@@ -97,4 +104,25 @@
waitUntilReady();
assertEquals(phoneCapability, mPhoneCapability);
}
+
+
+ @Test @SmallTest
+ public void testPreferredDataSubChanged() {
+ // mTelephonyRegistry.listen with notifyNow = true should trigger callback immediately.
+ setReady(false);
+ int preferredSubId = 0;
+ mTelephonyRegistry.notifyPreferredDataSubIdChanged(preferredSubId);
+ mTelephonyRegistry.listen(mContext.getOpPackageName(),
+ mPhoneStateListener.callback,
+ LISTEN_PREFERRED_DATA_SUBID_CHANGE, true);
+ waitUntilReady();
+ assertEquals(preferredSubId, mPreferredSubId);
+
+ // notifyPhoneCapabilityChanged with a new capability. Callback should be triggered.
+ setReady(false);
+ mPreferredSubId = 1;
+ mTelephonyRegistry.notifyPreferredDataSubIdChanged(preferredSubId);
+ waitUntilReady();
+ assertEquals(preferredSubId, mPreferredSubId);
+ }
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/mocks/TelephonyRegistryMock.java b/tests/telephonytests/src/com/android/internal/telephony/mocks/TelephonyRegistryMock.java
index 58527d3..8a65fe9 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/mocks/TelephonyRegistryMock.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/mocks/TelephonyRegistryMock.java
@@ -417,4 +417,9 @@
public void notifyRadioPowerStateChanged(int state) {
throw new RuntimeException("Not implemented");
}
+
+ @Override
+ public void notifyPreferredDataSubIdChanged(int subId) {
+ throw new RuntimeException("Not implemented");
+ }
}