Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0328b9c0 authored by Riddle Hsu's avatar Riddle Hsu
Browse files

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
parent dd7b69d3
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -37,8 +37,13 @@ public final class SurfaceSession {
    }

    public SurfaceSession(Surface root) {
        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 ... */
    @Override
+4 −0
Original line number Diff line number Diff line
@@ -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);