Removing some obsolete features:ENABLE_MINIMAL_DEVICE, ENABLE_DATABASE_RESTORE am: 895392e923
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/22531971 Change-Id: I02ee075e1927eacf777ee0042fd9b5c8acdcb8e6 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -47,11 +47,7 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.annotation.WorkerThread;
|
import androidx.annotation.WorkerThread;
|
||||||
|
|
||||||
import com.android.launcher3.BaseDraggingActivity;
|
import com.android.launcher3.BaseDraggingActivity;
|
||||||
import com.android.launcher3.InvariantDeviceProfile;
|
|
||||||
import com.android.launcher3.LauncherProvider;
|
|
||||||
import com.android.launcher3.LauncherSettings;
|
|
||||||
import com.android.launcher3.R;
|
import com.android.launcher3.R;
|
||||||
import com.android.launcher3.config.FeatureFlags;
|
|
||||||
import com.android.launcher3.model.data.ItemInfo;
|
import com.android.launcher3.model.data.ItemInfo;
|
||||||
import com.android.launcher3.popup.RemoteActionShortcut;
|
import com.android.launcher3.popup.RemoteActionShortcut;
|
||||||
import com.android.launcher3.popup.SystemShortcut;
|
import com.android.launcher3.popup.SystemShortcut;
|
||||||
@@ -73,21 +69,14 @@ public final class WellbeingModel extends BgObjectWithLooper {
|
|||||||
private static final int[] RETRY_TIMES_MS = {5000, 15000, 30000};
|
private static final int[] RETRY_TIMES_MS = {5000, 15000, 30000};
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = false;
|
||||||
|
|
||||||
private static final int UNKNOWN_MINIMAL_DEVICE_STATE = 0;
|
|
||||||
private static final int IN_MINIMAL_DEVICE = 2;
|
|
||||||
|
|
||||||
// Welbeing contract
|
// Welbeing contract
|
||||||
private static final String PATH_ACTIONS = "actions";
|
private static final String PATH_ACTIONS = "actions";
|
||||||
private static final String PATH_MINIMAL_DEVICE = "minimal_device";
|
|
||||||
private static final String METHOD_GET_MINIMAL_DEVICE_CONFIG = "get_minimal_device_config";
|
|
||||||
private static final String METHOD_GET_ACTIONS = "get_actions";
|
private static final String METHOD_GET_ACTIONS = "get_actions";
|
||||||
private static final String EXTRA_ACTIONS = "actions";
|
private static final String EXTRA_ACTIONS = "actions";
|
||||||
private static final String EXTRA_ACTION = "action";
|
private static final String EXTRA_ACTION = "action";
|
||||||
private static final String EXTRA_MAX_NUM_ACTIONS_SHOWN = "max_num_actions_shown";
|
private static final String EXTRA_MAX_NUM_ACTIONS_SHOWN = "max_num_actions_shown";
|
||||||
private static final String EXTRA_PACKAGES = "packages";
|
private static final String EXTRA_PACKAGES = "packages";
|
||||||
private static final String EXTRA_SUCCESS = "success";
|
private static final String EXTRA_SUCCESS = "success";
|
||||||
private static final String EXTRA_MINIMAL_DEVICE_STATE = "minimal_device_state";
|
|
||||||
private static final String DB_NAME_MINIMAL_DEVICE = "minimal.db";
|
|
||||||
|
|
||||||
public static final MainThreadInitializedObject<WellbeingModel> INSTANCE =
|
public static final MainThreadInitializedObject<WellbeingModel> INSTANCE =
|
||||||
new MainThreadInitializedObject<>(WellbeingModel::new);
|
new MainThreadInitializedObject<>(WellbeingModel::new);
|
||||||
@@ -137,36 +126,7 @@ public final class WellbeingModel extends BgObjectWithLooper {
|
|||||||
@WorkerThread
|
@WorkerThread
|
||||||
private void onWellbeingUriChanged(Uri uri) {
|
private void onWellbeingUriChanged(Uri uri) {
|
||||||
Preconditions.assertNonUiThread();
|
Preconditions.assertNonUiThread();
|
||||||
if (DEBUG || mIsInTest) {
|
updateAllPackages();
|
||||||
Log.d(TAG, "ContentObserver.onChange() called with: uri = [" + uri + "]");
|
|
||||||
}
|
|
||||||
if (uri.getPath().contains(PATH_ACTIONS)) {
|
|
||||||
// Wellbeing reports that app actions have changed.
|
|
||||||
updateAllPackages();
|
|
||||||
} else if (uri.getPath().contains(PATH_MINIMAL_DEVICE)) {
|
|
||||||
// Wellbeing reports that minimal device state or config is changed.
|
|
||||||
if (!FeatureFlags.ENABLE_MINIMAL_DEVICE.get()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Temporary bug fix for b/169771796. Wellbeing provides the layout configuration when
|
|
||||||
// minimal device is enabled. We always want to reload the configuration from Wellbeing
|
|
||||||
// since the layout configuration might have changed.
|
|
||||||
mContext.deleteDatabase(DB_NAME_MINIMAL_DEVICE);
|
|
||||||
|
|
||||||
final Bundle extras = new Bundle();
|
|
||||||
String dbFile;
|
|
||||||
if (isInMinimalDeviceMode()) {
|
|
||||||
dbFile = DB_NAME_MINIMAL_DEVICE;
|
|
||||||
extras.putString(LauncherProvider.KEY_LAYOUT_PROVIDER_AUTHORITY,
|
|
||||||
mWellbeingProviderPkg + ".api");
|
|
||||||
} else {
|
|
||||||
dbFile = InvariantDeviceProfile.INSTANCE.get(mContext).dbFile;
|
|
||||||
}
|
|
||||||
LauncherSettings.Settings.call(mContext.getContentResolver(),
|
|
||||||
LauncherSettings.Settings.METHOD_SWITCH_DATABASE,
|
|
||||||
dbFile, extras);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInTest(boolean inTest) {
|
public void setInTest(boolean inTest) {
|
||||||
@@ -178,12 +138,9 @@ public final class WellbeingModel extends BgObjectWithLooper {
|
|||||||
final ContentResolver resolver = mContext.getContentResolver();
|
final ContentResolver resolver = mContext.getContentResolver();
|
||||||
resolver.unregisterContentObserver(mContentObserver);
|
resolver.unregisterContentObserver(mContentObserver);
|
||||||
Uri actionsUri = apiBuilder().path(PATH_ACTIONS).build();
|
Uri actionsUri = apiBuilder().path(PATH_ACTIONS).build();
|
||||||
Uri minimalDeviceUri = apiBuilder().path(PATH_MINIMAL_DEVICE).build();
|
|
||||||
try {
|
try {
|
||||||
resolver.registerContentObserver(
|
resolver.registerContentObserver(
|
||||||
actionsUri, true /* notifyForDescendants */, mContentObserver);
|
actionsUri, true /* notifyForDescendants */, mContentObserver);
|
||||||
resolver.registerContentObserver(
|
|
||||||
minimalDeviceUri, true /* notifyForDescendants */, mContentObserver);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(TAG, "Failed to register content observer for " + actionsUri + ": " + e);
|
Log.e(TAG, "Failed to register content observer for " + actionsUri + ": " + e);
|
||||||
if (mIsInTest) throw new RuntimeException(e);
|
if (mIsInTest) throw new RuntimeException(e);
|
||||||
@@ -227,32 +184,6 @@ public final class WellbeingModel extends BgObjectWithLooper {
|
|||||||
.authority(mWellbeingProviderPkg + ".api");
|
.authority(mWellbeingProviderPkg + ".api");
|
||||||
}
|
}
|
||||||
|
|
||||||
@WorkerThread
|
|
||||||
private boolean isInMinimalDeviceMode() {
|
|
||||||
if (!FeatureFlags.ENABLE_MINIMAL_DEVICE.get()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (DEBUG || mIsInTest) {
|
|
||||||
Log.d(TAG, "isInMinimalDeviceMode() called");
|
|
||||||
}
|
|
||||||
Preconditions.assertNonUiThread();
|
|
||||||
|
|
||||||
final Uri contentUri = apiBuilder().build();
|
|
||||||
try (ContentProviderClient client = mContext.getContentResolver()
|
|
||||||
.acquireUnstableContentProviderClient(contentUri)) {
|
|
||||||
final Bundle remoteBundle = client == null ? null : client.call(
|
|
||||||
METHOD_GET_MINIMAL_DEVICE_CONFIG, null /* args */, null /* extras */);
|
|
||||||
return remoteBundle != null
|
|
||||||
&& remoteBundle.getInt(EXTRA_MINIMAL_DEVICE_STATE,
|
|
||||||
UNKNOWN_MINIMAL_DEVICE_STATE) == IN_MINIMAL_DEVICE;
|
|
||||||
} catch (Exception e) {
|
|
||||||
Log.e(TAG, "Failed to retrieve data from " + contentUri + ": " + e);
|
|
||||||
if (mIsInTest) throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
if (DEBUG || mIsInTest) Log.i(TAG, "isInMinimalDeviceMode(): finished");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
private boolean updateActions(String[] packageNames) {
|
private boolean updateActions(String[] packageNames) {
|
||||||
if (packageNames.length == 0) {
|
if (packageNames.length == 0) {
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
|
|||||||
import static com.android.launcher3.provider.LauncherDbUtils.tableExists;
|
import static com.android.launcher3.provider.LauncherDbUtils.tableExists;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.backup.BackupManager;
|
|
||||||
import android.appwidget.AppWidgetManager;
|
import android.appwidget.AppWidgetManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.ContentProvider;
|
import android.content.ContentProvider;
|
||||||
@@ -85,7 +84,6 @@ import java.net.URISyntaxException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -94,7 +92,6 @@ public class LauncherProvider extends ContentProvider {
|
|||||||
private static final boolean LOGD = false;
|
private static final boolean LOGD = false;
|
||||||
|
|
||||||
private static final String DOWNGRADE_SCHEMA_FILE = "downgrade_schema.json";
|
private static final String DOWNGRADE_SCHEMA_FILE = "downgrade_schema.json";
|
||||||
private static final long RESTORE_BACKUP_TABLE_DELAY = TimeUnit.SECONDS.toMillis(30);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the schema of the database. Changes in scheme need not be backwards compatible.
|
* Represents the schema of the database. Changes in scheme need not be backwards compatible.
|
||||||
@@ -114,8 +111,6 @@ public class LauncherProvider extends ContentProvider {
|
|||||||
protected DatabaseHelper mOpenHelper;
|
protected DatabaseHelper mOpenHelper;
|
||||||
protected String mProviderAuthority;
|
protected String mProviderAuthority;
|
||||||
|
|
||||||
private long mLastRestoreTimestamp = 0L;
|
|
||||||
|
|
||||||
private int mDefaultWorkspaceLayoutOverride = 0;
|
private int mDefaultWorkspaceLayoutOverride = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -374,13 +369,6 @@ public class LauncherProvider extends ContentProvider {
|
|||||||
clearFlagEmptyDbCreated();
|
clearFlagEmptyDbCreated();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
case LauncherSettings.Settings.METHOD_WAS_EMPTY_DB_CREATED : {
|
|
||||||
Bundle result = new Bundle();
|
|
||||||
result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE,
|
|
||||||
LauncherPrefs.getPrefs(getContext()).getBoolean(
|
|
||||||
mOpenHelper.getKey(EMPTY_DATABASE_CREATED), false));
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
case LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS: {
|
case LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS: {
|
||||||
Bundle result = new Bundle();
|
Bundle result = new Bundle();
|
||||||
result.putIntArray(LauncherSettings.Settings.EXTRA_VALUE, deleteEmptyFolders()
|
result.putIntArray(LauncherSettings.Settings.EXTRA_VALUE, deleteEmptyFolders()
|
||||||
@@ -438,25 +426,11 @@ public class LauncherProvider extends ContentProvider {
|
|||||||
new SQLiteTransaction(mOpenHelper.getWritableDatabase()));
|
new SQLiteTransaction(mOpenHelper.getWritableDatabase()));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
case LauncherSettings.Settings.METHOD_REFRESH_BACKUP_TABLE: {
|
|
||||||
mOpenHelper.mBackupTableExists = tableExists(mOpenHelper.getReadableDatabase(),
|
|
||||||
Favorites.BACKUP_TABLE_NAME);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
case LauncherSettings.Settings.METHOD_REFRESH_HOTSEAT_RESTORE_TABLE: {
|
case LauncherSettings.Settings.METHOD_REFRESH_HOTSEAT_RESTORE_TABLE: {
|
||||||
mOpenHelper.mHotseatRestoreTableExists = tableExists(
|
mOpenHelper.mHotseatRestoreTableExists = tableExists(
|
||||||
mOpenHelper.getReadableDatabase(), Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
|
mOpenHelper.getReadableDatabase(), Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
case LauncherSettings.Settings.METHOD_RESTORE_BACKUP_TABLE: {
|
|
||||||
final long ts = System.currentTimeMillis();
|
|
||||||
if (ts - mLastRestoreTimestamp > RESTORE_BACKUP_TABLE_DELAY) {
|
|
||||||
mLastRestoreTimestamp = ts;
|
|
||||||
RestoreDbTask.restoreIfPossible(
|
|
||||||
getContext(), mOpenHelper, new BackupManager(getContext()));
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
case LauncherSettings.Settings.METHOD_UPDATE_CURRENT_OPEN_HELPER: {
|
case LauncherSettings.Settings.METHOD_UPDATE_CURRENT_OPEN_HELPER: {
|
||||||
Bundle result = new Bundle();
|
Bundle result = new Bundle();
|
||||||
result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE,
|
result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE,
|
||||||
@@ -479,22 +453,6 @@ public class LauncherProvider extends ContentProvider {
|
|||||||
() -> mOpenHelper));
|
() -> mOpenHelper));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
case LauncherSettings.Settings.METHOD_SWITCH_DATABASE: {
|
|
||||||
if (TextUtils.equals(arg, mOpenHelper.getDatabaseName())) return null;
|
|
||||||
final DatabaseHelper helper = mOpenHelper;
|
|
||||||
if (extras == null || !extras.containsKey(KEY_LAYOUT_PROVIDER_AUTHORITY)) {
|
|
||||||
mProviderAuthority = null;
|
|
||||||
} else {
|
|
||||||
mProviderAuthority = extras.getString(KEY_LAYOUT_PROVIDER_AUTHORITY);
|
|
||||||
}
|
|
||||||
mOpenHelper = DatabaseHelper.createDatabaseHelper(
|
|
||||||
getContext(), arg, false /* forMigration */);
|
|
||||||
helper.close();
|
|
||||||
LauncherAppState app = LauncherAppState.getInstanceNoCreate();
|
|
||||||
if (app == null) return null;
|
|
||||||
app.getModel().forceReload();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -666,7 +624,6 @@ public class LauncherProvider extends ContentProvider {
|
|||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final boolean mForMigration;
|
private final boolean mForMigration;
|
||||||
private int mMaxItemId = -1;
|
private int mMaxItemId = -1;
|
||||||
private boolean mBackupTableExists;
|
|
||||||
private boolean mHotseatRestoreTableExists;
|
private boolean mHotseatRestoreTableExists;
|
||||||
|
|
||||||
static DatabaseHelper createDatabaseHelper(Context context, boolean forMigration) {
|
static DatabaseHelper createDatabaseHelper(Context context, boolean forMigration) {
|
||||||
@@ -727,10 +684,6 @@ public class LauncherProvider extends ContentProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void onAddOrDeleteOp(SQLiteDatabase db) {
|
protected void onAddOrDeleteOp(SQLiteDatabase db) {
|
||||||
if (mBackupTableExists) {
|
|
||||||
dropTable(db, Favorites.BACKUP_TABLE_NAME);
|
|
||||||
mBackupTableExists = false;
|
|
||||||
}
|
|
||||||
if (mHotseatRestoreTableExists) {
|
if (mHotseatRestoreTableExists) {
|
||||||
dropTable(db, Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
|
dropTable(db, Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
|
||||||
mHotseatRestoreTableExists = false;
|
mHotseatRestoreTableExists = false;
|
||||||
|
|||||||
@@ -380,7 +380,6 @@ public class LauncherSettings {
|
|||||||
LauncherProvider.AUTHORITY + "/settings");
|
LauncherProvider.AUTHORITY + "/settings");
|
||||||
|
|
||||||
public static final String METHOD_CLEAR_EMPTY_DB_FLAG = "clear_empty_db_flag";
|
public static final String METHOD_CLEAR_EMPTY_DB_FLAG = "clear_empty_db_flag";
|
||||||
public static final String METHOD_WAS_EMPTY_DB_CREATED = "get_empty_db_flag";
|
|
||||||
|
|
||||||
public static final String METHOD_DELETE_EMPTY_FOLDERS = "delete_empty_folders";
|
public static final String METHOD_DELETE_EMPTY_FOLDERS = "delete_empty_folders";
|
||||||
|
|
||||||
@@ -404,18 +403,12 @@ public class LauncherSettings {
|
|||||||
|
|
||||||
public static final String METHOD_NEW_TRANSACTION = "new_db_transaction";
|
public static final String METHOD_NEW_TRANSACTION = "new_db_transaction";
|
||||||
|
|
||||||
public static final String METHOD_REFRESH_BACKUP_TABLE = "refresh_backup_table";
|
|
||||||
|
|
||||||
public static final String METHOD_REFRESH_HOTSEAT_RESTORE_TABLE = "restore_hotseat_table";
|
public static final String METHOD_REFRESH_HOTSEAT_RESTORE_TABLE = "restore_hotseat_table";
|
||||||
|
|
||||||
public static final String METHOD_RESTORE_BACKUP_TABLE = "restore_backup_table";
|
|
||||||
|
|
||||||
public static final String METHOD_UPDATE_CURRENT_OPEN_HELPER = "update_current_open_helper";
|
public static final String METHOD_UPDATE_CURRENT_OPEN_HELPER = "update_current_open_helper";
|
||||||
|
|
||||||
public static final String METHOD_PREP_FOR_PREVIEW = "prep_for_preview";
|
public static final String METHOD_PREP_FOR_PREVIEW = "prep_for_preview";
|
||||||
|
|
||||||
public static final String METHOD_SWITCH_DATABASE = "switch_database";
|
|
||||||
|
|
||||||
public static final String EXTRA_VALUE = "value";
|
public static final String EXTRA_VALUE = "value";
|
||||||
|
|
||||||
public static final String EXTRA_DB_NAME = "db_name";
|
public static final String EXTRA_DB_NAME = "db_name";
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ public class SessionCommitReceiver extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
InstallSessionHelper packageInstallerCompat = InstallSessionHelper.INSTANCE.get(context);
|
InstallSessionHelper packageInstallerCompat = InstallSessionHelper.INSTANCE.get(context);
|
||||||
packageInstallerCompat.restoreDbIfApplicable(info);
|
|
||||||
if (TextUtils.isEmpty(info.getAppPackageName())
|
if (TextUtils.isEmpty(info.getAppPackageName())
|
||||||
|| info.getInstallReason() != PackageManager.INSTALL_REASON_USER
|
|| info.getInstallReason() != PackageManager.INSTALL_REASON_USER
|
||||||
|| packageInstallerCompat.promiseIconAddedForId(info.getSessionId())) {
|
|| packageInstallerCompat.promiseIconAddedForId(info.getSessionId())) {
|
||||||
|
|||||||
@@ -131,10 +131,6 @@ public final class FeatureFlags {
|
|||||||
"ASSISTANT_GIVES_LAUNCHER_FOCUS", DISABLED,
|
"ASSISTANT_GIVES_LAUNCHER_FOCUS", DISABLED,
|
||||||
"Allow Launcher to handle nav bar gestures while Assistant is running over it");
|
"Allow Launcher to handle nav bar gestures while Assistant is running over it");
|
||||||
|
|
||||||
public static final BooleanFlag ENABLE_DATABASE_RESTORE = getDebugFlag(270392706,
|
|
||||||
"ENABLE_DATABASE_RESTORE", DISABLED,
|
|
||||||
"Enable database restore when new restore session is created");
|
|
||||||
|
|
||||||
public static final BooleanFlag ENABLE_OVERLAY_CONNECTION_OPTIM = getDebugFlag(270392629,
|
public static final BooleanFlag ENABLE_OVERLAY_CONNECTION_OPTIM = getDebugFlag(270392629,
|
||||||
"ENABLE_OVERLAY_CONNECTION_OPTIM", DISABLED,
|
"ENABLE_OVERLAY_CONNECTION_OPTIM", DISABLED,
|
||||||
"Enable optimizing overlay service connection");
|
"Enable optimizing overlay service connection");
|
||||||
@@ -154,10 +150,6 @@ public final class FeatureFlags {
|
|||||||
"SEPARATE_RECENTS_ACTIVITY", DISABLED,
|
"SEPARATE_RECENTS_ACTIVITY", DISABLED,
|
||||||
"Uses a separate recents activity instead of using the integrated recents+Launcher UI");
|
"Uses a separate recents activity instead of using the integrated recents+Launcher UI");
|
||||||
|
|
||||||
public static final BooleanFlag ENABLE_MINIMAL_DEVICE = getDebugFlag(270392984,
|
|
||||||
"ENABLE_MINIMAL_DEVICE", DISABLED,
|
|
||||||
"Allow user to toggle minimal device mode in launcher.");
|
|
||||||
|
|
||||||
public static final BooleanFlag ENABLE_TWO_PANEL_HOME = getDebugFlag(270392643,
|
public static final BooleanFlag ENABLE_TWO_PANEL_HOME = getDebugFlag(270392643,
|
||||||
"ENABLE_TWO_PANEL_HOME", ENABLED,
|
"ENABLE_TWO_PANEL_HOME", ENABLED,
|
||||||
"Uses two panel on home screen. Only applicable on large screen devices.");
|
"Uses two panel on home screen. Only applicable on large screen devices.");
|
||||||
|
|||||||
@@ -29,14 +29,11 @@ import android.util.Log;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.RequiresApi;
|
|
||||||
import androidx.annotation.WorkerThread;
|
import androidx.annotation.WorkerThread;
|
||||||
|
|
||||||
import com.android.launcher3.LauncherPrefs;
|
import com.android.launcher3.LauncherPrefs;
|
||||||
import com.android.launcher3.LauncherSettings;
|
|
||||||
import com.android.launcher3.SessionCommitReceiver;
|
import com.android.launcher3.SessionCommitReceiver;
|
||||||
import com.android.launcher3.Utilities;
|
import com.android.launcher3.Utilities;
|
||||||
import com.android.launcher3.config.FeatureFlags;
|
|
||||||
import com.android.launcher3.logging.FileLog;
|
import com.android.launcher3.logging.FileLog;
|
||||||
import com.android.launcher3.model.ItemInstallQueue;
|
import com.android.launcher3.model.ItemInstallQueue;
|
||||||
import com.android.launcher3.testing.shared.TestProtocol;
|
import com.android.launcher3.testing.shared.TestProtocol;
|
||||||
@@ -204,26 +201,6 @@ public class InstallSessionHelper {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Attempt to restore workspace layout if the session is triggered due to device restore.
|
|
||||||
*/
|
|
||||||
public boolean restoreDbIfApplicable(@NonNull final SessionInfo info) {
|
|
||||||
if (!FeatureFlags.ENABLE_DATABASE_RESTORE.get()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (isRestore(info)) {
|
|
||||||
LauncherSettings.Settings.call(mAppContext.getContentResolver(),
|
|
||||||
LauncherSettings.Settings.METHOD_RESTORE_BACKUP_TABLE);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequiresApi(26)
|
|
||||||
private static boolean isRestore(@NonNull final SessionInfo info) {
|
|
||||||
return info.getInstallReason() == PackageManager.INSTALL_REASON_DEVICE_RESTORE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
public boolean promiseIconAddedForId(final int sessionId) {
|
public boolean promiseIconAddedForId(final int sessionId) {
|
||||||
return getPromiseIconIds().contains(sessionId);
|
return getPromiseIconIds().contains(sessionId);
|
||||||
|
|||||||
Reference in New Issue
Block a user