Merge "Replace HashMap by SparseArray"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index fa67483..a88e6a8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -873,7 +873,7 @@
<string name="vcard_unknown_filename">contact</string>
<!-- The percentage, used for expressing the progress of vCard import/export. -->
- <string name="percentage">%s%%</string>
+ <string name="percentage"><xliff:g id="percentage" example="50">%s</xliff:g><xliff:g id="percentsign" example="%">%%</xliff:g></string>
<!-- Dialog title shown when a user confirms whether he/she export Contact data. [CHAR LIMIT=32] -->
<string name="confirm_export_title">Export contacts?</string>
diff --git a/tests/src/com/android/contacts/CallDetailActivityTest.java b/tests/src/com/android/contacts/CallDetailActivityTest.java
index ac02588..689f946 100644
--- a/tests/src/com/android/contacts/CallDetailActivityTest.java
+++ b/tests/src/com/android/contacts/CallDetailActivityTest.java
@@ -25,7 +25,6 @@
import com.android.contacts.util.IntegrationTestUtils;
import com.android.contacts.util.LocaleTestUtils;
import com.android.internal.view.menu.ContextMenuBuilder;
-import com.google.common.base.Preconditions;
import com.google.common.io.Closeables;
import android.content.ContentResolver;
@@ -227,7 +226,7 @@
}
private void setActivityIntentForTestCallEntry() {
- Preconditions.checkState(mCallLogUri == null, "mUri should be null");
+ assertNull(mCallLogUri);
ContentResolver contentResolver = getContentResolver();
ContentValues values = new ContentValues();
values.put(CallLog.Calls.NUMBER, CONTACT_NUMBER);
@@ -237,7 +236,7 @@
}
private void setActivityIntentForTestVoicemailEntry() {
- Preconditions.checkState(mVoicemailUri == null, "mUri should be null");
+ assertNull(mVoicemailUri);
ContentResolver contentResolver = getContentResolver();
ContentValues values = new ContentValues();
values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
@@ -252,7 +251,7 @@
}
private void setActivityIntentForRealFileVoicemailEntry() throws IOException {
- Preconditions.checkState(mVoicemailUri == null, "mUri should be null");
+ assertNull(mVoicemailUri);
ContentValues values = new ContentValues();
values.put(VoicemailContract.Voicemails.DATE, String.valueOf(System.currentTimeMillis()));
values.put(VoicemailContract.Voicemails.NUMBER, CONTACT_NUMBER);
@@ -307,7 +306,7 @@
}
private TextView assertHasOneTextViewContaining(String text) throws Throwable {
- Preconditions.checkNotNull(mActivityUnderTest, "forget to call startActivityUnderTest()?");
+ assertNotNull(mActivityUnderTest);
List<TextView> views = mTestUtils.getTextViewsWithString(mActivityUnderTest, text);
assertEquals("There should have been one TextView with text '" + text + "' but found "
+ views, 1, views.size());
@@ -315,14 +314,14 @@
}
private void assertZeroTextViewsContaining(String text) throws Throwable {
- Preconditions.checkNotNull(mActivityUnderTest, "forget to call startActivityUnderTest()?");
+ assertNotNull(mActivityUnderTest);
List<TextView> views = mTestUtils.getTextViewsWithString(mActivityUnderTest, text);
assertEquals("There should have been no TextViews with text '" + text + "' but found "
+ views, 0, views.size());
}
private void startActivityUnderTest() throws Throwable {
- Preconditions.checkState(mActivityUnderTest == null, "must only start the activity once");
+ assertNull(mActivityUnderTest);
mActivityUnderTest = getActivity();
assertNotNull("activity should not be null", mActivityUnderTest);
// We have to run all tasks, not just one.
diff --git a/tests/src/com/android/contacts/EntityModifierTests.java b/tests/src/com/android/contacts/EntityModifierTests.java
index 6872604..df4934a 100644
--- a/tests/src/com/android/contacts/EntityModifierTests.java
+++ b/tests/src/com/android/contacts/EntityModifierTests.java
@@ -1130,6 +1130,25 @@
AccountType newAccountType = new ExchangeAccountType(getContext(), "");
DataKind kind = newAccountType.getKindForMimetype(Phone.CONTENT_ITEM_TYPE);
+ // Create 5 numbers.
+ // - "1" -- HOME
+ // - "2" -- WORK
+ // - "3" -- CUSTOM
+ // - "4" -- WORK
+ // - "5" -- WORK_MOBILE
+ // Then we convert it to Exchange account type.
+ // - "1" -- HOME
+ // - "2" -- WORK
+ // - "3" -- Because CUSTOM is not supported, it'll be changed to the default, MOBILE
+ // - "4" -- WORK
+ // - "5" -- WORK_MOBILE not suppoted again, so will be MOBILE.
+ // But then, Exchange doesn't support multiple MOBILE numbers, so "5" will be removed.
+ // i.e. the result will be:
+ // - "1" -- HOME
+ // - "2" -- WORK
+ // - "3" -- MOBILE
+ // - "4" -- WORK
+
EntityDelta oldState = new EntityDelta();
ContentValues mockNameValues = new ContentValues();
mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
@@ -1138,12 +1157,12 @@
oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
mockNameValues = new ContentValues();
mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
- mockNameValues.put(Phone.TYPE, Phone.TYPE_MOBILE);
+ mockNameValues.put(Phone.TYPE, Phone.TYPE_WORK);
mockNameValues.put(Phone.NUMBER, "2");
oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
mockNameValues = new ContentValues();
mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
- // Exchange doesn't support this type. Default to HOME
+ // Exchange doesn't support this type. Default to MOBILE
mockNameValues.put(Phone.TYPE, Phone.TYPE_CUSTOM);
mockNameValues.put(Phone.LABEL, "custom_type");
mockNameValues.put(Phone.NUMBER, "3");
@@ -1155,8 +1174,6 @@
oldState.addEntry(ValuesDelta.fromAfter(mockNameValues));
mockNameValues = new ContentValues();
- // This field should be ignored, as Exchange only allows 2 HOME phone numbers while we
- // already have that number of HOME phones.
mockNameValues.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
mockNameValues.put(Phone.TYPE, Phone.TYPE_WORK_MOBILE);
mockNameValues.put(Phone.NUMBER, "5");
@@ -1169,13 +1186,13 @@
assertNotNull(list);
assertEquals(4, list.size());
- int defaultType = kind.typeList.get(0).rawValue;
+ int defaultType = Phone.TYPE_MOBILE;
ContentValues outputValues = list.get(0).getAfter();
assertEquals(Phone.TYPE_HOME, outputValues.getAsInteger(Phone.TYPE).intValue());
assertEquals("1", outputValues.getAsString(Phone.NUMBER));
outputValues = list.get(1).getAfter();
- assertEquals(Phone.TYPE_MOBILE, outputValues.getAsInteger(Phone.TYPE).intValue());
+ assertEquals(Phone.TYPE_WORK, outputValues.getAsInteger(Phone.TYPE).intValue());
assertEquals("2", outputValues.getAsString(Phone.NUMBER));
outputValues = list.get(2).getAfter();
assertEquals(defaultType, outputValues.getAsInteger(Phone.TYPE).intValue());
diff --git a/tests/src/com/android/contacts/util/FakeAsyncTaskExecutor.java b/tests/src/com/android/contacts/util/FakeAsyncTaskExecutor.java
index 960f0bf..e68c0ec 100644
--- a/tests/src/com/android/contacts/util/FakeAsyncTaskExecutor.java
+++ b/tests/src/com/android/contacts/util/FakeAsyncTaskExecutor.java
@@ -16,10 +16,6 @@
package com.android.contacts.util;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-
-import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import android.app.Instrumentation;
@@ -65,7 +61,8 @@
/** Create a fake AsyncTaskExecutor for use in unit tests. */
public FakeAsyncTaskExecutor(Instrumentation instrumentation) {
- mInstrumentation = checkNotNull(instrumentation);
+ Assert.assertNotNull(instrumentation);
+ mInstrumentation = instrumentation;
}
/** Encapsulates an async task with the params and identifier it was submitted with. */
@@ -116,8 +113,9 @@
@Override
public void execute(Runnable command) {
synchronized (mNextLock) {
+ Assert.assertNotNull(mNextTask);
mSubmittedTasks.add(new SubmittedTaskImpl(mNextIdentifier,
- command, checkNotNull(mNextTask)));
+ command, mNextTask));
mNextIdentifier = null;
mNextTask = null;
}
@@ -126,13 +124,14 @@
public <T> AsyncTask<T, ?, ?> submit(Object identifier,
AsyncTask<T, ?, ?> task, T... params) {
synchronized (mNextLock) {
- checkState(mNextIdentifier == null);
- checkState(mNextTask == null);
+ Assert.assertNull(mNextIdentifier);
+ Assert.assertNull(mNextTask);
mNextIdentifier = identifier;
- mNextTask = checkNotNull(task, "Already had a valid task.\n"
+ Assert.assertNotNull("Already had a valid task.\n"
+ "Are you calling AsyncTaskExecutor.submit(...) from within the "
+ "onPreExecute() method of another task being submitted?\n"
- + "Sorry! Not that's not supported.");
+ + "Sorry! Not that's not supported.", task);
+ mNextTask = task;
}
return task.executeOnExecutor(this, params);
}
@@ -205,7 +204,7 @@
private List<SubmittedTask> getSubmittedTasksByIdentifier(
Object identifier, boolean remove) {
- Preconditions.checkNotNull(identifier, "can't lookup tasks by 'null' identifier");
+ Assert.assertNotNull(identifier);
List<SubmittedTask> results = Lists.newArrayList();
synchronized (mLock) {
Iterator<SubmittedTask> iter = mSubmittedTasks.iterator();