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

Commit eab9f007 authored by Sihua Ma's avatar Sihua Ma
Browse files

Add logs for deleting widget during restoration

Test: N/A
Bug: 234700507
Change-Id: I4161ddd91675950f5f93a62b3c6b388643ec692f
parent e04071e1
Loading
Loading
Loading
Loading
+26 −8
Original line number Original line Diff line number Diff line
@@ -6,7 +6,6 @@ import android.appwidget.AppWidgetHost;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo;
import android.appwidget.AppWidgetProviderInfo;
import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.database.Cursor;
import android.database.Cursor;
@@ -21,8 +20,10 @@ import com.android.launcher3.model.LoaderTask;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.provider.LauncherDbUtils;
import com.android.launcher3.provider.RestoreDbTask;
import com.android.launcher3.provider.RestoreDbTask;
import com.android.launcher3.util.ContentWriter;
import com.android.launcher3.util.ContentWriter;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.widget.LauncherWidgetHolder;
import com.android.launcher3.widget.LauncherWidgetHolder;


public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
@@ -69,9 +70,24 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
            }
            }
            return;
            return;
        }
        }
        final ContentResolver cr = context.getContentResolver();

        final AppWidgetManager widgets = AppWidgetManager.getInstance(context);
        final AppWidgetManager widgets = AppWidgetManager.getInstance(context);


        Log.d(TAG, "restoreAppWidgetIds: "
                + "oldWidgetIds=" + IntArray.wrap(oldWidgetIds).toConcatString()
                + ", newWidgetIds=" + IntArray.wrap(newWidgetIds).toConcatString());

        try {
            IntArray result = LauncherDbUtils.queryIntArray(false, helper.getReadableDatabase(),
                    Favorites.TABLE_NAME, Favorites.APPWIDGET_ID,
                    Favorites.APPWIDGET_ID + "!=" + LauncherAppWidgetInfo.NO_ID, null, null);
            // TODO(b/234700507): Remove the logs after the bug is fixed
            Log.d(TAG, "restoreAppWidgetIds: all widget ids in database: "
                    + result.toConcatString());
        } catch (Exception ex) {
            Log.e(TAG, "Getting widget ids from the database failed", ex);
        }

        for (int i = 0; i < oldWidgetIds.length; i++) {
        for (int i = 0; i < oldWidgetIds.length; i++) {
            Log.i(TAG, "Widget state restore id " + oldWidgetIds[i] + " => " + newWidgetIds[i]);
            Log.i(TAG, "Widget state restore id " + oldWidgetIds[i] + " => " + newWidgetIds[i]);


@@ -97,17 +113,19 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
                    .put(LauncherSettings.Favorites.RESTORED, state)
                    .put(LauncherSettings.Favorites.RESTORED, state)
                    .commit();
                    .commit();
            if (result == 0) {
            if (result == 0) {
                Cursor cursor = helper.getWritableDatabase().query(
                // TODO(b/234700507): Remove the logs after the bug is fixed
                Log.e(TAG, "restoreAppWidgetIds: remapping failed since the widget is not in"
                        + " the database anymore");
                try (Cursor cursor = helper.getWritableDatabase().query(
                        Favorites.TABLE_NAME,
                        Favorites.TABLE_NAME,
                        new String[]{Favorites.APPWIDGET_ID},
                        new String[]{Favorites.APPWIDGET_ID},
                        "appWidgetId=?", new String[] { oldWidgetId }, null, null, null);
                        "appWidgetId=?", new String[]{oldWidgetId}, null, null, null)) {
                try {
                    if (!cursor.moveToFirst()) {
                    if (!cursor.moveToFirst()) {
                        // The widget no long exists.
                        // The widget no long exists.
                        Log.d(TAG, "Deleting widgetId: " + newWidgetIds[i] + " with old id: "
                                + oldWidgetId);
                        host.deleteAppWidgetId(newWidgetIds[i]);
                        host.deleteAppWidgetId(newWidgetIds[i]);
                    }
                    }
                } finally {
                    cursor.close();
                }
                }
            }
            }
        }
        }