merge in lmp-mr1-nova-release history after reset to lmp-mr1-dev
diff --git a/src/java/com/android/internal/telephony/MccTable.java b/src/java/com/android/internal/telephony/MccTable.java
index 95f9943..91355ae 100644
--- a/src/java/com/android/internal/telephony/MccTable.java
+++ b/src/java/com/android/internal/telephony/MccTable.java
@@ -24,6 +24,7 @@
import android.os.Build;
import android.os.RemoteException;
import android.os.SystemProperties;
+import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Slog;
@@ -223,6 +224,29 @@
}
}
+ // Bug 19232829: It is possible to get through provisioning without setting up a persistent
+ // locale value. We don't modify the locale if the device has completed "provisioning" because
+ // we don't want to change the locale if the user inserts a new SIM or a new version of Android
+ // is better at recognizing MCC values than an older version.
+ private static boolean canUpdateLocale(Context context) {
+ return !(userHasPersistedLocale() || isDeviceProvisioned(context));
+ }
+
+ private static boolean userHasPersistedLocale() {
+ String persistSysLanguage = SystemProperties.get("persist.sys.language", "");
+ String persistSysCountry = SystemProperties.get("persist.sys.country", "");
+ return !(persistSysLanguage.isEmpty() && persistSysCountry.isEmpty());
+ }
+
+ private static boolean isDeviceProvisioned(Context context) {
+ try {
+ return Settings.Global.getInt(
+ context.getContentResolver(), Settings.Global.DEVICE_PROVISIONED) != 0;
+ } catch (Settings.SettingNotFoundException e) {
+ return false;
+ }
+ }
+
/**
* Return Locale for the language and country or null if no good match.
*
@@ -243,22 +267,12 @@
}
// Check whether a developer is trying to test an arbitrary MCC.
- boolean debuggingMccOverride = false;
- if (Build.IS_DEBUGGABLE) {
- String overrideMcc = SystemProperties.get("persist.sys.override_mcc", "");
- if (!overrideMcc.isEmpty()) {
- debuggingMccOverride = true;
- }
- }
+ boolean debuggingMccOverride = isDebuggingMccOverride();
// If this is a regular user and they already have a persisted locale, we're done.
- if (!debuggingMccOverride) {
- String persistSysLanguage = SystemProperties.get("persist.sys.language", "");
- String persistSysCountry = SystemProperties.get("persist.sys.country", "");
- if (!(persistSysLanguage.isEmpty() && persistSysCountry.isEmpty())) {
- Slog.d(LOG_TAG, "getLocaleForLanguageCountry: skipping already persisted");
- return null;
- }
+ if (!(debuggingMccOverride || canUpdateLocale(context))) {
+ Slog.d(LOG_TAG, "getLocaleForLanguageCountry: not permitted to update locale");
+ return null;
}
// Find the best match we actually have a localization for.
@@ -315,6 +329,16 @@
return null;
}
+ private static boolean isDebuggingMccOverride() {
+ if (Build.IS_DEBUGGABLE) {
+ String overrideMcc = SystemProperties.get("persist.sys.override_mcc", "");
+ if (!overrideMcc.isEmpty()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* Utility code to set the system locale if it's not set already
* @param context Context to act on.
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java
index 32966ae..3d2d304 100644
--- a/src/java/com/android/internal/telephony/Phone.java
+++ b/src/java/com/android/internal/telephony/Phone.java
@@ -109,7 +109,6 @@
static final String REASON_CONNECTED = "connected";
static final String REASON_SINGLE_PDN_ARBITRATION = "SinglePdnArbitration";
static final String REASON_DATA_SPECIFIC_DISABLED = "specificDisabled";
- static final String REASON_SIM_NOT_READY = "simNotReady";
// Used for band mode selection methods
static final int BM_UNSPECIFIED = 0; // selected by baseband automatically
diff --git a/src/java/com/android/internal/telephony/PhoneBase.java b/src/java/com/android/internal/telephony/PhoneBase.java
index ce69689..e1444ee 100644
--- a/src/java/com/android/internal/telephony/PhoneBase.java
+++ b/src/java/com/android/internal/telephony/PhoneBase.java
@@ -425,7 +425,13 @@
mUiccController = UiccController.getInstance();
mUiccController.registerForIccChanged(this, EVENT_ICC_CHANGED, null);
- // Monitor IMS service
+ // Monitor IMS service - but first poll to see if already up (could miss
+ // intent)
+ ImsManager imsManager = ImsManager.getInstance(mContext, getPhoneId());
+ if (imsManager != null && imsManager.isServiceAvailable()) {
+ mImsServiceReady = true;
+ updateImsPhone();
+ }
IntentFilter filter = new IntentFilter();
filter.addAction(ImsManager.ACTION_IMS_SERVICE_UP);
filter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN);
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 562f22b..57172bb 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -590,8 +590,6 @@
}
String nameToSet;
- String CarrierName = mTelephonyManager.getSimOperatorNumericForSubscription(subIds[0]);
- if (DBG) logdl("[addSubInfoRecord] CarrierName = " + CarrierName);
String simCarrierName = mTelephonyManager.getSimOperatorNameForSubscription(subIds[0]);
if (!TextUtils.isEmpty(simCarrierName)) {
@@ -618,9 +616,7 @@
value.put(SubscriptionManager.COLOR, color);
value.put(SubscriptionManager.SIM_SLOT_INDEX, slotId);
value.put(SubscriptionManager.DISPLAY_NAME, nameToSet);
- value.put(SubscriptionManager.CARRIER_NAME,
- !TextUtils.isEmpty(simCarrierName) ? simCarrierName :
- mContext.getString(com.android.internal.R.string.unknownName));
+ value.put(SubscriptionManager.CARRIER_NAME, "");
Uri uri = resolver.insert(SubscriptionManager.CONTENT_URI, value);
if (DBG) logdl("[addSubInfoRecord] New record created: " + uri);
} else {
@@ -637,10 +633,6 @@
value.put(SubscriptionManager.DISPLAY_NAME, nameToSet);
}
- if (!TextUtils.isEmpty(simCarrierName)) {
- value.put(SubscriptionManager.CARRIER_NAME, simCarrierName);
- }
-
if (value.size() > 0) {
resolver.update(SubscriptionManager.CONTENT_URI, value,
SubscriptionManager.UNIQUE_KEY_SUBSCRIPTION_ID +
@@ -736,9 +728,12 @@
SubscriptionManager.CONTENT_URI.getAuthority(), 0) == null ||
subIds == null ||
!SubscriptionManager.isValidSubscriptionId(subIds[0])) {
- // No place to store this info, we are done.
+ // No place to store this info. Notify registrants of the change anyway as they
+ // might retrieve the SPN/PLMN text from the SST sticky broadcast.
// TODO: This can be removed once SubscriptionController is not running on devices
// that don't need it, such as TVs.
+ if (DBG) logd("[setPlmnSpn] No valid subscription to store info");
+ notifySubscriptionInfoChanged();
return false;
}
String carrierText = "";
diff --git a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
index 7adf209..736cf7c 100644
--- a/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
+++ b/src/java/com/android/internal/telephony/SubscriptionInfoUpdater.java
@@ -328,8 +328,6 @@
SubscriptionInfo subInfo = mSubscriptionManager.getActiveSubscriptionInfo(subId);
String nameToSet;
- String CarrierName = tm.getSimOperatorNumericForSubscription(subId);
- logd("CarrierName = " + CarrierName);
String simCarrierName = tm.getSimOperatorNameForSubscription(subId);
ContentValues name = new ContentValues(1);
@@ -342,14 +340,10 @@
}
name.put(SubscriptionManager.DISPLAY_NAME, nameToSet);
logd("sim name = " + nameToSet);
+ contentResolver.update(SubscriptionManager.CONTENT_URI, name,
+ SubscriptionManager.UNIQUE_KEY_SUBSCRIPTION_ID
+ + "=" + Long.toString(subId), null);
}
- name.put(SubscriptionManager.CARRIER_NAME,
- !TextUtils.isEmpty(simCarrierName) ? simCarrierName :
- mContext.getString(com.android.internal.R.string.unknownName));
- contentResolver.update(SubscriptionManager.CONTENT_URI, name,
- SubscriptionManager.UNIQUE_KEY_SUBSCRIPTION_ID
- + "=" + Long.toString(subId), null);
- logd("carrier name = " + simCarrierName);
/* Update preferred network type and network selection mode on SIM change.
* Storing last subId in SharedPreference for now to detect SIM change. */
diff --git a/src/java/com/android/internal/telephony/cat/CatService.java b/src/java/com/android/internal/telephony/cat/CatService.java
index ad8b4e2..1ffe08c 100644
--- a/src/java/com/android/internal/telephony/cat/CatService.java
+++ b/src/java/com/android/internal/telephony/cat/CatService.java
@@ -362,14 +362,6 @@
private void handleCommand(CommandParams cmdParams, boolean isProactiveCmd) {
CatLog.d(this, cmdParams.getCommandType().name());
- // Log all proactive commands.
- if (isProactiveCmd) {
- if (mUiccController != null) {
- mUiccController.addCardLog("ProactiveCommand mSlotId=" + mSlotId +
- " cmdParams=" + cmdParams);
- }
- }
-
CharSequence message;
CatCmdMessage cmdMsg = new CatCmdMessage(cmdParams);
switch (cmdParams.getCommandType()) {
diff --git a/src/java/com/android/internal/telephony/cat/CommandParams.java b/src/java/com/android/internal/telephony/cat/CommandParams.java
index 93520f7..2f9d0fd 100644
--- a/src/java/com/android/internal/telephony/cat/CommandParams.java
+++ b/src/java/com/android/internal/telephony/cat/CommandParams.java
@@ -57,11 +57,6 @@
}
return false;
}
-
- @Override
- public String toString() {
- return "TextMessage=" + mTextMsg + " " + super.toString();
- }
}
class LaunchBrowserParams extends CommandParams {
@@ -85,11 +80,6 @@
}
return false;
}
-
- @Override
- public String toString() {
- return "TextMessage=" + mConfirmMsg + " " + super.toString();
- }
}
class SetEventListParams extends CommandParams {
diff --git a/src/java/com/android/internal/telephony/cat/TextMessage.java b/src/java/com/android/internal/telephony/cat/TextMessage.java
index 926c927..515f6c5 100644
--- a/src/java/com/android/internal/telephony/cat/TextMessage.java
+++ b/src/java/com/android/internal/telephony/cat/TextMessage.java
@@ -72,12 +72,4 @@
return new TextMessage[size];
}
};
-
- @Override
- public String toString() {
- return "title=" + title + " text=" + text + " icon=" + icon +
- " iconSelfExplanatory=" + iconSelfExplanatory + " isHighPriority=" +
- isHighPriority + " responseNeeded=" + responseNeeded + " userClear=" +
- userClear + " duration=" + duration;
- }
-}
+}
\ No newline at end of file
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
index 5a456d0..60bc558 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
@@ -1528,14 +1528,6 @@
setupDataOnConnectableApns(Phone.REASON_SIM_LOADED);
}
- private void onSimNotReady() {
- if (DBG) log("onSimNotReady");
-
- cleanUpAllConnections(true, Phone.REASON_SIM_NOT_READY);
- mAllApnSettings = null;
- mAutoAttachOnCreationConfig = false;
- }
-
@Override
protected void onSetDependencyMet(String apnType, boolean met) {
// don't allow users to tweak hipri to work around default dependency not met
@@ -2779,8 +2771,6 @@
mIccRecords.set(newIccRecords);
newIccRecords.registerForRecordsLoaded(
this, DctConstants.EVENT_RECORDS_LOADED, null);
- } else {
- onSimNotReady();
}
}
}
diff --git a/src/java/com/android/internal/telephony/uicc/UiccCard.java b/src/java/com/android/internal/telephony/uicc/UiccCard.java
index f77a16c..e2b6689 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccCard.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccCard.java
@@ -458,25 +458,19 @@
/**
* Resets the application with the input AID. Returns true if any changes were made.
- *
- * A null aid implies a card level reset - all applications must be reset.
*/
public boolean resetAppWithAid(String aid) {
synchronized (mLock) {
- boolean changed = false;
for (int i = 0; i < mUiccApplications.length; i++) {
- if (mUiccApplications[i] != null &&
- (aid == null || aid.equals(mUiccApplications[i].getAid()))) {
+ if (mUiccApplications[i] != null && aid.equals(mUiccApplications[i].getAid())) {
// Delete removed applications
mUiccApplications[i].dispose();
mUiccApplications[i] = null;
- changed = true;
+ return true;
}
}
- return changed;
+ return false;
}
- // TODO: For a card level notification, we should delete the CarrierPrivilegeRules and the
- // CAT service.
}
/**
diff --git a/src/java/com/android/internal/telephony/uicc/UiccController.java b/src/java/com/android/internal/telephony/uicc/UiccController.java
index 4f3b58b..80893f2 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccController.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccController.java
@@ -25,7 +25,6 @@
import android.os.SystemProperties;
import android.telephony.TelephonyManager;
import android.telephony.Rlog;
-import android.text.format.Time;
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.PhoneConstants;
@@ -33,7 +32,6 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.LinkedList;
/**
* This class is responsible for keeping all knowledge about
@@ -100,10 +98,6 @@
protected RegistrantList mIccChangedRegistrants = new RegistrantList();
- // Logging for dumpsys. Useful in cases when the cards run into errors.
- private static final int MAX_PROACTIVE_COMMANDS_TO_LOG = 20;
- private LinkedList<String> mCardLogs = new LinkedList<String>();
-
public static UiccController make(Context c, CommandsInterface[] ci) {
synchronized (mLock) {
if (mInstance != null) {
@@ -318,13 +312,12 @@
return;
}
- if (resp.refreshResult != IccRefreshResponse.REFRESH_RESULT_RESET) {
- Rlog.d(LOG_TAG, "Ignoring non reset refresh: " + resp);
- return;
+ if (resp.refreshResult != IccRefreshResponse.REFRESH_RESULT_RESET ||
+ resp.aid == null) {
+ Rlog.d(LOG_TAG, "Ignoring reset: " + resp);
+ return;
}
- Rlog.d(LOG_TAG, "Handling refresh reset: " + resp);
-
boolean changed = mUiccCards[index].resetAppWithAid(resp.aid);
if (changed) {
boolean requirePowerOffOnSimRefreshReset = mContext.getResources().getBoolean(
@@ -336,6 +329,8 @@
}
mIccChangedRegistrants.notifyRegistrants(new AsyncResult(null, index, null));
}
+ // TODO: For a card level notification, we should delete the CarrierPrivilegeRules and the
+ // CAT service.
}
private boolean isValidCardIndex(int index) {
@@ -346,15 +341,6 @@
Rlog.d(LOG_TAG, string);
}
- // TODO: This is hacky. We need a better way of saving the logs.
- public void addCardLog(String data) {
- Time t = new Time();
- t.setToNow();
- mCardLogs.addLast(t.format("%m-%d %H:%M:%S") + " " + data);
- if (mCardLogs.size() > MAX_PROACTIVE_COMMANDS_TO_LOG) {
- mCardLogs.removeFirst();
- }
- }
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("UiccController: " + this);
@@ -376,9 +362,5 @@
mUiccCards[i].dump(fd, pw, args);
}
}
- pw.println("mCardLogs: ");
- for (int i = 0; i < mCardLogs.size(); ++i) {
- pw.println(" " + mCardLogs.get(i));
- }
}
}