Stop showing default thumbnail in photo manager

Bug: 5126085
Change-Id: Ie90814fc353a70524049aa892e228d72c9dafb01
diff --git a/res/layout/group_browse_list_item.xml b/res/layout/group_browse_list_item.xml
index b9b272c..6f5fcef 100644
--- a/res/layout/group_browse_list_item.xml
+++ b/res/layout/group_browse_list_item.xml
@@ -86,26 +86,22 @@
                     android:id="@+id/icon_1"
                     android:layout_width="@dimen/group_list_icon_size"
                     android:layout_height="@dimen/group_list_icon_size"
-                    android:layout_marginRight="1dip"
-                    android:src="@drawable/ic_contact_picture" />
+                    android:layout_marginRight="1dip" />
                 <ImageView
                     android:id="@+id/icon_2"
                     android:layout_width="@dimen/group_list_icon_size"
-                    android:layout_height="@dimen/group_list_icon_size"
-                    android:src="@drawable/ic_contact_picture" />
+                    android:layout_height="@dimen/group_list_icon_size" />
             </TableRow>
             <TableRow>
                 <ImageView
                     android:id="@+id/icon_3"
                     android:layout_width="@dimen/group_list_icon_size"
                     android:layout_height="@dimen/group_list_icon_size"
-                    android:layout_marginRight="1dip"
-                    android:src="@drawable/ic_contact_picture" />
+                    android:layout_marginRight="1dip" />
                 <ImageView
                     android:id="@+id/icon_4"
                     android:layout_width="@dimen/group_list_icon_size"
-                    android:layout_height="@dimen/group_list_icon_size"
-                    android:src="@drawable/ic_contact_picture" />
+                    android:layout_height="@dimen/group_list_icon_size" />
             </TableRow>
 
         </TableLayout>
diff --git a/src/com/android/contacts/ContactPhotoManager.java b/src/com/android/contacts/ContactPhotoManager.java
index d8f4e65..0f7065d 100644
--- a/src/com/android/contacts/ContactPhotoManager.java
+++ b/src/com/android/contacts/ContactPhotoManager.java
@@ -97,6 +97,12 @@
     public abstract void loadPhoto(ImageView view, Uri photoUri);
 
     /**
+     * Remove photo from the supplied image view. This also cancels current pending load request
+     * inside this photo manager.
+     */
+    public abstract void removePhoto(ImageView view);
+
+    /**
      * Temporarily stops loading photos from the database.
      */
     public abstract void pause();
@@ -261,6 +267,12 @@
     }
 
     @Override
+    public void removePhoto(ImageView view) {
+        view.setImageDrawable(null);
+        mPendingRequests.remove(view);
+    }
+
+    @Override
     public void refreshCache() {
         for (BitmapHolder holder : mBitmapHolderCache.snapshot().values()) {
             holder.fresh = false;
diff --git a/src/com/android/contacts/group/GroupBrowseListAdapter.java b/src/com/android/contacts/group/GroupBrowseListAdapter.java
index 1f06029..6571b99 100644
--- a/src/com/android/contacts/group/GroupBrowseListAdapter.java
+++ b/src/com/android/contacts/group/GroupBrowseListAdapter.java
@@ -153,8 +153,11 @@
             if (currentGroupId == mGroupId) {
                 final ImageView[] children = getIconViewsSordedByFillOrder(icons);
                 for (int i = 0; i < children.length; i++) {
-                    final long photoId = i < photoIds.size() ? photoIds.get(i) : 0;
-                    mContactPhotoManager.loadPhoto(children[i], photoId);
+                    if (i < photoIds.size()) {
+                        mContactPhotoManager.loadPhoto(children[i], photoIds.get(i));
+                    } else {
+                        mContactPhotoManager.removePhoto(children[i]);
+                    }
                 }
             }
         }
@@ -318,13 +321,16 @@
         if (photoIds != null) {
             // Cache is available. Let the photo manager load those IDs.
             for (int i = 0; i < children.length; i++) {
-                final long photoId = i < photoIds.size() ? photoIds.get(i) : 0;
-                mContactPhotoManager.loadPhoto(children[i], photoId);
+                if (i < photoIds.size()) {
+                    mContactPhotoManager.loadPhoto(children[i], photoIds.get(i));
+                } else {
+                    mContactPhotoManager.removePhoto(children[i]);
+                }
             }
         } else {
             // Cache is not available. Load photo IDs asynchronously.
             for (ImageView child : children) {
-                mContactPhotoManager.loadPhoto(child, 0);
+                mContactPhotoManager.removePhoto(child);
             }
             new AsyncPhotoIdLoadTask().execute(
                     new AsyncPhotoIdLoadArg(icons, entry.getGroupId(),
diff --git a/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java b/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
index 6da205b..416b841 100644
--- a/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
+++ b/tests/src/com/android/contacts/tests/mocks/MockContactPhotoManager.java
@@ -37,6 +37,11 @@
     }
 
     @Override
+    public void removePhoto(ImageView view) {
+        view.setImageDrawable(null);
+    }
+
+    @Override
     public void pause() {
     }