Convert ContactPreferenceTest to a robolectric test.

Robolectric tests are much faster than instrumentation tests.

Test: make RunEmergencyInfoRoboTests
Change-Id: If02515a0bbc40c46a05955a299d95b221b9049c2
diff --git a/src/com/android/emergency/preferences/ContactPreference.java b/src/com/android/emergency/preferences/ContactPreference.java
index 8cdb057..ebe1dea 100644
--- a/src/com/android/emergency/preferences/ContactPreference.java
+++ b/src/com/android/emergency/preferences/ContactPreference.java
@@ -54,6 +54,7 @@
 
     private static final String TAG = "ContactPreference";
 
+    private final ContactFactory mContactFactory;
     private EmergencyContactManager.Contact mContact;
     @Nullable private RemoveContactPreferenceListener mRemoveContactPreferenceListener;
     @Nullable private AlertDialog mRemoveContactDialog;
@@ -69,11 +70,37 @@
     }
 
     /**
+     * Interface for getting a contact for a phone number Uri.
+     */
+    public interface ContactFactory {
+        /**
+         * Gets a {@link EmergencyContactManager.Contact} for a phone {@link Uri}.
+         *
+         * @param context The context to use.
+         * @param phoneUri The phone uri.
+         * @return a contact for the given phone uri.
+         */
+        EmergencyContactManager.Contact getContact(Context context, Uri phoneUri);
+    }
+
+    /**
      * Instantiates a ContactPreference that displays an emergency contact, taking in a Context and
      * the Uri.
      */
     public ContactPreference(Context context, @NonNull Uri phoneUri) {
+        this(context, phoneUri, new ContactFactory() {
+            @Override
+            public EmergencyContactManager.Contact getContact(Context context, Uri phoneUri) {
+                return EmergencyContactManager.getContact(context, phoneUri);
+            }
+        });
+    }
+
+    @VisibleForTesting
+    public ContactPreference(Context context, @NonNull Uri phoneUri,
+            @NonNull ContactFactory contactFactory) {
         super(context);
+        mContactFactory = contactFactory;
         setOrder(DEFAULT_ORDER);
 
         setPhoneUri(phoneUri);
@@ -87,7 +114,7 @@
                 mRemoveContactDialog != null) {
             mRemoveContactDialog.dismiss();
         }
-        mContact = EmergencyContactManager.getContact(getContext(), phoneUri);
+        mContact = mContactFactory.getContact(getContext(), phoneUri);
 
         setTitle(mContact.getName());
         setKey(mContact.getPhoneUri().toString());