OSDN Git Service

Adding nulls check in various drop-drop events
authorSunny Goyal <sunnygoyal@google.com>
Tue, 22 Jul 2014 16:52:37 +0000 (09:52 -0700)
committerSunny Goyal <sunnygoyal@google.com>
Tue, 22 Jul 2014 19:04:22 +0000 (12:04 -0700)
The original patch by motorola had another check, but the 2nd check
is wrong as in that case, there would be a nullpointer exception just
after the check for the same reason.

issue: 15518908
issue: 15516428

Change-Id: I85c5fb3541b7f837e6c5295e97e45162a4120e39

src/com/android/launcher3/Workspace.java

index 267dde8..58987cd 100644 (file)
@@ -3102,7 +3102,12 @@ public class Workspace extends SmoothPagedView
                     final ItemInfo info = (ItemInfo) cell.getTag();
                     if (hasMovedLayouts) {
                         // Reparent the view
-                        getParentCellLayoutForView(cell).removeView(cell);
+                        CellLayout parentCell = getParentCellLayoutForView(cell);
+                        if (parentCell != null) {
+                            parentCell.removeView(cell);
+                        } else if (LauncherAppState.isDogfoodBuild()) {
+                            throw new NullPointerException("mDragInfo.cell has null parent");
+                        }
                         addInScreen(cell, container, screenId, mTargetCell[0], mTargetCell[1],
                                 info.spanX, info.spanY);
                     }
@@ -3561,6 +3566,12 @@ public class Workspace extends SmoothPagedView
         Rect r = new Rect();
         CellLayout layout = null;
         ItemInfo item = (ItemInfo) d.dragInfo;
+        if (item == null) {
+            if (LauncherAppState.isDogfoodBuild()) {
+                throw new NullPointerException("DragObject has null info");
+            }
+            return;
+        }
 
         // Ensure that we have proper spans for the item that we are dropping
         if (item.spanX < 0 || item.spanY < 0) throw new RuntimeException("Improper spans found");
@@ -4188,6 +4199,8 @@ public class Workspace extends SmoothPagedView
                 CellLayout parentCell = getParentCellLayoutForView(mDragInfo.cell);
                 if (parentCell != null) {
                     parentCell.removeView(mDragInfo.cell);
+                } else if (LauncherAppState.isDogfoodBuild()) {
+                    throw new NullPointerException("mDragInfo.cell has null parent");
                 }
                 if (mDragInfo.cell instanceof DropTarget) {
                     mDragController.removeDropTarget((DropTarget) mDragInfo.cell);