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

Commit f39f351a authored by Pinyao Ting's avatar Pinyao Ting
Browse files

fix the issue widget id can be wrong after restore

Bug: 171774227
Test: manual testing
1. randomly add/remove widgets to workspace
2. create a backup (Settings > System > Backup)
3. reset the device
4. restore from the backup
5. verify all of the widgets are restored properly

Change-Id: Id65e474dd9349aca715d7e6b88f8d58bc63066ae
parent 8f48f230
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -86,13 +86,12 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
            long mainProfileId = UserCache.INSTANCE.get(context)
                    .getSerialNumberForUser(myUserHandle());
            String oldWidgetId = Integer.toString(oldWidgetIds[i]);
            int result = new ContentWriter(context, new ContentWriter.CommitParams(
                    "appWidgetId=? and (restored & 1) = 1 and profileId=?",
                    new String[] { oldWidgetId, Long.toString(mainProfileId) }))
            final String where = "appWidgetId=? and (restored & 1) = 1 and profileId=?";
            final String[] args = new String[] { oldWidgetId, Long.toString(mainProfileId) };
            int result = new ContentWriter(context, new ContentWriter.CommitParams(where, args))
                    .put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i])
                    .put(LauncherSettings.Favorites.RESTORED, state)
                    .commit();

            if (result == 0) {
                Cursor cursor = cr.query(Favorites.CONTENT_URI,
                        new String[] {Favorites.APPWIDGET_ID},
@@ -106,6 +105,11 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
                    cursor.close();
                }
            }
            // attempt to update widget id in backup table as well
            new ContentWriter(context, ContentWriter.CommitParams.backupCommitParams(where, args))
                    .put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i])
                    .put(LauncherSettings.Favorites.RESTORED, state)
                    .commit();
        }

        LauncherAppState app = LauncherAppState.getInstanceNoCreate();
+6 −0
Original line number Diff line number Diff line
@@ -120,6 +120,12 @@ public class LauncherSettings {
        public static final Uri CONTENT_URI = Uri.parse("content://"
                + LauncherProvider.AUTHORITY + "/" + TABLE_NAME);

        /**
         * The content:// style URL for "favorites_bakup" table
         */
        public static final Uri BACKUP_CONTENT_URI = Uri.parse("content://"
                + LauncherProvider.AUTHORITY + "/" + BACKUP_TABLE_NAME);

        /**
         * The content:// style URL for "favorites_preview" table
         */
+15 −3
Original line number Diff line number Diff line
@@ -113,14 +113,26 @@ public class ContentWriter {

    public static final class CommitParams {

        final Uri mUri = LauncherSettings.Favorites.CONTENT_URI;
        String mWhere;
        String[] mSelectionArgs;
        final Uri mUri;
        final String mWhere;
        final String[] mSelectionArgs;

        public CommitParams(String where, String[] selectionArgs) {
            this(LauncherSettings.Favorites.CONTENT_URI, where, selectionArgs);
        }

        private CommitParams(Uri uri, String where, String[] selectionArgs) {
            mUri = uri;
            mWhere = where;
            mSelectionArgs = selectionArgs;
        }

        /**
         * Creates commit params for backup table.
         */
        public static CommitParams backupCommitParams(String where, String[] selectionArgs) {
            return new CommitParams(
                    LauncherSettings.Favorites.BACKUP_CONTENT_URI, where, selectionArgs);
        }
    }
}