Merge "Import translations. DO NOT MERGE" into ub-contactsdialer-h-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1ef1bd5..f92d80f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -899,7 +899,7 @@
<!-- Text shown in the contacts app while the background process updates contacts after a locale change [CHAR LIMIT=150]-->
<string name="locale_change_in_progress">Contact list is being updated to reflect the change of language.\n\nPlease wait…</string>
- <!-- The menu item to open the Google contacts assistant. [CHAR LIMIT=20]-->
+ <!-- Left drawer menu item to open contacts assistant cards. [CHAR LIMIT=20]-->
<string name="menu_assistant">Assistant</string>
<!-- The menu item to open the link/merge duplicates activity. [CHAR LIMIT=20]-->
diff --git a/src/com/android/contacts/common/Experiments.java b/src/com/android/contacts/common/Experiments.java
index 1b739ed..5de4d5d 100644
--- a/src/com/android/contacts/common/Experiments.java
+++ b/src/com/android/contacts/common/Experiments.java
@@ -26,6 +26,11 @@
public static final String ASSISTANT = "Assistant__enable_assistant";
/**
+ * Experiment to show the restore assistant on the assistants view.
+ */
+ public static final String ASSISTANT_RESTORE = "Assistant__restore";
+
+ /**
* Whether to open contact sheet (aka smart profile) instead of our own QuickContact.
*/
public static final String CONTACT_SHEET = "QuickContact__contact_sheet";
diff --git a/src/com/android/contacts/common/database/SimContactDao.java b/src/com/android/contacts/common/database/SimContactDao.java
index 9ce7970..a4846ad 100644
--- a/src/com/android/contacts/common/database/SimContactDao.java
+++ b/src/com/android/contacts/common/database/SimContactDao.java
@@ -105,6 +105,15 @@
return mResolver.applyBatch(ContactsContract.AUTHORITY, ops);
}
+ public void warmup() {
+ // We don't actually have to do any caching ourselves. Some other layer must do caching
+ // of the data (OS or framework) because subsequent queries are very fast.
+ final Cursor cursor = mResolver.query(ICC_CONTENT_URI, null, null, null, null);
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+
private ArrayList<ContentProviderOperation> createImportOperations(List<SimContact> contacts,
AccountWithDataSet targetAccount) {
final ArrayList<ContentProviderOperation> ops = new ArrayList<>();
diff --git a/src/com/android/contacts/editor/PickRawContactDialogFragment.java b/src/com/android/contacts/editor/PickRawContactDialogFragment.java
index 0f87d99..623d038 100644
--- a/src/com/android/contacts/editor/PickRawContactDialogFragment.java
+++ b/src/com/android/contacts/editor/PickRawContactDialogFragment.java
@@ -36,6 +36,10 @@
* for the chosen raw contact.
*/
public class PickRawContactDialogFragment extends DialogFragment {
+ private static final String ARGS_URI = "uri";
+ private static final String ARGS_MATERIAL_PALETTE = "materialPalette";
+ private static final String ARGS_IS_USER_PROFILE = "isUserProfile";
+
/**
* Used to list the account info for the given raw contacts list.
*/
@@ -147,10 +151,12 @@
public static PickRawContactDialogFragment getInstance(Uri uri, Cursor cursor,
MaterialPalette materialPalette, boolean isUserProfile) {
final PickRawContactDialogFragment fragment = new PickRawContactDialogFragment();
- fragment.setUri(uri);
+ final Bundle args = new Bundle();
+ args.putParcelable(ARGS_URI, uri);
+ args.putParcelable(ARGS_MATERIAL_PALETTE, materialPalette);
+ args.putBoolean(ARGS_IS_USER_PROFILE, isUserProfile);
+ fragment.setArguments(args);
fragment.setCursor(cursor);
- fragment.setMaterialPalette(materialPalette);
- fragment.setIsUserProfile(isUserProfile);
return fragment;
}
@@ -180,8 +186,16 @@
finishActivity();
}
- private void setUri(Uri uri) {
- mUri = uri;
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ final Bundle args = getArguments();
+ if (args != null) {
+ mUri = args.getParcelable(ARGS_URI);
+ mMaterialPalette = args.getParcelable(ARGS_MATERIAL_PALETTE);
+ mIsUserProfile = args.getBoolean(ARGS_IS_USER_PROFILE);
+ }
}
public void setCursor(Cursor cursor) {
@@ -191,14 +205,6 @@
mCursor = cursor;
}
- private void setMaterialPalette(MaterialPalette materialPalette) {
- mMaterialPalette = materialPalette;
- }
-
- private void setIsUserProfile(boolean isUserProfile) {
- mIsUserProfile = isUserProfile;
- }
-
private void finishActivity() {
if (getActivity() != null && !getActivity().isFinishing()) {
getActivity().finish();
diff --git a/src/com/android/contacts/list/ContactsUnavailableFragment.java b/src/com/android/contacts/list/ContactsUnavailableFragment.java
index 488463d..518447c 100644
--- a/src/com/android/contacts/list/ContactsUnavailableFragment.java
+++ b/src/com/android/contacts/list/ContactsUnavailableFragment.java
@@ -114,6 +114,8 @@
* Update views in the fragment when provider status is empty.
*/
private void updateViewsForEmptyStatus() {
+ mMessageView.setText(R.string.noContacts);
+ mMessageView.setVisibility(View.VISIBLE);
updateButtonVisibility(View.VISIBLE);
mProgress.setVisibility(View.GONE);
}
diff --git a/tests/src/com/android/contacts/RunMethodInstrumentation.java b/tests/src/com/android/contacts/RunMethodInstrumentation.java
index 11516b8..2eb6928 100644
--- a/tests/src/com/android/contacts/RunMethodInstrumentation.java
+++ b/tests/src/com/android/contacts/RunMethodInstrumentation.java
@@ -71,6 +71,14 @@
return;
}
+ // Wait for the Application to finish creating.
+ runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ Log.d(TAG, "acquired main thread from instrumentation");
+ }
+ });
+
try {
invokeMethod(args, className, methodName);
} catch (Exception e) {