Merge "Added multi-band support"
diff --git a/src/java/com/android/internal/telephony/GsmCdmaPhone.java b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
index 85e69d0..1c56bdf 100644
--- a/src/java/com/android/internal/telephony/GsmCdmaPhone.java
+++ b/src/java/com/android/internal/telephony/GsmCdmaPhone.java
@@ -174,6 +174,9 @@
*/
private SIMRecords mSimRecords;
+ // For non-persisted manual network selection
+ private String mManualNetworkSelectionPlmn = "";
+
//Common
// Instance Variables
@UnsupportedAppUsage
@@ -1899,6 +1902,29 @@
}
}
+ /**
+ * Update non-persisited manual network selection.
+ *
+ * @param nsm contains Plmn info
+ */
+ @Override
+ protected void updateManualNetworkSelection(NetworkSelectMessage nsm) {
+ int subId = getSubId();
+ if (SubscriptionManager.isValidSubscriptionId(subId)) {
+ mManualNetworkSelectionPlmn = nsm.operatorNumeric;
+ } else {
+ //on Phone0 in emergency mode (no SIM), or in some races then clear the cache
+ mManualNetworkSelectionPlmn = "";
+ Rlog.e(LOG_TAG, "Cannot update network selection due to invalid subId "
+ + subId);
+ }
+ }
+
+ @Override
+ public String getManualNetworkSelectionPlmn() {
+ return (mManualNetworkSelectionPlmn == null) ? "" : mManualNetworkSelectionPlmn;
+ }
+
@Override
public String getCdmaPrlVersion() {
return mSST.getPrlVersion();
@@ -3876,6 +3902,7 @@
pw.println(" isMinInfoReady()=" + isMinInfoReady());
}
pw.println(" isCspPlmnEnabled()=" + isCspPlmnEnabled());
+ pw.println(" mManualNetworkSelectionPlmn=" + mManualNetworkSelectionPlmn);
pw.flush();
}
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java
index e8bd32a..e889fa7 100644
--- a/src/java/com/android/internal/telephony/Phone.java
+++ b/src/java/com/android/internal/telephony/Phone.java
@@ -247,7 +247,7 @@
* if we are looking for automatic selection. operatorAlphaLong is the
* corresponding operator name.
*/
- private static class NetworkSelectMessage {
+ protected static class NetworkSelectMessage {
public Message message;
public String operatorNumeric;
public String operatorAlphaLong;
@@ -1386,6 +1386,7 @@
updateSavedNetworkOperator(nsm);
} else {
clearSavedNetworkSelection();
+ updateManualNetworkSelection(nsm);
}
}
@@ -1428,6 +1429,15 @@
}
/**
+ * Update non-perisited manual network selection.
+ *
+ * @param nsm PLMN info of the selected network
+ */
+ protected void updateManualNetworkSelection(NetworkSelectMessage nsm) {
+ Rlog.e(LOG_TAG, "updateManualNetworkSelection() should be overridden");
+ }
+
+ /**
* Used to track the settings upon completion of the network change.
*/
private void handleSetSelectNetwork(AsyncResult ar) {
@@ -1451,7 +1461,8 @@
/**
* Method to retrieve the saved operator from the Shared Preferences
*/
- private OperatorInfo getSavedNetworkSelection() {
+ @NonNull
+ public OperatorInfo getSavedNetworkSelection() {
// open the shared preferences and search with our key.
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
String numeric = sp.getString(NETWORK_SELECTION_KEY + getSubId(), "");
@@ -1910,6 +1921,14 @@
return mVmCount != 0;
}
+ /**
+ * Retrieves manually selected network info.
+ */
+ public String getManualNetworkSelectionPlmn() {
+ return "";
+ }
+
+
private int getCallForwardingIndicatorFromSharedPref() {
int status = IccRecords.CALL_FORWARDING_STATUS_DISABLED;
int subId = getSubId();
diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java
index 1c03eed..6507c7e 100755
--- a/src/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -2540,7 +2540,7 @@
private void notifySpnDisplayUpdate(CarrierDisplayNameData data) {
int subId = mPhone.getSubId();
- // Update SPN_STRINGS_UPDATED_ACTION IFF any value changes
+ // Update ACTION_SERVICE_PROVIDERS_UPDATED IFF any value changes
if (mSubId != subId
|| data.shouldShowPlmn() != mCurShowPlmn
|| data.shouldShowSpn() != mCurShowSpn
@@ -2561,12 +2561,12 @@
mCdnrLogs.log(log);
if (DBG) log("updateSpnDisplay: " + log);
- Intent intent = new Intent(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION);
- intent.putExtra(TelephonyIntents.EXTRA_SHOW_SPN, data.shouldShowSpn());
- intent.putExtra(TelephonyIntents.EXTRA_SPN, data.getSpn());
- intent.putExtra(TelephonyIntents.EXTRA_DATA_SPN, data.getDataSpn());
- intent.putExtra(TelephonyIntents.EXTRA_SHOW_PLMN, data.shouldShowPlmn());
- intent.putExtra(TelephonyIntents.EXTRA_PLMN, data.getPlmn());
+ Intent intent = new Intent(TelephonyManager.ACTION_SERVICE_PROVIDERS_UPDATED);
+ intent.putExtra(TelephonyManager.EXTRA_SHOW_SPN, data.shouldShowSpn());
+ intent.putExtra(TelephonyManager.EXTRA_SPN, data.getSpn());
+ intent.putExtra(TelephonyManager.EXTRA_DATA_SPN, data.getDataSpn());
+ intent.putExtra(TelephonyManager.EXTRA_SHOW_PLMN, data.shouldShowPlmn());
+ intent.putExtra(TelephonyManager.EXTRA_PLMN, data.getPlmn());
SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhone.getPhoneId());
mPhone.getContext().sendStickyBroadcastAsUser(intent, UserHandle.ALL);
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhone.java b/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
index a363003..ab66c23 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhone.java
@@ -1277,7 +1277,7 @@
@Override
public void setCallBarring(String facility, boolean lockState, String password,
- Message onComplete, int serviceClass) {
+ Message onComplete, int serviceClass) {
if (DBG) {
logd("setCallBarring facility=" + facility
+ ", lockState=" + lockState + ", serviceClass = " + serviceClass);
@@ -1295,9 +1295,8 @@
try {
ImsUtInterface ut = mCT.getUtInterface();
- // password is not required with Ut interface
ut.updateCallBarring(getCBTypeFromFacility(facility), action,
- resp, null, serviceClass);
+ resp, null, serviceClass, password);
} catch (ImsException e) {
sendErrorResponse(onComplete, e);
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
index 81f4188..2353bd8 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java
@@ -446,22 +446,22 @@
logd(" " + intent.getAction());
}
Intent intent = intents.get(2);
- assertEquals(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION, intent.getAction());
+ assertEquals(TelephonyManager.ACTION_SERVICE_PROVIDERS_UPDATED, intent.getAction());
Bundle b = intent.getExtras();
// For boolean we need to make sure the key exists first
- assertTrue(b.containsKey(TelephonyIntents.EXTRA_SHOW_SPN));
- assertFalse(b.getBoolean(TelephonyIntents.EXTRA_SHOW_SPN));
+ assertTrue(b.containsKey(TelephonyManager.EXTRA_SHOW_SPN));
+ assertFalse(b.getBoolean(TelephonyManager.EXTRA_SHOW_SPN));
- assertEquals(null, b.getString(TelephonyIntents.EXTRA_SPN));
- assertEquals(null, b.getString(TelephonyIntents.EXTRA_DATA_SPN));
+ assertEquals(null, b.getString(TelephonyManager.EXTRA_SPN));
+ assertEquals(null, b.getString(TelephonyManager.EXTRA_DATA_SPN));
// For boolean we need to make sure the key exists first
- assertTrue(b.containsKey(TelephonyIntents.EXTRA_SHOW_PLMN));
- assertTrue(b.getBoolean(TelephonyIntents.EXTRA_SHOW_PLMN));
+ assertTrue(b.containsKey(TelephonyManager.EXTRA_SHOW_PLMN));
+ assertTrue(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN));
- assertEquals(SimulatedCommands.FAKE_LONG_NAME, b.getString(TelephonyIntents.EXTRA_PLMN));
+ assertEquals(SimulatedCommands.FAKE_LONG_NAME, b.getString(TelephonyManager.EXTRA_PLMN));
ArgumentCaptor<Integer> intArgumentCaptor = ArgumentCaptor.forClass(Integer.class);
verify(mTelephonyManager).setDataNetworkTypeForPhone(anyInt(), intArgumentCaptor.capture());
@@ -2368,9 +2368,9 @@
// Plmn should be shown, and the string is "Emergency call only"
Bundle b = getExtrasFromLastSpnUpdateIntent();
- assertThat(b.getString(TelephonyIntents.EXTRA_PLMN))
+ assertThat(b.getString(TelephonyManager.EXTRA_PLMN))
.isEqualTo(CARRIER_NAME_DISPLAY_EMERGENCY_CALL);
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_PLMN)).isTrue();
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
}
@Test
@@ -2392,9 +2392,9 @@
// Plmn should be shown, and the string is "No service"
Bundle b = getExtrasFromLastSpnUpdateIntent();
- assertThat(b.getString(TelephonyIntents.EXTRA_PLMN))
+ assertThat(b.getString(TelephonyManager.EXTRA_PLMN))
.isEqualTo(CARRIER_NAME_DISPLAY_NO_SERVICE);
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_PLMN)).isTrue();
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
}
@Test
@@ -2415,9 +2415,9 @@
// Plmn should be shown, and the string is "No service"
Bundle b = getExtrasFromLastSpnUpdateIntent();
- assertThat(b.getString(TelephonyIntents.EXTRA_PLMN))
+ assertThat(b.getString(TelephonyManager.EXTRA_PLMN))
.isEqualTo(CARRIER_NAME_DISPLAY_NO_SERVICE);
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_PLMN)).isTrue();
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
}
@Test
@@ -2442,12 +2442,12 @@
// Only spn should be shown
String spn = mBundle.getString(CarrierConfigManager.KEY_CARRIER_NAME_STRING);
Bundle b = getExtrasFromLastSpnUpdateIntent();
- assertThat(b.getString(TelephonyIntents.EXTRA_SPN))
+ assertThat(b.getString(TelephonyManager.EXTRA_SPN))
.isEqualTo(String.format(WIFI_CALLING_VOICE_FORMAT, spn));
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_SPN)).isTrue();
- assertThat(b.getString(TelephonyIntents.EXTRA_DATA_SPN))
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_SPN)).isTrue();
+ assertThat(b.getString(TelephonyManager.EXTRA_DATA_SPN))
.isEqualTo(String.format(WIFI_CALLING_DATA_FORMAT, spn));
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_PLMN)).isFalse();
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isFalse();
}
@Test
@@ -2476,10 +2476,10 @@
String plmn = mBundle.getStringArray(CarrierConfigManager.KEY_PNN_OVERRIDE_STRING_ARRAY)[0];
plmn = plmn.split("\\s*,\\s*")[0];
Bundle b = getExtrasFromLastSpnUpdateIntent();
- assertThat(b.getString(TelephonyIntents.EXTRA_PLMN))
+ assertThat(b.getString(TelephonyManager.EXTRA_PLMN))
.isEqualTo(String.format(WIFI_CALLING_VOICE_FORMAT, plmn));
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_PLMN)).isTrue();
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_SPN)).isFalse();
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_SPN)).isFalse();
}
@Test
@@ -2505,10 +2505,10 @@
String plmn = mBundle.getStringArray(CarrierConfigManager.KEY_PNN_OVERRIDE_STRING_ARRAY)[0];
plmn = plmn.split("\\s*,\\s*")[0];
Bundle b = getExtrasFromLastSpnUpdateIntent();
- assertThat(b.getString(TelephonyIntents.EXTRA_SPN)).isEqualTo(spn);
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_SPN)).isTrue();
- assertThat(b.getString(TelephonyIntents.EXTRA_PLMN)).isEqualTo(plmn);
- assertThat(b.getBoolean(TelephonyIntents.EXTRA_SHOW_PLMN)).isTrue();
+ assertThat(b.getString(TelephonyManager.EXTRA_SPN)).isEqualTo(spn);
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_SPN)).isTrue();
+ assertThat(b.getString(TelephonyManager.EXTRA_PLMN)).isEqualTo(plmn);
+ assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
}
@Test
diff --git a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java
index 345994d..f9c0bfa 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneTest.java
@@ -547,7 +547,7 @@
CommandsInterface.SERVICE_CLASS_NONE);
verify(mImsUtInterface).updateCallBarring(eq(ImsUtImplBase.CALL_BARRING_OUTGOING_INTL),
eq(CommandsInterface.CF_ACTION_ENABLE), messageArgumentCaptor.capture(),
- (String[]) eq(null), eq(CommandsInterface.SERVICE_CLASS_NONE));
+ (String[]) eq(null), eq(CommandsInterface.SERVICE_CLASS_NONE), eq("abc"));
assertEquals(msg, messageArgumentCaptor.getValue().obj);
mImsPhoneUT.setCallBarring(CommandsInterface.CB_FACILITY_BAOICxH, false, "abc", msg,
@@ -555,7 +555,7 @@
verify(mImsUtInterface).updateCallBarring(
eq(ImsUtImplBase.CALL_BARRING_OUTGOING_INTL_EXCL_HOME),
eq(CommandsInterface.CF_ACTION_DISABLE), messageArgumentCaptor.capture(),
- (String[])eq(null), eq(CommandsInterface.SERVICE_CLASS_NONE));
+ (String[]) eq(null), eq(CommandsInterface.SERVICE_CLASS_NONE), eq("abc"));
assertEquals(msg, messageArgumentCaptor.getValue().obj);
}