diff --git a/services/core/java/com/android/server/wm/DragDropController.java b/services/core/java/com/android/server/wm/DragDropController.java index d55a649265047..fc370d930cf37 100644 --- a/services/core/java/com/android/server/wm/DragDropController.java +++ b/services/core/java/com/android/server/wm/DragDropController.java @@ -153,9 +153,9 @@ class DragDropController { mDragState.mToken = dragToken; final Display display = displayContent.getDisplay(); - mDragState.register(display); - if (!mService.mInputManager.transferTouchFocus(callingWin.mInputChannel, - mDragState.getInputChannel())) { + if (!mCallback.get().registerInputChannel( + mDragState, display, mService.mInputManager, + callingWin.mInputChannel)) { Slog.e(TAG_WM, "Unable to transfer touch focus"); return null; } diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java index 1935a44cf2430..6bceda5ae3bc2 100644 --- a/services/core/java/com/android/server/wm/WindowManagerInternal.java +++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java @@ -23,12 +23,14 @@ import android.graphics.Rect; import android.graphics.Region; import android.hardware.display.DisplayManagerInternal; import android.os.IBinder; +import android.view.Display; import android.view.IInputFilter; import android.view.IWindow; +import android.view.InputChannel; import android.view.MagnificationSpec; import android.view.WindowInfo; -import android.view.animation.Animation; +import com.android.server.input.InputManagerService; import com.android.server.policy.WindowManagerPolicy; import java.util.List; @@ -153,6 +155,13 @@ public abstract class WindowManagerInternal { * An interface to customize drag and drop behaviors. */ public interface IDragDropCallback { + default boolean registerInputChannel( + DragState state, Display display, InputManagerService service, + InputChannel source) { + state.register(display); + return service.transferTouchFocus(source, state.getInputChannel()); + } + /** * Called when drag operation is starting. */