Merge "Fixing securityException issue" into nyc-dev
diff --git a/build-library.gradle b/build-library.gradle
index d353016..a2394aa 100644
--- a/build-library.gradle
+++ b/build-library.gradle
@@ -12,6 +12,11 @@
         manifest.srcFile 'AndroidManifest.xml'
         res.srcDirs = ['res']
     }
+
+    sourceSets.androidTest {
+        java.srcDirs = ['tests/src']
+        res.srcDirs = ['test/res']
+    }
 }
 
 dependencies {
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index dfb5190..165594e 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -595,9 +595,10 @@
             // 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;
+            views.showActions(true);
+        } else {
+            views.showActions(false);
         }
-
-        views.showActions(mCurrentlyExpandedPosition == position);
         views.updatePhoto();
 
         mCallLogListItemHelper.setPhoneCallDetails(views, details);
@@ -684,6 +685,14 @@
     }
 
     /**
+     * When the list is changing all stored position is no longer valid.
+     */
+    public void invalidatePositions() {
+        mCurrentlyExpandedPosition = RecyclerView.NO_POSITION;
+        mHiddenPosition = RecyclerView.NO_POSITION;
+    }
+
+    /**
      * When the user clicks "undo", the hidden item is unhidden.
      */
     @Override
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
index 07299a2..67b72a5 100644
--- a/src/com/android/dialer/calllog/CallLogFragment.java
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -217,6 +217,7 @@
             // Return false; we did not take ownership of the cursor
             return false;
         }
+        mAdapter.invalidatePositions();
         mAdapter.setLoading(false);
         mAdapter.changeCursor(cursor);
         // This will update the state of the "Clear call log" menu item.