Check for valid surface when starting to drag
Also protect creating SurfaceSession with root surface. Change-Id: I3649f160e85367169710b36faf26c96bef0f71fe Fix: 110922266 Test: atest CtsViewTestCases:android.view.cts.DragDropTest
This commit is contained in:
@@ -37,7 +37,12 @@ public final class SurfaceSession {
|
||||
}
|
||||
|
||||
public SurfaceSession(Surface root) {
|
||||
mNativeClient = nativeCreateScoped(root.mNativeObject);
|
||||
synchronized (root.mLock) {
|
||||
if (root.mNativeObject == 0) {
|
||||
throw new IllegalStateException("Surface is not initialized or has been released");
|
||||
}
|
||||
mNativeClient = nativeCreateScoped(root.mNativeObject);
|
||||
}
|
||||
}
|
||||
|
||||
/* no user serviceable parts here ... */
|
||||
|
||||
@@ -23993,6 +23993,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
Log.w(VIEW_LOG_TAG, "startDragAndDrop called on a detached view.");
|
||||
return false;
|
||||
}
|
||||
if (!mAttachInfo.mViewRootImpl.mSurface.isValid()) {
|
||||
Log.w(VIEW_LOG_TAG, "startDragAndDrop called with an invalid surface.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (data != null) {
|
||||
data.prepareToLeaveProcess((flags & View.DRAG_FLAG_GLOBAL) != 0);
|
||||
|
||||
Reference in New Issue
Block a user