am b9b07de8: am 0feab022: Merge "Expand the first call log item for new cursors." into mnc-dev

* commit 'b9b07de88e2278007e166dddfe841f399750c36b':
  Expand the first call log item for new cursors.
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index cc3c5ba..2ba257a 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -99,6 +99,8 @@
     // Tracks the rowId of the currently expanded list item, so the position can be updated if there
     // are any changes to the call log entries, such as additions or removals.
     private long mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;
+    // Whether the first call log list item has been automatically expanded for a new cursor.
+    private boolean mHasBoundFirstView;
 
     /**
      *  Hashmap, keyed by call Id, used to track the day group for a call.  As call log entries are
@@ -285,6 +287,16 @@
         mCallFetcher.fetchCalls();
     }
 
+    @Override
+    public void changeCursor(Cursor cursor) {
+        // Data has changed; reset so that the first call log list item will be expanded.
+        mHasBoundFirstView = false;
+        mCurrentlyExpandedPosition = RecyclerView.NO_POSITION;
+        mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM;
+
+        super.changeCursor(cursor);
+    }
+
     public void setLoading(boolean loading) {
         mLoading = loading;
     }
@@ -489,10 +501,15 @@
 
         mCallLogViewsHelper.setPhoneCallDetails(mContext, views, details);
 
-        // Update the expanded position if the rowIds match, in case ViewHolders were added/removed.
-        // Then restore the state of the row on rebind.
         if (mCurrentlyExpandedRowId == views.rowId) {
+            // In case ViewHolders were added/removed, update the expanded position if the rowIds
+            // match so that we can restore the correct expanded state on rebind.
             mCurrentlyExpandedPosition = position;
+        } else if (!mHasBoundFirstView) {
+            // Expand the first view when loading the call log to expose the actions.
+            mCurrentlyExpandedRowId = views.rowId;
+            mCurrentlyExpandedPosition = position;
+            mHasBoundFirstView = true;
         }
         views.showActions(mCurrentlyExpandedPosition == position);