Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d4e57d4 authored by Steven Ng's avatar Steven Ng Committed by Automerger Merge Worker
Browse files

Merge "Extra logging related to widget removal upon restore" into sc-dev am: 408a73ea

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15098572

Change-Id: I5bf17c3b4344b91fee64eab63bf013ea7ab94550
parents d7cdd6a9 408a73ea
Loading
Loading
Loading
Loading
+23 −3
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@ import com.android.launcher3.model.BgDataModel.Callbacks;
import com.android.launcher3.model.ItemInstallQueue;
import com.android.launcher3.model.ModelUtils;
import com.android.launcher3.model.ModelWriter;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.model.data.AppInfo;
import com.android.launcher3.model.data.FolderInfo;
import com.android.launcher3.model.data.ItemInfo;
@@ -2348,24 +2349,43 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche

        try {
            final LauncherAppWidgetProviderInfo appWidgetInfo;
            String reason = "";

            if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY)) {
                // If the provider is not ready, bind as a pending widget.
                appWidgetInfo = null;
                reason = "the provider not ready.";
            } else if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_NOT_VALID)) {
                // The widget id is not valid. Try to find the widget based on the provider info.
                appWidgetInfo = mAppWidgetManager.findProvider(item.providerName, item.user);
                if (appWidgetInfo == null) {
                    if (WidgetsModel.GO_DISABLE_WIDGETS) {
                        reason = "widgets are disabled on go device.";
                    } else {
                        reason = "WidgetManagerHelper cannot find a provider from provider info.";
                    }
                }
            } else {
                appWidgetInfo = mAppWidgetManager.getLauncherAppWidgetInfo(item.appWidgetId);
                if (appWidgetInfo == null) {
                    if (item.appWidgetId <= LauncherAppWidgetInfo.CUSTOM_WIDGET_ID) {
                        reason = "CustomWidgetManager cannot find provider from that widget id .";
                    } else {
                        reason = "AppWidgetManager cannot find provider for that widget id."
                                + " It could be due to AppWidgetService is not available, or the"
                                + " appWidgetId has not been bound to a the provider yet, or you"
                                + " don't have access to that appWidgetId.";
                    }
                }
            }

            // If the provider is ready, but the width is not yet restored, try to restore it.
            if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY)
                    && (item.restoreStatus != LauncherAppWidgetInfo.RESTORE_COMPLETED)) {
                if (appWidgetInfo == null) {
                    Log.d(TAG, "Removing restored widget: id=" + item.appWidgetId
                            + " belongs to component " + item.providerName
                            + ", as the provider is null");
                    FileLog.d(TAG, "Removing restored widget: id=" + item.appWidgetId
                            + " belongs to component " + item.providerName + " user " + item.user
                            + ", as the provider is null and " + reason);
                    getModelWriter().deleteItemFromDatabase(item);
                    return null;
                }