Commit d6604509 authored by Finnur Thorarinsson's avatar Finnur Thorarinsson Committed by Commit Bot

Contacts Picker: Add test for the dialog.

Bug: 860467
Change-Id: I3173492480955a562415bd8885b6b92fb6cbf5a6
Reviewed-on: https://chromium-review.googlesource.com/c/1256782Reviewed-by: default avatarTheresa <twellington@chromium.org>
Commit-Queue: Finnur Thorarinsson <finnur@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596218}
parent c9fae9ee
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<org.chromium.chrome.browser.contacts_picker.ContactsPickerToolbar <org.chromium.chrome.browser.contacts_picker.ContactsPickerToolbar
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
...@@ -25,7 +26,7 @@ ...@@ -25,7 +26,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:paddingEnd="10dp" android:paddingEnd="10dp"
android:src="@drawable/ic_select_all" app:srcCompat="@drawable/ic_select_all"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<ImageView <ImageView
......
...@@ -8,6 +8,7 @@ import android.content.ContentResolver; ...@@ -8,6 +8,7 @@ import android.content.ContentResolver;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.support.v7.widget.RecyclerView.ViewHolder; import android.support.v7.widget.RecyclerView.ViewHolder;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.task.AsyncTask; import org.chromium.base.task.AsyncTask;
/** /**
...@@ -30,6 +31,9 @@ public class ContactViewHolder ...@@ -30,6 +31,9 @@ public class ContactViewHolder
// A worker task for asynchronously retrieving icons off the main thread. // A worker task for asynchronously retrieving icons off the main thread.
private FetchIconWorkerTask mWorkerTask; private FetchIconWorkerTask mWorkerTask;
// The icon to use when testing.
private static Bitmap sIconForTest;
/** /**
* The PickerBitmapViewHolder. * The PickerBitmapViewHolder.
* @param itemView The {@link ContactView} for the contact. * @param itemView The {@link ContactView} for the contact.
...@@ -52,6 +56,11 @@ public class ContactViewHolder ...@@ -52,6 +56,11 @@ public class ContactViewHolder
public void setContactDetails(ContactDetails contact) { public void setContactDetails(ContactDetails contact) {
mContact = contact; mContact = contact;
if (sIconForTest != null) {
mItemView.initialize(contact, sIconForTest);
return;
}
Bitmap icon = mCategoryView.getIconCache().getBitmap(mContact.getId()); Bitmap icon = mCategoryView.getIconCache().getBitmap(mContact.getId());
if (icon == null) { if (icon == null) {
mWorkerTask = new FetchIconWorkerTask(mContact.getId(), mContentResolver, this); mWorkerTask = new FetchIconWorkerTask(mContact.getId(), mContentResolver, this);
...@@ -81,4 +90,10 @@ public class ContactViewHolder ...@@ -81,4 +90,10 @@ public class ContactViewHolder
mItemView.setIconBitmap(icon); mItemView.setIconBitmap(icon);
} }
/** Sets the icon to use when testing. */
@VisibleForTesting
public static void setIconForTesting(Bitmap icon) {
sIconForTest = icon;
}
} }
...@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.contacts_picker; ...@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.contacts_picker;
import android.content.Context; import android.content.Context;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.ui.ContactsPickerListener; import org.chromium.ui.ContactsPickerListener;
...@@ -36,4 +37,9 @@ public class ContactsPickerDialog extends AlertDialog { ...@@ -36,4 +37,9 @@ public class ContactsPickerDialog extends AlertDialog {
mCategoryView.initialize(this, listener, mimeTypes); mCategoryView.initialize(this, listener, mimeTypes);
setView(mCategoryView); setView(mCategoryView);
} }
@VisibleForTesting
public PickerCategoryView getCategoryViewForTesting() {
return mCategoryView;
}
} }
...@@ -10,6 +10,7 @@ import android.support.v7.widget.RecyclerView.Adapter; ...@@ -10,6 +10,7 @@ import android.support.v7.widget.RecyclerView.Adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.task.AsyncTask; import org.chromium.base.task.AsyncTask;
import org.chromium.chrome.R; import org.chromium.chrome.R;
...@@ -36,6 +37,9 @@ public class PickerAdapter extends Adapter<ContactViewHolder> ...@@ -36,6 +37,9 @@ public class PickerAdapter extends Adapter<ContactViewHolder>
// A list of search result indices into the larger data set. // A list of search result indices into the larger data set.
private ArrayList<Integer> mSearchResults; private ArrayList<Integer> mSearchResults;
// A list of contacts to use for testing (instead of querying Android).
private static ArrayList<ContactDetails> sTestContacts;
/** /**
* The PickerAdapter constructor. * The PickerAdapter constructor.
* @param categoryView The category view to use to show the contacts. * @param categoryView The category view to use to show the contacts.
...@@ -45,8 +49,13 @@ public class PickerAdapter extends Adapter<ContactViewHolder> ...@@ -45,8 +49,13 @@ public class PickerAdapter extends Adapter<ContactViewHolder>
mCategoryView = categoryView; mCategoryView = categoryView;
mContentResolver = contentResolver; mContentResolver = contentResolver;
mWorkerTask = new ContactsFetcherWorkerTask(mContentResolver, this); if (getAllContacts() == null && sTestContacts == null) {
mWorkerTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); mWorkerTask = new ContactsFetcherWorkerTask(mContentResolver, this);
mWorkerTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
mContactDetails = sTestContacts;
notifyDataSetChanged();
}
} }
/** /**
...@@ -82,7 +91,7 @@ public class PickerAdapter extends Adapter<ContactViewHolder> ...@@ -82,7 +91,7 @@ public class PickerAdapter extends Adapter<ContactViewHolder>
return mContactDetails; return mContactDetails;
} }
// ContactFetcherWorkerTask.ContactsRetrievedCallback: // ContactsFetcherWorkerTask.ContactsRetrievedCallback:
@Override @Override
public void contactsRetrieved(ArrayList<ContactDetails> contacts) { public void contactsRetrieved(ArrayList<ContactDetails> contacts) {
...@@ -123,4 +132,10 @@ public class PickerAdapter extends Adapter<ContactViewHolder> ...@@ -123,4 +132,10 @@ public class PickerAdapter extends Adapter<ContactViewHolder>
if (mContactDetails == null) return 0; if (mContactDetails == null) return 0;
return mContactDetails.size(); return mContactDetails.size();
} }
/** Sets a list of contacts to use as data for the dialog. For testing use only. */
@VisibleForTesting
public static void setTestContacts(ArrayList<ContactDetails> contacts) {
sTestContacts = contacts;
}
} }
...@@ -17,6 +17,7 @@ import android.widget.ImageView; ...@@ -17,6 +17,7 @@ import android.widget.ImageView;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.BitmapCache; import org.chromium.chrome.browser.BitmapCache;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
...@@ -340,4 +341,9 @@ public class PickerCategoryView ...@@ -340,4 +341,9 @@ public class PickerCategoryView
mDialog.dismiss(); mDialog.dismiss();
UiUtils.onContactsPickerDismissed(); UiUtils.onContactsPickerDismissed();
} }
@VisibleForTesting
public SelectionDelegate<ContactDetails> getSelectionDelegateForTesting() {
return mSelectionDelegate;
}
} }
...@@ -1789,6 +1789,7 @@ chrome_test_java_sources = [ ...@@ -1789,6 +1789,7 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/compositor/layouts/MockLayoutHost.java", "javatests/src/org/chromium/chrome/browser/compositor/layouts/MockLayoutHost.java",
"javatests/src/org/chromium/chrome/browser/compositor/layouts/MockResourcesForLayout.java", "javatests/src/org/chromium/chrome/browser/compositor/layouts/MockResourcesForLayout.java",
"javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java", "javatests/src/org/chromium/chrome/browser/compositor/overlays/strip/TabStripTest.java",
"javatests/src/org/chromium/chrome/browser/contacts_picker/ContactsPickerDialogTest.java",
"javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java", "javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java",
"javatests/src/org/chromium/chrome/browser/contextmenu/TabularContextMenuUiTest.java", "javatests/src/org/chromium/chrome/browser/contextmenu/TabularContextMenuUiTest.java",
"javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchFakeServer.java", "javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchFakeServer.java",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment