mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 19:38:21 +00:00
Merge "Use app widget host instead of holder to get rid of deleteHost" into tm-qpr-dev am: 713931ec38
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/21408002 Change-Id: I9a4ca72e07649daed35f4c4d4ca8b02caabe07bb Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -2,6 +2,7 @@ package com.android.launcher3;
|
||||
|
||||
import static android.os.Process.myUserHandle;
|
||||
|
||||
import android.appwidget.AppWidgetHost;
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.appwidget.AppWidgetProviderInfo;
|
||||
import android.content.BroadcastReceiver;
|
||||
@@ -51,10 +52,10 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
|
||||
*/
|
||||
@WorkerThread
|
||||
public static void restoreAppWidgetIds(Context context, int[] oldWidgetIds, int[] newWidgetIds,
|
||||
@NonNull LauncherWidgetHolder holder) {
|
||||
@NonNull AppWidgetHost host) {
|
||||
if (WidgetsModel.GO_DISABLE_WIDGETS) {
|
||||
Log.e(TAG, "Skipping widget ID remap as widgets not supported");
|
||||
holder.deleteHost();
|
||||
host.deleteHost();
|
||||
return;
|
||||
}
|
||||
if (!RestoreDbTask.isPending(context)) {
|
||||
@@ -63,7 +64,7 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
|
||||
Log.e(TAG, "Skipping widget ID remap as DB already in use");
|
||||
for (int widgetId : newWidgetIds) {
|
||||
Log.d(TAG, "Deleting widgetId: " + widgetId);
|
||||
holder.deleteAppWidgetId(widgetId);
|
||||
host.deleteAppWidgetId(widgetId);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -100,7 +101,7 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
|
||||
try {
|
||||
if (!cursor.moveToFirst()) {
|
||||
// The widget no long exists.
|
||||
holder.deleteAppWidgetId(newWidgetIds[i]);
|
||||
host.deleteAppWidgetId(newWidgetIds[i]);
|
||||
}
|
||||
} finally {
|
||||
cursor.close();
|
||||
|
||||
@@ -550,39 +550,42 @@ public class LauncherProvider extends ContentProvider {
|
||||
Log.d(TAG, "loading default workspace");
|
||||
|
||||
LauncherWidgetHolder widgetHolder = mOpenHelper.newLauncherWidgetHolder();
|
||||
AutoInstallsLayout loader = createWorkspaceLoaderFromAppRestriction(widgetHolder);
|
||||
if (loader == null) {
|
||||
loader = AutoInstallsLayout.get(getContext(), widgetHolder, mOpenHelper);
|
||||
}
|
||||
if (loader == null) {
|
||||
final Partner partner = Partner.get(getContext().getPackageManager());
|
||||
if (partner != null) {
|
||||
int workspaceResId = partner.getXmlResId(RES_PARTNER_DEFAULT_LAYOUT);
|
||||
if (workspaceResId != 0) {
|
||||
loader = new DefaultLayoutParser(getContext(), widgetHolder,
|
||||
mOpenHelper, partner.getResources(), workspaceResId);
|
||||
try {
|
||||
AutoInstallsLayout loader = createWorkspaceLoaderFromAppRestriction(widgetHolder);
|
||||
if (loader == null) {
|
||||
loader = AutoInstallsLayout.get(getContext(), widgetHolder, mOpenHelper);
|
||||
}
|
||||
if (loader == null) {
|
||||
final Partner partner = Partner.get(getContext().getPackageManager());
|
||||
if (partner != null) {
|
||||
int workspaceResId = partner.getXmlResId(RES_PARTNER_DEFAULT_LAYOUT);
|
||||
if (workspaceResId != 0) {
|
||||
loader = new DefaultLayoutParser(getContext(), widgetHolder,
|
||||
mOpenHelper, partner.getResources(), workspaceResId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final boolean usingExternallyProvidedLayout = loader != null;
|
||||
if (loader == null) {
|
||||
loader = getDefaultLayoutParser(widgetHolder);
|
||||
}
|
||||
final boolean usingExternallyProvidedLayout = loader != null;
|
||||
if (loader == null) {
|
||||
loader = getDefaultLayoutParser(widgetHolder);
|
||||
}
|
||||
|
||||
// There might be some partially restored DB items, due to buggy restore logic in
|
||||
// previous versions of launcher.
|
||||
mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
|
||||
// Populate favorites table with initial favorites
|
||||
if ((mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), loader) <= 0)
|
||||
&& usingExternallyProvidedLayout) {
|
||||
// Unable to load external layout. Cleanup and load the internal layout.
|
||||
// There might be some partially restored DB items, due to buggy restore logic in
|
||||
// previous versions of launcher.
|
||||
mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
|
||||
mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(),
|
||||
getDefaultLayoutParser(widgetHolder));
|
||||
// Populate favorites table with initial favorites
|
||||
if ((mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), loader) <= 0)
|
||||
&& usingExternallyProvidedLayout) {
|
||||
// Unable to load external layout. Cleanup and load the internal layout.
|
||||
mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
|
||||
mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(),
|
||||
getDefaultLayoutParser(widgetHolder));
|
||||
}
|
||||
clearFlagEmptyDbCreated();
|
||||
} finally {
|
||||
widgetHolder.destroy();
|
||||
}
|
||||
clearFlagEmptyDbCreated();
|
||||
widgetHolder.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -957,8 +960,6 @@ public class LauncherProvider extends ContentProvider {
|
||||
allWidgets = holder.getAppWidgetIds();
|
||||
} catch (IncompatibleClassChangeError e) {
|
||||
Log.e(TAG, "getAppWidgetIds not supported", e);
|
||||
// Necessary to destroy the holder to free up possible activity context
|
||||
holder.destroy();
|
||||
return;
|
||||
}
|
||||
final IntSet validWidgets = IntSet.wrap(LauncherDbUtils.queryIntArray(false, db,
|
||||
|
||||
@@ -21,8 +21,10 @@ import static com.android.launcher3.LauncherPrefs.APP_WIDGET_IDS;
|
||||
import static com.android.launcher3.LauncherPrefs.OLD_APP_WIDGET_IDS;
|
||||
import static com.android.launcher3.LauncherPrefs.RESTORE_DEVICE;
|
||||
import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
|
||||
import static com.android.launcher3.widget.LauncherWidgetHolder.APPWIDGET_HOST_ID;
|
||||
|
||||
import android.app.backup.BackupManager;
|
||||
import android.appwidget.AppWidgetHost;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
@@ -49,7 +51,6 @@ import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||
import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
|
||||
import com.android.launcher3.util.IntArray;
|
||||
import com.android.launcher3.util.LogConfig;
|
||||
import com.android.launcher3.widget.LauncherWidgetHolder;
|
||||
|
||||
import java.io.InvalidObjectException;
|
||||
import java.util.Arrays;
|
||||
@@ -354,12 +355,11 @@ public class RestoreDbTask {
|
||||
private void restoreAppWidgetIdsIfExists(Context context) {
|
||||
LauncherPrefs lp = LauncherPrefs.get(context);
|
||||
if (lp.has(APP_WIDGET_IDS, OLD_APP_WIDGET_IDS)) {
|
||||
LauncherWidgetHolder holder = LauncherWidgetHolder.newInstance(context);
|
||||
AppWidgetHost host = new AppWidgetHost(context, APPWIDGET_HOST_ID);
|
||||
AppWidgetsRestoredReceiver.restoreAppWidgetIds(context,
|
||||
IntArray.fromConcatString(lp.get(OLD_APP_WIDGET_IDS)).toArray(),
|
||||
IntArray.fromConcatString(lp.get(APP_WIDGET_IDS)).toArray(),
|
||||
holder);
|
||||
holder.destroy();
|
||||
host);
|
||||
} else {
|
||||
FileLog.d(TAG, "No app widget ids to restore.");
|
||||
}
|
||||
|
||||
@@ -321,13 +321,6 @@ public class LauncherWidgetHolder {
|
||||
mFlags &= ~FLAG_LISTENING;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the host
|
||||
*/
|
||||
public void deleteHost() {
|
||||
mWidgetHost.deleteHost();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The app widget ids
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user