From 0d97f8d19ac7a659f2c87f7fc3c3f94ffe26c02a Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Fri, 4 Dec 2020 15:12:26 -0800 Subject: [PATCH] Disable Database overwrite upon restore Launcher overwrites user's favorites table (icons in WorkSpace) upon new install session from Play Store with install reason being restore. The overwrite was introduced in the attempt to mitigate failed restore session due to asynchronous nature of user profile restore, but it has been causing general instability in backup and restore. Going forward Launcher should be moving away from table overwrite approach, this will be implemented in b/148284747. Bug: 171774227 Test: manual Change-Id: I91221544dbaeb42224ce9f595906b6d9f0e4aa89 --- src/com/android/launcher3/Launcher.java | 4 +--- src/com/android/launcher3/LauncherProvider.java | 6 ------ src/com/android/launcher3/config/FeatureFlags.java | 2 +- src/com/android/launcher3/model/LoaderTask.java | 6 +----- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index ca4f6eec8c..5c13590190 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2343,9 +2343,7 @@ public class Launcher extends StatefulActivity implements Launche if (item.restoreStatus == LauncherAppWidgetInfo.RESTORE_COMPLETED) { // Verify that we own the widget if (appWidgetInfo == null) { - FileLog.e(TAG, "Removing invalid widget: id=" + item.appWidgetId - + ",title=" + item.title - + ",providerName=" + item.providerName.toShortString()); + FileLog.e(TAG, "Removing invalid widget: id=" + item.appWidgetId); getModelWriter().deleteWidgetInfo(item, getAppWidgetHost()); return null; } diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index 6af248cd78..aeed16aa28 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -85,7 +85,6 @@ import java.util.Arrays; import java.util.Locale; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -import java.util.stream.Collectors; public class LauncherProvider extends ContentProvider { private static final String TAG = "LauncherProvider"; @@ -932,11 +931,6 @@ public class LauncherProvider extends ContentProvider { final IntSet validWidgets = IntSet.wrap(LauncherDbUtils.queryIntArray(db, Favorites.TABLE_NAME, Favorites.APPWIDGET_ID, "itemType=" + Favorites.ITEM_TYPE_APPWIDGET, null, null)); - final String allWidgetIds = Arrays.stream(allWidgets).mapToObj(String::valueOf) - .collect(Collectors.joining(",")); - final String validWidgetIds = validWidgets.getArray().toConcatString(); - FileLog.d(TAG, "All widget ids: " + allWidgetIds); - FileLog.d(TAG, "Valid widget ids: " + validWidgetIds); for (int widgetId : allWidgets) { if (!validWidgets.contains(widgetId)) { try { diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 00cb7b972b..8f63c0966d 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -153,7 +153,7 @@ public final class FeatureFlags { "ENABLE_OVERVIEW_CONTENT_PUSH", false, "Show Content Push button in Overview Actions"); public static final BooleanFlag ENABLE_DATABASE_RESTORE = getDebugFlag( - "ENABLE_DATABASE_RESTORE", true, + "ENABLE_DATABASE_RESTORE", false, "Enable database restore when new restore session is created"); public static final BooleanFlag ENABLE_SMARTSPACE_UNIVERSAL = getDebugFlag( diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index 80a684d86e..b108788061 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -745,11 +745,7 @@ public class LoaderTask implements Runnable { + "span=" + appWidgetInfo.spanX + "x" + appWidgetInfo.spanY + " minSpan=" + widgetProviderInfo.minSpanX + "x" - + widgetProviderInfo.minSpanY - + ", appWidgetInfo.provider=" - + appWidgetInfo.providerName.toShortString() - + ", widgetProviderInfo.provider=" - + widgetProviderInfo.provider.toShortString()); + + widgetProviderInfo.minSpanY); continue; } if (!c.isOnWorkspaceOrHotseat()) {