merge in nyc-release history after reset to nyc-dev
diff --git a/src/com/android/providers/telephony/TelephonyBackupAgent.java b/src/com/android/providers/telephony/TelephonyBackupAgent.java
index 7a9d701..5f4acaa 100644
--- a/src/com/android/providers/telephony/TelephonyBackupAgent.java
+++ b/src/com/android/providers/telephony/TelephonyBackupAgent.java
@@ -160,14 +160,6 @@
// Order by Date entries from database. We start backup from the oldest.
private static final String ORDER_BY_DATE = "date ASC";
- // This is a hard coded string rather than a localized one because we don't want it to
- // change when you change locale.
- @VisibleForTesting
- static final String UNKNOWN_SENDER = "\u02BCUNKNOWN_SENDER!\u02BC";
-
- // Thread id for UNKNOWN_SENDER.
- private long mUnknownSenderThreadId;
-
// Columns from SMS database for backup/restore.
@VisibleForTesting
static final String[] SMS_PROJECTION = new String[] {
@@ -238,9 +230,10 @@
@VisibleForTesting
int mMaxMsgPerFile = 1000;
+
// Default values for SMS, MMS, Addresses restore.
- private static ContentValues sDefaultValuesSms = new ContentValues(5);
- private static ContentValues sDefaultValuesMms = new ContentValues(6);
+ private static final ContentValues sDefaultValuesSms = new ContentValues(3);
+ private static final ContentValues sDefaultValuesMms = new ContentValues(5);
private static final ContentValues sDefaultValuesAddr = new ContentValues(2);
// Shared preferences for the backup agent.
@@ -259,7 +252,6 @@
// Consider restored messages read and seen.
sDefaultValuesSms.put(Telephony.Sms.READ, 1);
sDefaultValuesSms.put(Telephony.Sms.SEEN, 1);
- sDefaultValuesSms.put(Telephony.Sms.ADDRESS, UNKNOWN_SENDER);
// If there is no sub_id with self phone number on restore set it to -1.
sDefaultValuesSms.put(Telephony.Sms.SUBSCRIPTION_ID, -1);
@@ -306,7 +298,6 @@
}
}
mContentResolver = getContentResolver();
- initUnknownSender();
}
@VisibleForTesting
@@ -319,13 +310,6 @@
mPhone2subId = phone2subId;
}
- @VisibleForTesting
- void initUnknownSender() {
- mUnknownSenderThreadId = getOrCreateThreadId(null);
- sDefaultValuesSms.put(Telephony.Sms.THREAD_ID, mUnknownSenderThreadId);
- sDefaultValuesMms.put(Telephony.Mms.THREAD_ID, mUnknownSenderThreadId);
- }
-
@Override
public void onFullBackup(FullBackupDataOutput data) throws IOException {
SharedPreferences sharedPreferences = getSharedPreferences(BACKUP_PREFS, MODE_PRIVATE);
@@ -364,22 +348,18 @@
final long smsDate = TimeUnit.MILLISECONDS.toSeconds(getMessageDate(smsCursor));
final long mmsDate = getMessageDate(mmsCursor);
if (smsDate < mmsDate) {
- backupAll(data, smsCursor,
- String.format(Locale.US, SMS_BACKUP_FILE_FORMAT, fileNum++));
+ backupAll(data, smsCursor, String.format(SMS_BACKUP_FILE_FORMAT, fileNum++));
} else {
- backupAll(data, mmsCursor, String.format(Locale.US,
- MMS_BACKUP_FILE_FORMAT, fileNum++));
+ backupAll(data, mmsCursor, String.format(MMS_BACKUP_FILE_FORMAT, fileNum++));
}
}
while (smsCursor != null && !smsCursor.isAfterLast()) {
- backupAll(data, smsCursor,
- String.format(Locale.US, SMS_BACKUP_FILE_FORMAT, fileNum++));
+ backupAll(data, smsCursor, String.format(SMS_BACKUP_FILE_FORMAT, fileNum++));
}
while (mmsCursor != null && !mmsCursor.isAfterLast()) {
- backupAll(data, mmsCursor,
- String.format(Locale.US, MMS_BACKUP_FILE_FORMAT, fileNum++));
+ backupAll(data, mmsCursor, String.format(MMS_BACKUP_FILE_FORMAT, fileNum++));
}
}
@@ -507,11 +487,11 @@
final String fileName = file.getName();
try (FileInputStream fileInputStream = new FileInputStream(file)) {
mTelephonyBackupAgent.doRestoreFile(fileName, fileInputStream.getFD());
- } catch (Exception e) {
- // Either IOException or RuntimeException.
- Log.e(TAG, e.toString());
- } finally {
file.delete();
+ } catch (IOException e) {
+ if (DEBUG) {
+ Log.e(TAG, e.toString());
+ }
}
}
} finally {
@@ -631,7 +611,7 @@
private static final int ID_IDX = 0;
private boolean doesSmsExist(ContentValues smsValues) {
- final String where = String.format(Locale.US, "%s = %d and %s = %s",
+ final String where = String.format("%s = %d and %s = %s",
Telephony.Sms.DATE, smsValues.getAsLong(Telephony.Sms.DATE),
Telephony.Sms.BODY,
DatabaseUtils.sqlEscapeString(smsValues.getAsString(Telephony.Sms.BODY)));
@@ -642,7 +622,7 @@
}
private boolean doesMmsExist(Mms mms) {
- final String where = String.format(Locale.US, "%s = %d",
+ final String where = String.format("%s = %d",
Telephony.Sms.DATE, mms.values.getAsLong(Telephony.Mms.DATE));
try (Cursor cursor = mContentResolver.query(Telephony.Mms.CONTENT_URI, PROJECTION_ID, where,
null, null)) {
@@ -700,12 +680,8 @@
}
private void handleThreadId(JsonWriter jsonWriter, long threadId) throws IOException {
- final List<String> recipients = getRecipientsByThread(threadId);
- if (recipients == null || recipients.isEmpty()) {
- return;
- }
-
- writeRecipientsToWriter(jsonWriter.name(RECIPIENTS), recipients);
+ writeRecipientsToWriter(jsonWriter.name(RECIPIENTS),
+ getRecipientsByThread(threadId));
if (!mThreadArchived.containsKey(threadId)) {
boolean isArchived = isThreadArchived(threadId);
if (isArchived) {
@@ -726,7 +702,7 @@
try (Cursor cursor = getContentResolver().query(uri, THREAD_ARCHIVED_PROJECTION, null, null,
null)) {
- if (cursor != null && cursor.moveToFirst()) {
+ if (cursor.moveToFirst()) {
return cursor.getInt(THREAD_ARCHIVED_IDX) == 1;
}
}
@@ -746,7 +722,7 @@
private ContentValues readSmsValuesFromReader(JsonReader jsonReader)
throws IOException {
- ContentValues values = new ContentValues(6+sDefaultValuesSms.size());
+ ContentValues values = new ContentValues(8+sDefaultValuesSms.size());
values.putAll(sDefaultValuesSms);
long threadId = -1;
boolean isArchived = false;
@@ -853,7 +829,7 @@
private Mms readMmsFromReader(JsonReader jsonReader) throws IOException {
Mms mms = new Mms();
- mms.values = new ContentValues(5+sDefaultValuesMms.size());
+ mms.values = new ContentValues(6+sDefaultValuesMms.size());
mms.values.putAll(sDefaultValuesMms);
jsonReader.beginObject();
String bodyText = null;
@@ -1026,7 +1002,7 @@
final Uri partUri = Telephony.Mms.CONTENT_URI.buildUpon()
.appendPath(String.valueOf(dummyId)).appendPath("part").build();
- final String srcName = String.format(Locale.US, "text.%06d.txt", 0);
+ final String srcName = String.format("text.%06d.txt", 0);
{ // Insert SMIL part.
final String smilBody = String.format(sSmilTextPart, srcName);
final String smil = String.format(sSmilTextOnly, smilBody);
@@ -1153,29 +1129,13 @@
}
private long getOrCreateThreadId(Set<String> recipients) {
- if (recipients == null) {
- recipients = new ArraySet<String>();
- }
-
- if (recipients.isEmpty()) {
- recipients.add(UNKNOWN_SENDER);
- }
-
if (mCacheGetOrCreateThreadId == null) {
mCacheGetOrCreateThreadId = new HashMap<>();
}
if (!mCacheGetOrCreateThreadId.containsKey(recipients)) {
- long threadId = mUnknownSenderThreadId;
- try {
- threadId = Telephony.Threads.getOrCreateThreadId(this, recipients);
- } catch (RuntimeException e) {
- if (DEBUG) {
- Log.e(TAG, e.toString());
- }
- }
- mCacheGetOrCreateThreadId.put(recipients, threadId);
- return threadId;
+ mCacheGetOrCreateThreadId.put(recipients,
+ Telephony.Threads.getOrCreateThreadId(this, recipients));
}
return mCacheGetOrCreateThreadId.get(recipients);
diff --git a/tests/src/com/android/providers/telephony/TelephonyBackupAgentTest.java b/tests/src/com/android/providers/telephony/TelephonyBackupAgentTest.java
index 4866dbd..5869a84 100644
--- a/tests/src/com/android/providers/telephony/TelephonyBackupAgentTest.java
+++ b/tests/src/com/android/providers/telephony/TelephonyBackupAgentTest.java
@@ -36,6 +36,7 @@
import android.util.ArraySet;
import android.util.JsonReader;
import android.util.JsonWriter;
+import android.util.Log;
import android.util.SparseArray;
import org.json.JSONArray;
@@ -118,8 +119,8 @@
/* Generating test data */
- mSmsRows = new ContentValues[4];
- mSmsJson = new String[4];
+ mSmsRows = new ContentValues[3];
+ mSmsJson = new String[3];
mSmsRows[0] = createSmsRow(1, 1, "+1232132214124", "sms 1", "sms subject", 9087978987l,
999999999, 3, 44, 1);
mSmsJson[0] = "{\"self_phone\":\"+111111111111111\",\"address\":" +
@@ -144,14 +145,6 @@
"\"recipients\":[\"+1232221412433\",\"+1232221412444\"]}";
mThreadProvider.getOrCreateThreadId(new String[]{"+1232221412433", "+1232221412444"});
-
- mSmsRows[3] = createSmsRow(5, 3, null, "sms 4", null,
- 111111111111l, 999999999, 2, 3, 5);
- mSmsJson[3] = "{\"self_phone\":\"+333333333333333\"," +
- "\"body\":\"sms 4\",\"date\":\"111111111111\"," +
- "\"date_sent\":" +
- "\"999999999\",\"status\":\"2\",\"type\":\"3\"}";
-
mAllSmsJson = makeJsonArray(mSmsJson);
@@ -399,7 +392,7 @@
* @throws Exception
*/
public void testBackupSms_AllSmsWithExactFileLimit() throws Exception {
- mTelephonyBackupAgent.mMaxMsgPerFile = 4;
+ mTelephonyBackupAgent.mMaxMsgPerFile = 3;
mSmsTable.addAll(Arrays.asList(mSmsRows));
mTelephonyBackupAgent.putSmsMessagesToJson(mSmsCursor, new JsonWriter(mStringWriter));
assertEquals(mAllSmsJson, mStringWriter.toString());
@@ -423,10 +416,6 @@
mStringWriter = new StringWriter();
mTelephonyBackupAgent.putSmsMessagesToJson(mSmsCursor, new JsonWriter(mStringWriter));
assertEquals("[" + mSmsJson[2] + "]", mStringWriter.toString());
-
- mStringWriter = new StringWriter();
- mTelephonyBackupAgent.putSmsMessagesToJson(mSmsCursor, new JsonWriter(mStringWriter));
- assertEquals("[" + mSmsJson[3] + "]", mStringWriter.toString());
}
/**
@@ -496,7 +485,6 @@
* @throws Exception
*/
public void testRestoreSms_AllSms() throws Exception {
- mTelephonyBackupAgent.initUnknownSender();
JsonReader jsonReader = new JsonReader(new StringReader(addRandomDataToJson(mAllSmsJson)));
FakeSmsProvider smsProvider = new FakeSmsProvider(mSmsRows);
mMockContentResolver.addProvider("sms", smsProvider);
@@ -538,9 +526,9 @@
*/
public void testBackup_WithQuotaExceeded() throws Exception {
mTelephonyBackupAgent.mMaxMsgPerFile = 1;
- final int backupSize = 7168;
- final int backupSizeAfterFirstQuotaHit = 6144;
- final int backupSizeAfterSecondQuotaHit = 5120;
+ final int backupSize = 6144;
+ final int backupSizeAfterFirstQuotaHit = 5120;
+ final int backupSizeAfterSecondQuotaHit = 4096;
mSmsTable.addAll(Arrays.asList(mSmsRows));
mMmsTable.addAll(Arrays.asList(mMmsRows));
@@ -596,10 +584,6 @@
modifiedValues.put(Telephony.Sms.SUBSCRIPTION_ID, -1);
}
- if (modifiedValues.get(Telephony.Sms.ADDRESS) == null) {
- modifiedValues.put(Telephony.Sms.ADDRESS, TelephonyBackupAgent.UNKNOWN_SENDER);
- }
-
assertEquals(modifiedValues, values);
return null;
}
@@ -728,10 +712,6 @@
public int getOrCreateThreadId(final String[] recipients) {
- if (recipients == null || recipients.length == 0) {
- throw new IllegalArgumentException("Unable to find or allocate a thread ID.");
- }
-
Set<Integer> ids = new ArraySet<>();
for (String rec : recipients) {
if (!id2Recipient.contains(rec)) {
@@ -750,10 +730,6 @@
}
private String getSpaceSepIds(int threadId) {
- if (id2Thread.size() < threadId) {
- return null;
- }
-
String spaceSepIds = null;
for (Integer id : id2Thread.get(threadId-1)) {
spaceSepIds = (spaceSepIds == null ? "" : spaceSepIds + " ") + String.valueOf(id);