diff options
author | Michael Jurka <mikejurka@google.com> | 2012-06-25 14:49:02 -0700 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2012-06-25 15:04:47 -0700 |
commit | 816474f06b9bea400f4511fa35b63a7f18a54c54 (patch) | |
tree | 13a22393113113b7a7fceff0e65eec43cd9084ca /src | |
parent | 8bd65f5c57b8bae2fb82256e89ac30ddc0769319 (diff) | |
download | android_packages_apps_Trebuchet-816474f06b9bea400f4511fa35b63a7f18a54c54.tar.gz android_packages_apps_Trebuchet-816474f06b9bea400f4511fa35b63a7f18a54c54.tar.bz2 android_packages_apps_Trebuchet-816474f06b9bea400f4511fa35b63a7f18a54c54.zip |
Adding debug code for LauncherModel crash
Change-Id: I9b8c053707cd5714874006c249651a69378569d2
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/BubbleTextView.java | 8 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherModel.java | 29 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/com/android/launcher2/BubbleTextView.java b/src/com/android/launcher2/BubbleTextView.java index ddc4b9fa0..c5bed1694 100644 --- a/src/com/android/launcher2/BubbleTextView.java +++ b/src/com/android/launcher2/BubbleTextView.java @@ -111,6 +111,14 @@ public class BubbleTextView extends TextView { } @Override + public void setTag(Object tag) { + if (tag != null) { + LauncherModel.checkItemInfo((ItemInfo) tag); + } + super.setTag(tag); + } + + @Override protected void drawableStateChanged() { if (isPressed()) { // In this case, we have already created the pressed outline on ACTION_DOWN, diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index bada5cbb2..520d3f4bc 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -208,6 +208,33 @@ public class LauncherModel extends BroadcastReceiver { } } + static void checkItemInfo(final ItemInfo item) { + final StackTraceElement[] stackTrace = new Throwable().getStackTrace(); + final long itemId = item.id; + Runnable r = new Runnable() { + public void run() { + ItemInfo modelItem = sItemsIdMap.get(itemId); + if (item != modelItem) { + // the modelItem needs to match up perfectly with item if our model is to be + // consistent with the database-- for now, just require modelItem == item + String msg = "item: " + ((item != null) ? item.toString() : "null") + + "modelItem: " + ((modelItem != null) ? modelItem.toString() : "null") + + "Error: ItemInfo passed to checkItemInfo doesn't match original"; + RuntimeException e = new RuntimeException(msg); + e.setStackTrace(stackTrace); + throw e; + } + } + }; + + if (sWorkerThread.getThreadId() == Process.myTid()) { + r.run(); + } else { + sWorker.post(r); + } + + } + static void updateItemInDatabaseHelper(Context context, final ContentValues values, final ItemInfo item, final String callingFunction) { final long itemId = item.id; @@ -304,7 +331,7 @@ public class LauncherModel extends BroadcastReceiver { values.put(LauncherSettings.Favorites.SPANY, item.spanY); values.put(LauncherSettings.Favorites.SCREEN, item.screen); - updateItemInDatabaseHelper(context, values, item, "moveItemInDatabase"); + updateItemInDatabaseHelper(context, values, item, "modifyItemInDatabase"); } /** |