Fix drag bug.

Previous assumption -- that the drag window was defined at time of
DragState construction -- was false. The window, and hence the
Display, is not known until performDrag. This change delays assigning
DragState.mDisplayContent until the window/Display is known.

Fixes bug 7028203.

Change-Id: I5799005652c484ff0c45ab340ce3b9e4b784883e
diff --git a/services/java/com/android/server/wm/DragState.java b/services/java/com/android/server/wm/DragState.java
index 26ea7c1..3fcf680 100644
--- a/services/java/com/android/server/wm/DragState.java
+++ b/services/java/com/android/server/wm/DragState.java
@@ -71,12 +71,6 @@
         mFlags = flags;
         mLocalWin = localWin;
         mNotifiedWindows = new ArrayList<WindowState>();
-        WindowState win = service.mWindowMap.get(token);
-        if (win != null) {
-            mDisplayContent = win.mDisplayContent;
-        } else {
-            Slog.e(WindowManagerService.TAG, "No window associated with token");
-        }
     }
 
     void reset() {
@@ -92,7 +86,11 @@
         mNotifiedWindows = null;
     }
 
-    void register() {
+    /**
+     * @param displayContent The display parameters associated with the window being dragged.
+     */
+    void register(DisplayContent displayContent) {
+        mDisplayContent = displayContent;
         if (WindowManagerService.DEBUG_DRAG) Slog.d(WindowManagerService.TAG, "registering drag input channel");
         if (mClientChannel != null) {
             Slog.e(WindowManagerService.TAG, "Duplicate register of drag input channel");