Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerView.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerView.java |
index 525d1012f8e008cec76371f8536bbc01e3d5e9fa..5a8c9c0df7e227113e632ac53736f7e54a2e2da7 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerView.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageRecyclerView.java |
@@ -12,6 +12,7 @@ |
import android.content.res.Resources; |
import android.graphics.Canvas; |
import android.graphics.Region; |
+import android.support.v4.view.ViewCompat; |
import android.support.v4.view.animation.FastOutLinearInInterpolator; |
import android.support.v4.view.animation.LinearOutSlowInInterpolator; |
import android.support.v7.widget.LinearLayoutManager; |
@@ -541,6 +542,10 @@ public void onAnimationStart(Animator animation) { |
@Override |
public void onAnimationEnd(Animator animation) { |
+ // It is possible that by the time the animation ends, we navigated away from the |
+ // container and it got destroyed. In that case, abort. (https://crbug.com/668945) |
+ if (!ViewCompat.isAttachedToWindow(viewHolder.itemView)) return; |
+ |
dismissItemInternal(viewHolder); |
NewTabPageRecyclerView.this.onItemDismissFinished(viewHolder); |
} |