Loading core/java/android/view/View.java +38 −29 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.view; import static android.content.res.Resources.ID_NULL; import static android.os.Trace.TRACE_TAG_APP; import static android.os.Trace.TRACE_TAG_VIEW; import static android.service.autofill.Flags.FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION; import static android.view.ContentInfo.SOURCE_DRAG_AND_DROP; import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH; Loading Loading @@ -16356,20 +16357,20 @@ public class View implements Drawable.Callback, KeyEvent.Callback, ListenerInfo li = mListenerInfo; if (li != null && li.mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED) { try { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "View.onTouchListener#onTouch"); Trace.traceBegin(TRACE_TAG_VIEW, "View.onTouchListener#onTouch"); handled = li.mOnTouchListener.onTouch(this, event); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIEW); Trace.traceEnd(TRACE_TAG_VIEW); } } if (handled) { return true; } try { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "View#onTouchEvent"); Trace.traceBegin(TRACE_TAG_VIEW, "View#onTouchEvent"); return onTouchEvent(event); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIEW); Trace.traceEnd(TRACE_TAG_VIEW); } } Loading Loading @@ -23846,14 +23847,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback, public void buildDrawingCache(boolean autoScale) { if ((mPrivateFlags & PFLAG_DRAWING_CACHE_VALID) == 0 || (autoScale ? mDrawingCache == null : mUnscaledDrawingCache == null)) { if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) { Trace.traceBegin(Trace.TRACE_TAG_VIEW, if (Trace.isTagEnabled(TRACE_TAG_VIEW)) { Trace.traceBegin(TRACE_TAG_VIEW, "buildDrawingCache/SW Layer for " + getClass().getSimpleName()); } try { buildDrawingCacheImpl(autoScale); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIEW); Trace.traceEnd(TRACE_TAG_VIEW); } } } Loading Loading @@ -28980,6 +28981,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, surface.copyFrom(surfaceControl); IBinder token = null; try { Trace.traceBegin(TRACE_TAG_VIEW, "startDragAndDrop#drawDragShadow"); final Canvas canvas = isHardwareAccelerated() ? surface.lockHardwareCanvas() : surface.lockCanvas(null); Loading @@ -28988,8 +28990,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, shadowBuilder.onDrawShadow(canvas); } finally { surface.unlockCanvasAndPost(canvas); Trace.traceEnd(TRACE_TAG_VIEW); } Trace.traceBegin(TRACE_TAG_VIEW, "startDragAndDrop#performDrag"); try { token = mAttachInfo.mSession.performDrag(mAttachInfo.mWindow, flags, surfaceControl, root.getLastTouchSource(), root.getLastTouchDeviceId(), root.getLastTouchPointerId(), lastTouchPoint.x, lastTouchPoint.y, Loading @@ -29002,6 +29007,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mAttachInfo.mDragSurface.release(); } if (mAttachInfo.mDragData != null) { // Clean up previous drag data intents View.cleanUpPendingIntents(mAttachInfo.mDragData); } mAttachInfo.mDragSurface = surface; Loading @@ -29015,6 +29021,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } } return token != null; } finally { Trace.traceEnd(TRACE_TAG_VIEW); } } catch (Exception e) { Log.e(VIEW_LOG_TAG, "Unable to initiate drag", e); return false; core/java/android/view/ViewRootImpl.java +14 −1 Original line number Diff line number Diff line Loading @@ -21,8 +21,10 @@ import static android.content.pm.ActivityInfo.OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS; import static android.graphics.HardwareRenderer.SYNC_CONTEXT_IS_STOPPED; import static android.graphics.HardwareRenderer.SYNC_LOST_SURFACE_REWARD_IF_FOUND; import static android.os.IInputConstants.INVALID_INPUT_EVENT_ID; import static android.os.Trace.TRACE_TAG_VIEW; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static android.view.DragEvent.ACTION_DRAG_LOCATION; import static android.view.InputDevice.SOURCE_CLASS_NONE; import static android.view.InsetsSource.ID_IME; import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH; Loading Loading @@ -6473,7 +6475,18 @@ public final class ViewRootImpl implements ViewParent, DragEvent event = (DragEvent) msg.obj; // only present when this app called startDrag() event.mLocalState = mLocalDragState; final boolean traceDragEvent = event.mAction != ACTION_DRAG_LOCATION; try { if (traceDragEvent) { Trace.traceBegin(TRACE_TAG_VIEW, "c#" + DragEvent.actionToString(event.mAction)); } handleDragEvent(event); } finally { if (traceDragEvent) { Trace.traceEnd(TRACE_TAG_VIEW); } } } break; case MSG_DISPATCH_SYSTEM_UI_VISIBILITY: { handleDispatchSystemUiVisibilityChanged(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/GlobalDragListener.kt +10 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.wm.shell.draganddrop import android.app.ActivityManager import android.os.RemoteException import android.os.Trace import android.os.Trace.TRACE_TAG_WINDOW_MANAGER import android.util.Log import android.view.DragEvent import android.view.IWindowManager Loading @@ -27,6 +29,7 @@ import com.android.internal.protolog.common.ProtoLog import com.android.wm.shell.common.ShellExecutor import com.android.wm.shell.protolog.ShellProtoLogGroup import java.util.function.Consumer import kotlin.random.Random /** * Manages the listener and callbacks for unhandled global drags. Loading Loading @@ -101,10 +104,15 @@ class GlobalDragListener( @VisibleForTesting fun onUnhandledDrop(dragEvent: DragEvent, wmCallback: IUnhandledDragCallback) { val traceCookie = Random.nextInt() Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, "GlobalDragListener.onUnhandledDrop", traceCookie); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_DRAG_AND_DROP, "onUnhandledDrop: %s", dragEvent) if (callback == null) { wmCallback.notifyUnhandledDropComplete(false) Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, "GlobalDragListener.onUnhandledDrop", traceCookie); return } Loading @@ -112,6 +120,8 @@ class GlobalDragListener( ProtoLog.v(ShellProtoLogGroup.WM_SHELL_DRAG_AND_DROP, "Notifying onUnhandledDrop complete: %b", it) wmCallback.notifyUnhandledDropComplete(it) Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, "GlobalDragListener.onUnhandledDrop", traceCookie); } } Loading services/core/java/com/android/server/wm/DragDropController.java +8 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.wm; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.view.View.DRAG_FLAG_GLOBAL; import static android.view.View.DRAG_FLAG_GLOBAL_SAME_APPLICATION; import static android.view.View.DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG; Loading @@ -36,6 +37,7 @@ import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.os.Trace; import android.util.Slog; import android.view.Display; import android.view.DragEvent; Loading @@ -52,6 +54,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.server.wm.WindowManagerInternal.IDragDropCallback; import java.util.Objects; import java.util.Random; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; Loading Loading @@ -386,6 +389,9 @@ class DragDropController { + "(listener=" + mGlobalDragListener + ", flags=" + mDragState.mFlags + ")"); return false; } final int traceCookie = new Random().nextInt(); Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, "DragDropController#notifyUnhandledDrop", traceCookie); if (DEBUG_DRAG) Slog.d(TAG_WM, "Sending DROP to unhandled listener (" + reason + ")"); try { // Schedule timeout for the unhandled drag listener to call back Loading @@ -396,6 +402,8 @@ class DragDropController { if (DEBUG_DRAG) Slog.d(TAG_WM, "Unhandled listener finished handling DROP"); synchronized (mService.mGlobalLock) { onUnhandledDropCallback(consumedByListener); Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, "DragDropController#notifyUnhandledDrop", traceCookie); } } }); Loading services/core/java/com/android/server/wm/DragState.java +20 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.content.ClipDescription.MIMETYPE_APPLICATION_ACTIVITY; import static android.content.ClipDescription.MIMETYPE_APPLICATION_SHORTCUT; import static android.content.ClipDescription.MIMETYPE_APPLICATION_TASK; import static android.os.InputConstants.DEFAULT_DISPATCHING_TIMEOUT_MILLIS; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ORIENTATION; Loading Loading @@ -49,6 +50,7 @@ import android.os.Binder; import android.os.Build; import android.os.IBinder; import android.os.RemoteException; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.util.Slog; Loading Loading @@ -258,6 +260,7 @@ class DragState { } mNotifiedWindows.clear(); mDragInProgress = false; Trace.instant(TRACE_TAG_WINDOW_MANAGER, "DragDropController#DRAG_ENDED"); } // Take the cursor back if it has been changed. Loading Loading @@ -343,6 +346,18 @@ class DragState { if (mAnimator != null) { return false; } try { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "DragDropController#DROP"); return reportDropWindowLockInner(token, x, y); } finally { Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } } private boolean reportDropWindowLockInner(IBinder token, float x, float y) { if (mAnimator != null) { return false; } final WindowState touchedWin = mService.mInputToWindowMap.get(token); final DragEvent unhandledDropEvent = createDropEvent(x, y, null /* touchedWin */, Loading @@ -355,10 +370,12 @@ class DragState { return true; } Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "DragDropController#noWindow"); // "drop" outside a valid window -- no recipient to apply a timeout to, and we can send // the drag-ended message immediately. endDragLocked(false /* consumed */, false /* relinquishDragSurfaceToDropTarget */); if (DEBUG_DRAG) Slog.d(TAG_WM, "Drop outside a valid window " + touchedWin); Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); return false; } Loading @@ -367,6 +384,7 @@ class DragState { final IBinder clientToken = touchedWin.mClient.asBinder(); final DragEvent event = createDropEvent(x, y, touchedWin, false /* includePrivateInfo */); try { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "DragDropController#dispatchDrop"); touchedWin.mClient.dispatchDragEvent(event); // 5 second timeout for this window to respond to the drop Loading @@ -380,6 +398,7 @@ class DragState { if (MY_PID != touchedWin.mSession.mPid) { event.recycle(); } Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } mToken = clientToken; mUnhandledDropEvent = unhandledDropEvent; Loading Loading @@ -471,6 +490,7 @@ class DragState { /* call out to each visible window/session informing it about the drag */ void broadcastDragStartedLocked(final float touchX, final float touchY) { Trace.instant(TRACE_TAG_WINDOW_MANAGER, "DragDropController#DRAG_STARTED"); mOriginalX = mCurrentX = touchX; mOriginalY = mCurrentY = touchY; Loading Loading
core/java/android/view/View.java +38 −29 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.view; import static android.content.res.Resources.ID_NULL; import static android.os.Trace.TRACE_TAG_APP; import static android.os.Trace.TRACE_TAG_VIEW; import static android.service.autofill.Flags.FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION; import static android.view.ContentInfo.SOURCE_DRAG_AND_DROP; import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH; Loading Loading @@ -16356,20 +16357,20 @@ public class View implements Drawable.Callback, KeyEvent.Callback, ListenerInfo li = mListenerInfo; if (li != null && li.mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED) { try { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "View.onTouchListener#onTouch"); Trace.traceBegin(TRACE_TAG_VIEW, "View.onTouchListener#onTouch"); handled = li.mOnTouchListener.onTouch(this, event); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIEW); Trace.traceEnd(TRACE_TAG_VIEW); } } if (handled) { return true; } try { Trace.traceBegin(Trace.TRACE_TAG_VIEW, "View#onTouchEvent"); Trace.traceBegin(TRACE_TAG_VIEW, "View#onTouchEvent"); return onTouchEvent(event); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIEW); Trace.traceEnd(TRACE_TAG_VIEW); } } Loading Loading @@ -23846,14 +23847,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback, public void buildDrawingCache(boolean autoScale) { if ((mPrivateFlags & PFLAG_DRAWING_CACHE_VALID) == 0 || (autoScale ? mDrawingCache == null : mUnscaledDrawingCache == null)) { if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) { Trace.traceBegin(Trace.TRACE_TAG_VIEW, if (Trace.isTagEnabled(TRACE_TAG_VIEW)) { Trace.traceBegin(TRACE_TAG_VIEW, "buildDrawingCache/SW Layer for " + getClass().getSimpleName()); } try { buildDrawingCacheImpl(autoScale); } finally { Trace.traceEnd(Trace.TRACE_TAG_VIEW); Trace.traceEnd(TRACE_TAG_VIEW); } } } Loading Loading @@ -28980,6 +28981,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, surface.copyFrom(surfaceControl); IBinder token = null; try { Trace.traceBegin(TRACE_TAG_VIEW, "startDragAndDrop#drawDragShadow"); final Canvas canvas = isHardwareAccelerated() ? surface.lockHardwareCanvas() : surface.lockCanvas(null); Loading @@ -28988,8 +28990,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, shadowBuilder.onDrawShadow(canvas); } finally { surface.unlockCanvasAndPost(canvas); Trace.traceEnd(TRACE_TAG_VIEW); } Trace.traceBegin(TRACE_TAG_VIEW, "startDragAndDrop#performDrag"); try { token = mAttachInfo.mSession.performDrag(mAttachInfo.mWindow, flags, surfaceControl, root.getLastTouchSource(), root.getLastTouchDeviceId(), root.getLastTouchPointerId(), lastTouchPoint.x, lastTouchPoint.y, Loading @@ -29002,6 +29007,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mAttachInfo.mDragSurface.release(); } if (mAttachInfo.mDragData != null) { // Clean up previous drag data intents View.cleanUpPendingIntents(mAttachInfo.mDragData); } mAttachInfo.mDragSurface = surface; Loading @@ -29015,6 +29021,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } } return token != null; } finally { Trace.traceEnd(TRACE_TAG_VIEW); } } catch (Exception e) { Log.e(VIEW_LOG_TAG, "Unable to initiate drag", e); return false;
core/java/android/view/ViewRootImpl.java +14 −1 Original line number Diff line number Diff line Loading @@ -21,8 +21,10 @@ import static android.content.pm.ActivityInfo.OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS; import static android.graphics.HardwareRenderer.SYNC_CONTEXT_IS_STOPPED; import static android.graphics.HardwareRenderer.SYNC_LOST_SURFACE_REWARD_IF_FOUND; import static android.os.IInputConstants.INVALID_INPUT_EVENT_ID; import static android.os.Trace.TRACE_TAG_VIEW; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static android.view.DragEvent.ACTION_DRAG_LOCATION; import static android.view.InputDevice.SOURCE_CLASS_NONE; import static android.view.InsetsSource.ID_IME; import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH; Loading Loading @@ -6473,7 +6475,18 @@ public final class ViewRootImpl implements ViewParent, DragEvent event = (DragEvent) msg.obj; // only present when this app called startDrag() event.mLocalState = mLocalDragState; final boolean traceDragEvent = event.mAction != ACTION_DRAG_LOCATION; try { if (traceDragEvent) { Trace.traceBegin(TRACE_TAG_VIEW, "c#" + DragEvent.actionToString(event.mAction)); } handleDragEvent(event); } finally { if (traceDragEvent) { Trace.traceEnd(TRACE_TAG_VIEW); } } } break; case MSG_DISPATCH_SYSTEM_UI_VISIBILITY: { handleDispatchSystemUiVisibilityChanged(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/GlobalDragListener.kt +10 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.wm.shell.draganddrop import android.app.ActivityManager import android.os.RemoteException import android.os.Trace import android.os.Trace.TRACE_TAG_WINDOW_MANAGER import android.util.Log import android.view.DragEvent import android.view.IWindowManager Loading @@ -27,6 +29,7 @@ import com.android.internal.protolog.common.ProtoLog import com.android.wm.shell.common.ShellExecutor import com.android.wm.shell.protolog.ShellProtoLogGroup import java.util.function.Consumer import kotlin.random.Random /** * Manages the listener and callbacks for unhandled global drags. Loading Loading @@ -101,10 +104,15 @@ class GlobalDragListener( @VisibleForTesting fun onUnhandledDrop(dragEvent: DragEvent, wmCallback: IUnhandledDragCallback) { val traceCookie = Random.nextInt() Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, "GlobalDragListener.onUnhandledDrop", traceCookie); ProtoLog.v(ShellProtoLogGroup.WM_SHELL_DRAG_AND_DROP, "onUnhandledDrop: %s", dragEvent) if (callback == null) { wmCallback.notifyUnhandledDropComplete(false) Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, "GlobalDragListener.onUnhandledDrop", traceCookie); return } Loading @@ -112,6 +120,8 @@ class GlobalDragListener( ProtoLog.v(ShellProtoLogGroup.WM_SHELL_DRAG_AND_DROP, "Notifying onUnhandledDrop complete: %b", it) wmCallback.notifyUnhandledDropComplete(it) Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, "GlobalDragListener.onUnhandledDrop", traceCookie); } } Loading
services/core/java/com/android/server/wm/DragDropController.java +8 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.wm; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.view.View.DRAG_FLAG_GLOBAL; import static android.view.View.DRAG_FLAG_GLOBAL_SAME_APPLICATION; import static android.view.View.DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG; Loading @@ -36,6 +37,7 @@ import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.os.Trace; import android.util.Slog; import android.view.Display; import android.view.DragEvent; Loading @@ -52,6 +54,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.server.wm.WindowManagerInternal.IDragDropCallback; import java.util.Objects; import java.util.Random; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; Loading Loading @@ -386,6 +389,9 @@ class DragDropController { + "(listener=" + mGlobalDragListener + ", flags=" + mDragState.mFlags + ")"); return false; } final int traceCookie = new Random().nextInt(); Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, "DragDropController#notifyUnhandledDrop", traceCookie); if (DEBUG_DRAG) Slog.d(TAG_WM, "Sending DROP to unhandled listener (" + reason + ")"); try { // Schedule timeout for the unhandled drag listener to call back Loading @@ -396,6 +402,8 @@ class DragDropController { if (DEBUG_DRAG) Slog.d(TAG_WM, "Unhandled listener finished handling DROP"); synchronized (mService.mGlobalLock) { onUnhandledDropCallback(consumedByListener); Trace.asyncTraceEnd(TRACE_TAG_WINDOW_MANAGER, "DragDropController#notifyUnhandledDrop", traceCookie); } } }); Loading
services/core/java/com/android/server/wm/DragState.java +20 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static android.content.ClipDescription.MIMETYPE_APPLICATION_ACTIVITY; import static android.content.ClipDescription.MIMETYPE_APPLICATION_SHORTCUT; import static android.content.ClipDescription.MIMETYPE_APPLICATION_TASK; import static android.os.InputConstants.DEFAULT_DISPATCHING_TIMEOUT_MILLIS; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_INTERCEPT_GLOBAL_DRAG_AND_DROP; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ORIENTATION; Loading Loading @@ -49,6 +50,7 @@ import android.os.Binder; import android.os.Build; import android.os.IBinder; import android.os.RemoteException; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.util.Slog; Loading Loading @@ -258,6 +260,7 @@ class DragState { } mNotifiedWindows.clear(); mDragInProgress = false; Trace.instant(TRACE_TAG_WINDOW_MANAGER, "DragDropController#DRAG_ENDED"); } // Take the cursor back if it has been changed. Loading Loading @@ -343,6 +346,18 @@ class DragState { if (mAnimator != null) { return false; } try { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "DragDropController#DROP"); return reportDropWindowLockInner(token, x, y); } finally { Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } } private boolean reportDropWindowLockInner(IBinder token, float x, float y) { if (mAnimator != null) { return false; } final WindowState touchedWin = mService.mInputToWindowMap.get(token); final DragEvent unhandledDropEvent = createDropEvent(x, y, null /* touchedWin */, Loading @@ -355,10 +370,12 @@ class DragState { return true; } Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "DragDropController#noWindow"); // "drop" outside a valid window -- no recipient to apply a timeout to, and we can send // the drag-ended message immediately. endDragLocked(false /* consumed */, false /* relinquishDragSurfaceToDropTarget */); if (DEBUG_DRAG) Slog.d(TAG_WM, "Drop outside a valid window " + touchedWin); Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); return false; } Loading @@ -367,6 +384,7 @@ class DragState { final IBinder clientToken = touchedWin.mClient.asBinder(); final DragEvent event = createDropEvent(x, y, touchedWin, false /* includePrivateInfo */); try { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "DragDropController#dispatchDrop"); touchedWin.mClient.dispatchDragEvent(event); // 5 second timeout for this window to respond to the drop Loading @@ -380,6 +398,7 @@ class DragState { if (MY_PID != touchedWin.mSession.mPid) { event.recycle(); } Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } mToken = clientToken; mUnhandledDropEvent = unhandledDropEvent; Loading Loading @@ -471,6 +490,7 @@ class DragState { /* call out to each visible window/session informing it about the drag */ void broadcastDragStartedLocked(final float touchX, final float touchY) { Trace.instant(TRACE_TAG_WINDOW_MANAGER, "DragDropController#DRAG_STARTED"); mOriginalX = mCurrentX = touchX; mOriginalY = mCurrentY = touchY; Loading