Loading src/com/android/launcher3/DeleteDropTarget.java +1 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ public class DeleteDropTarget extends ButtonDropTarget { // Remove the item from launcher and the db, we can ignore the containerInfo in this call // because we already remove the drag view from the folder (if the drag originated from // a folder) in Folder.beginDrag() mLauncher.removeItem(view, item, true /* deleteFromDb */); mLauncher.removeItem(view, item, true /* deleteFromDb */, "removed by accessibility drop"); mLauncher.getWorkspace().stripEmptyScreens(); mLauncher.getDragLayer() .announceForAccessibility(getContext().getString(R.string.item_removed)); Loading src/com/android/launcher3/Launcher.java +21 −8 Original line number Diff line number Diff line Loading @@ -1956,6 +1956,19 @@ public class Launcher extends StatefulActivity<LauncherState> * @param deleteFromDb whether or not to delete this item from the db. */ public boolean removeItem(View v, final ItemInfo itemInfo, boolean deleteFromDb) { return removeItem(v, itemInfo, deleteFromDb, null); } /** * Unbinds the view for the specified item, and removes the item and all its children. * * @param v the view being removed. * @param itemInfo the {@link ItemInfo} for this view. * @param deleteFromDb whether or not to delete this item from the db. * @param reason the resaon for removal. */ public boolean removeItem(View v, final ItemInfo itemInfo, boolean deleteFromDb, @Nullable final String reason) { if (itemInfo instanceof WorkspaceItemInfo) { // Remove the shortcut from the folder before removing it from launcher View folderIcon = mWorkspace.getHomescreenIconByItemId(itemInfo.container); Loading @@ -1965,7 +1978,7 @@ public class Launcher extends StatefulActivity<LauncherState> mWorkspace.removeWorkspaceItem(v); } if (deleteFromDb) { getModelWriter().deleteItemFromDatabase(itemInfo); getModelWriter().deleteItemFromDatabase(itemInfo, reason); } } else if (itemInfo instanceof FolderInfo) { final FolderInfo folderInfo = (FolderInfo) itemInfo; Loading @@ -1980,7 +1993,7 @@ public class Launcher extends StatefulActivity<LauncherState> final LauncherAppWidgetInfo widgetInfo = (LauncherAppWidgetInfo) itemInfo; mWorkspace.removeWorkspaceItem(v); if (deleteFromDb) { getModelWriter().deleteWidgetInfo(widgetInfo, getAppWidgetHost()); getModelWriter().deleteWidgetInfo(widgetInfo, getAppWidgetHost(), reason); } } else { return false; Loading Loading @@ -2399,8 +2412,7 @@ public class Launcher extends StatefulActivity<LauncherState> if (FeatureFlags.IS_STUDIO_BUILD) { throw (new RuntimeException(desc)); } else { Log.d(TAG, desc); getModelWriter().deleteItemFromDatabase(item); getModelWriter().deleteItemFromDatabase(item, desc); if (TestProtocol.sDebugTracing) { Log.d(TestProtocol.MISSING_PROMISE_ICON, TAG + "bindItems failed for item=" + item); Loading Loading @@ -2480,7 +2492,8 @@ public class Launcher extends StatefulActivity<LauncherState> if (item.hasOptionFlag(LauncherAppWidgetInfo.OPTION_SEARCH_WIDGET)) { item.providerName = QsbContainerView.getSearchComponentName(this); if (item.providerName == null) { getModelWriter().deleteItemFromDatabase(item); getModelWriter().deleteItemFromDatabase(item, "search widget removed because search component cannot be found"); return null; } } Loading Loading @@ -2531,10 +2544,10 @@ public class Launcher extends StatefulActivity<LauncherState> if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY) && (item.restoreStatus != LauncherAppWidgetInfo.RESTORE_COMPLETED)) { if (appWidgetInfo == null) { FileLog.d(TAG, "Removing restored widget: id=" + item.appWidgetId getModelWriter().deleteItemFromDatabase(item, "Removing restored widget: id=" + item.appWidgetId + " belongs to component " + item.providerName + " user " + item.user + ", as the provider is null and " + removalReason); getModelWriter().deleteItemFromDatabase(item); return null; } Loading Loading @@ -2604,7 +2617,7 @@ public class Launcher extends StatefulActivity<LauncherState> // Verify that we own the widget if (appWidgetInfo == null) { FileLog.e(TAG, "Removing invalid widget: id=" + item.appWidgetId); getModelWriter().deleteWidgetInfo(item, getAppWidgetHost()); getModelWriter().deleteWidgetInfo(item, getAppWidgetHost(), removalReason); return null; } Loading src/com/android/launcher3/LauncherModel.java +3 −1 Original line number Diff line number Diff line Loading @@ -477,7 +477,9 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi } if (!removedIds.isEmpty()) { deleteAndBindComponentsRemoved(ItemInfoMatcher.ofItemIds(removedIds)); deleteAndBindComponentsRemoved( ItemInfoMatcher.ofItemIds(removedIds), "removed because install session failed"); } } }); Loading src/com/android/launcher3/Workspace.java +5 −3 Original line number Diff line number Diff line Loading @@ -3068,7 +3068,8 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> if (info instanceof LauncherAppWidgetInfo) { LauncherAppWidgetInfo appWidgetInfo = (LauncherAppWidgetInfo) info; if (appWidgetInfo.appWidgetId == appWidgetId) { mLauncher.removeItem(view, appWidgetInfo, true); mLauncher.removeItem(view, appWidgetInfo, true, "widget is removed in response to widget remove broadcast"); return true; } } Loading Loading @@ -3318,8 +3319,9 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> * * @param matcher the matcher generated by the caller. */ public void persistRemoveItemsByMatcher(Predicate<ItemInfo> matcher) { mLauncher.getModelWriter().deleteItemsFromDatabase(matcher); public void persistRemoveItemsByMatcher(Predicate<ItemInfo> matcher, @Nullable final String reason) { mLauncher.getModelWriter().deleteItemsFromDatabase(matcher, reason); removeItemsByMatcher(matcher); } Loading src/com/android/launcher3/folder/LauncherDelegate.java +2 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,8 @@ public class LauncherDelegate { } // Remove the folder mLauncher.removeItem(folder.mFolderIcon, info, true /* deleteFromDb */); mLauncher.removeItem(folder.mFolderIcon, info, true /* deleteFromDb */, "folder removed because there's only 1 item in it"); if (folder.mFolderIcon instanceof DropTarget) { folder.mDragController.removeDropTarget((DropTarget) folder.mFolderIcon); } Loading Loading
src/com/android/launcher3/DeleteDropTarget.java +1 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ public class DeleteDropTarget extends ButtonDropTarget { // Remove the item from launcher and the db, we can ignore the containerInfo in this call // because we already remove the drag view from the folder (if the drag originated from // a folder) in Folder.beginDrag() mLauncher.removeItem(view, item, true /* deleteFromDb */); mLauncher.removeItem(view, item, true /* deleteFromDb */, "removed by accessibility drop"); mLauncher.getWorkspace().stripEmptyScreens(); mLauncher.getDragLayer() .announceForAccessibility(getContext().getString(R.string.item_removed)); Loading
src/com/android/launcher3/Launcher.java +21 −8 Original line number Diff line number Diff line Loading @@ -1956,6 +1956,19 @@ public class Launcher extends StatefulActivity<LauncherState> * @param deleteFromDb whether or not to delete this item from the db. */ public boolean removeItem(View v, final ItemInfo itemInfo, boolean deleteFromDb) { return removeItem(v, itemInfo, deleteFromDb, null); } /** * Unbinds the view for the specified item, and removes the item and all its children. * * @param v the view being removed. * @param itemInfo the {@link ItemInfo} for this view. * @param deleteFromDb whether or not to delete this item from the db. * @param reason the resaon for removal. */ public boolean removeItem(View v, final ItemInfo itemInfo, boolean deleteFromDb, @Nullable final String reason) { if (itemInfo instanceof WorkspaceItemInfo) { // Remove the shortcut from the folder before removing it from launcher View folderIcon = mWorkspace.getHomescreenIconByItemId(itemInfo.container); Loading @@ -1965,7 +1978,7 @@ public class Launcher extends StatefulActivity<LauncherState> mWorkspace.removeWorkspaceItem(v); } if (deleteFromDb) { getModelWriter().deleteItemFromDatabase(itemInfo); getModelWriter().deleteItemFromDatabase(itemInfo, reason); } } else if (itemInfo instanceof FolderInfo) { final FolderInfo folderInfo = (FolderInfo) itemInfo; Loading @@ -1980,7 +1993,7 @@ public class Launcher extends StatefulActivity<LauncherState> final LauncherAppWidgetInfo widgetInfo = (LauncherAppWidgetInfo) itemInfo; mWorkspace.removeWorkspaceItem(v); if (deleteFromDb) { getModelWriter().deleteWidgetInfo(widgetInfo, getAppWidgetHost()); getModelWriter().deleteWidgetInfo(widgetInfo, getAppWidgetHost(), reason); } } else { return false; Loading Loading @@ -2399,8 +2412,7 @@ public class Launcher extends StatefulActivity<LauncherState> if (FeatureFlags.IS_STUDIO_BUILD) { throw (new RuntimeException(desc)); } else { Log.d(TAG, desc); getModelWriter().deleteItemFromDatabase(item); getModelWriter().deleteItemFromDatabase(item, desc); if (TestProtocol.sDebugTracing) { Log.d(TestProtocol.MISSING_PROMISE_ICON, TAG + "bindItems failed for item=" + item); Loading Loading @@ -2480,7 +2492,8 @@ public class Launcher extends StatefulActivity<LauncherState> if (item.hasOptionFlag(LauncherAppWidgetInfo.OPTION_SEARCH_WIDGET)) { item.providerName = QsbContainerView.getSearchComponentName(this); if (item.providerName == null) { getModelWriter().deleteItemFromDatabase(item); getModelWriter().deleteItemFromDatabase(item, "search widget removed because search component cannot be found"); return null; } } Loading Loading @@ -2531,10 +2544,10 @@ public class Launcher extends StatefulActivity<LauncherState> if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY) && (item.restoreStatus != LauncherAppWidgetInfo.RESTORE_COMPLETED)) { if (appWidgetInfo == null) { FileLog.d(TAG, "Removing restored widget: id=" + item.appWidgetId getModelWriter().deleteItemFromDatabase(item, "Removing restored widget: id=" + item.appWidgetId + " belongs to component " + item.providerName + " user " + item.user + ", as the provider is null and " + removalReason); getModelWriter().deleteItemFromDatabase(item); return null; } Loading Loading @@ -2604,7 +2617,7 @@ public class Launcher extends StatefulActivity<LauncherState> // Verify that we own the widget if (appWidgetInfo == null) { FileLog.e(TAG, "Removing invalid widget: id=" + item.appWidgetId); getModelWriter().deleteWidgetInfo(item, getAppWidgetHost()); getModelWriter().deleteWidgetInfo(item, getAppWidgetHost(), removalReason); return null; } Loading
src/com/android/launcher3/LauncherModel.java +3 −1 Original line number Diff line number Diff line Loading @@ -477,7 +477,9 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi } if (!removedIds.isEmpty()) { deleteAndBindComponentsRemoved(ItemInfoMatcher.ofItemIds(removedIds)); deleteAndBindComponentsRemoved( ItemInfoMatcher.ofItemIds(removedIds), "removed because install session failed"); } } }); Loading
src/com/android/launcher3/Workspace.java +5 −3 Original line number Diff line number Diff line Loading @@ -3068,7 +3068,8 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> if (info instanceof LauncherAppWidgetInfo) { LauncherAppWidgetInfo appWidgetInfo = (LauncherAppWidgetInfo) info; if (appWidgetInfo.appWidgetId == appWidgetId) { mLauncher.removeItem(view, appWidgetInfo, true); mLauncher.removeItem(view, appWidgetInfo, true, "widget is removed in response to widget remove broadcast"); return true; } } Loading Loading @@ -3318,8 +3319,9 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T> * * @param matcher the matcher generated by the caller. */ public void persistRemoveItemsByMatcher(Predicate<ItemInfo> matcher) { mLauncher.getModelWriter().deleteItemsFromDatabase(matcher); public void persistRemoveItemsByMatcher(Predicate<ItemInfo> matcher, @Nullable final String reason) { mLauncher.getModelWriter().deleteItemsFromDatabase(matcher, reason); removeItemsByMatcher(matcher); } Loading
src/com/android/launcher3/folder/LauncherDelegate.java +2 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,8 @@ public class LauncherDelegate { } // Remove the folder mLauncher.removeItem(folder.mFolderIcon, info, true /* deleteFromDb */); mLauncher.removeItem(folder.mFolderIcon, info, true /* deleteFromDb */, "folder removed because there's only 1 item in it"); if (folder.mFolderIcon instanceof DropTarget) { folder.mDragController.removeDropTarget((DropTarget) folder.mFolderIcon); } Loading