From 07452c37abf6cabb91c55ccad3e7f08f73e759ee Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Mon, 13 Jun 2016 11:31:03 -0700 Subject: [PATCH] Check for detached view in drag-related APIs Bug: 29253539 Change-Id: I26285404ee15bb17e87ac23c67f7c3c6aaa2d968 --- core/java/android/view/View.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 88605db0408a3..5f6ee09bf2ace 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -20538,6 +20538,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (ViewDebug.DEBUG_DRAG) { Log.d(VIEW_LOG_TAG, "startDragAndDrop: data=" + data + " flags=" + flags); } + if (mAttachInfo == null) { + Log.w(VIEW_LOG_TAG, "startDragAndDrop called on a detached view."); + return false; + } boolean okay = false; Point shadowSize = new Point(); @@ -20614,6 +20618,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (ViewDebug.DEBUG_DRAG) { Log.d(VIEW_LOG_TAG, "cancelDragAndDrop"); } + if (mAttachInfo == null) { + Log.w(VIEW_LOG_TAG, "cancelDragAndDrop called on a detached view."); + return; + } if (mAttachInfo.mDragToken != null) { try { mAttachInfo.mSession.cancelDragAndDrop(mAttachInfo.mDragToken); @@ -20636,6 +20644,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (ViewDebug.DEBUG_DRAG) { Log.d(VIEW_LOG_TAG, "updateDragShadow"); } + if (mAttachInfo == null) { + Log.w(VIEW_LOG_TAG, "updateDragShadow called on a detached view."); + return; + } if (mAttachInfo.mDragToken != null) { try { Canvas canvas = mAttachInfo.mDragSurface.lockCanvas(null);