Snap for 10668840 from 8a68138995 to udc-qpr1-release
Change-Id: I4a166dd54c8aef1d910b590cfebf7ec28104d408
This commit is contained in:
@@ -60,12 +60,12 @@
|
||||
<string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="4816365433160895458">"Wische vom unteren Displayrand nach oben"</string>
|
||||
<string name="home_gesture_feedback_overview_detected" msgid="5177627157303895077">"Achte darauf, nicht innezuhalten, bevor du loslässt"</string>
|
||||
<string name="home_gesture_feedback_wrong_swipe_direction" msgid="8328465201424027148">"Wische gerade nach oben"</string>
|
||||
<string name="home_gesture_feedback_complete_with_follow_up" msgid="8766981412895888417">"Du hast den Schritt für die „Startbildschirm“-Geste abgeschlossen. Jetzt lernst du, wie du zurückgehst."</string>
|
||||
<string name="home_gesture_feedback_complete_with_follow_up" msgid="8766981412895888417">"Du hast den Schritt für die „Zum Startbildschirm“-Geste abgeschlossen. Jetzt lernst du, wie du zurückgehst."</string>
|
||||
<string name="home_gesture_feedback_complete_without_follow_up" msgid="2978063221383413443">"Du hast den Schritt für die „Startbildschirm“-Touch-Geste abgeschlossen"</string>
|
||||
<string name="home_gesture_intro_title" msgid="836590312858441830">"Den Startbildschirm aufrufen"</string>
|
||||
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Wenn du zum Startbildschirm gehen möchtest, wische einfach vom unteren Displayrand nach oben."</string>
|
||||
<string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Wische mit zwei Fingern vom unteren Displayrand nach oben. So gelangst du immer zum Startbildschirm."</string>
|
||||
<string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Zum Startbildschirm"</string>
|
||||
<string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Zum StartU+00ADbildschirm"</string>
|
||||
<string name="home_gesture_tutorial_subtitle" msgid="7245995490408668778">"Wische vom unteren Displayrand nach oben"</string>
|
||||
<string name="home_gesture_tutorial_success" msgid="1736295017642244751">"Gut gemacht!"</string>
|
||||
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="6402349235265407385">"Wische vom unteren Displayrand nach oben"</string>
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<string name="home_gesture_tutorial_success" msgid="1736295017642244751">"¡Bien hecho!"</string>
|
||||
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="6402349235265407385">"Asegúrate de deslizar hacia arriba desde el borde inferior de la pantalla"</string>
|
||||
<string name="overview_gesture_feedback_home_detected" msgid="663432226180397138">"Intenta mantener presionada la ventana más tiempo antes de soltarla"</string>
|
||||
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="1191055451018584958">"Asegúrate de deslizar directamente hacia arriba y, luego, detenerte"</string>
|
||||
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="1191055451018584958">"Asegúrate de deslizar directamente hacia arriba y detenerte"</string>
|
||||
<string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ya sabes cómo usar los gestos. Para desactivarlos, ve a Configuración."</string>
|
||||
<string name="overview_gesture_feedback_complete_without_follow_up" msgid="2903050864432331629">"Completaste el gesto para cambiar de app"</string>
|
||||
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Desliza para cambiar de app"</string>
|
||||
|
||||
@@ -65,12 +65,12 @@
|
||||
<string name="home_gesture_intro_title" msgid="836590312858441830">"Desliza para ir a la pantalla de inicio"</string>
|
||||
<string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Desliza hacia arriba desde la parte inferior de la pantalla. Este gesto siempre te lleva a la pantalla de inicio."</string>
|
||||
<string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Desliza dos dedos hacia arriba desde la parte inferior de la pantalla. Si haces este gesto, siempre irás a la pantalla de inicio."</string>
|
||||
<string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ir a Inicio"</string>
|
||||
<string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ir a inicio"</string>
|
||||
<string name="home_gesture_tutorial_subtitle" msgid="7245995490408668778">"Desliza hacia arriba desde la parte inferior de la pantalla"</string>
|
||||
<string name="home_gesture_tutorial_success" msgid="1736295017642244751">"¡Bien hecho!"</string>
|
||||
<string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="6402349235265407385">"Asegúrate de deslizar hacia arriba desde el borde inferior de la pantalla"</string>
|
||||
<string name="overview_gesture_feedback_home_detected" msgid="663432226180397138">"Prueba a mantener pulsada la ventana durante más tiempo antes de soltarla"</string>
|
||||
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="1191055451018584958">"Asegúrate de deslizar directamente hacia arriba y, luego, detenerte"</string>
|
||||
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="1191055451018584958">"Asegúrate de deslizar directamente hacia arriba y luego detenerte"</string>
|
||||
<string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ya sabes cómo utilizar gestos. Para desactivarlos, ve a Ajustes."</string>
|
||||
<string name="overview_gesture_feedback_complete_without_follow_up" msgid="2903050864432331629">"Has completado el gesto para cambiar de aplicación"</string>
|
||||
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Desliza el dedo para cambiar de aplicación"</string>
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<string name="overview_gesture_feedback_home_detected" msgid="663432226180397138">"قبلاز رها کردن پنجره، آن را برای مدت طولانیتری نگه دارید"</string>
|
||||
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="1191055451018584958">"دقت کنید که مستقیماً تند به بالا بکشید و سپس توقف کنید"</string>
|
||||
<string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"با نحوه استفاده از اشارهها آشنا شدید. برای خاموش کردن اشارهها، به «تنظیمات» بروید."</string>
|
||||
<string name="overview_gesture_feedback_complete_without_follow_up" msgid="2903050864432331629">"اشاره جابهجا شدن بین برنامهها را تکمیل کردید"</string>
|
||||
<string name="overview_gesture_feedback_complete_without_follow_up" msgid="2903050864432331629">"اشاره جابهجایی بین برنامهها را تکمیل کردید"</string>
|
||||
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"برای جابهجا شدن بین برنامهها، تند بهبالا بکشید"</string>
|
||||
<string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"برای جابهجا شدن بین برنامهها، از پایین صفحه تند بهبالا بکشید، نگه دارید، و سپس رها کنید."</string>
|
||||
<string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"برای جابهجایی بین برنامهها، با ۲ انگشت از پایین صفحه تند بهبالا بکشید، نگه دارید، و سپس رها کنید."</string>
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Voorspelde app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
|
||||
<string name="gesture_tutorial_rotation_prompt_title" msgid="7537946781362766964">"Het apparaat draaien"</string>
|
||||
<string name="gesture_tutorial_rotation_prompt" msgid="1664493449851960691">"Draai het apparaat om de tutorial voor navigatie met gebaren af te ronden"</string>
|
||||
<string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="4175100312909721217">"Swipe helemaal vanaf de rechter- of linkerrand"</string>
|
||||
<string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="4175100312909721217">"Swipe vanaf de rechter- of linkerrand"</string>
|
||||
<string name="back_gesture_feedback_cancelled" msgid="762621530959111290">"Swipe vanaf de rechter- of linkerrand naar het midden van het scherm en laat los"</string>
|
||||
<string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Je weet nu hoe je vanaf rechts kunt swipen om terug te gaan. Ontdek nu hoe je tussen apps schakelt."</string>
|
||||
<string name="back_gesture_feedback_complete_without_follow_up" msgid="197189945858268342">"Je weet nu hoe je het gebaar Terug maakt"</string>
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<string name="overview_gesture_feedback_home_detected" msgid="663432226180397138">"Mantenha a janela pressionada por mais tempo antes de soltar"</string>
|
||||
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="1191055451018584958">"Deslize para cima e pare"</string>
|
||||
<string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Você aprendeu. Para desativar os gestos, acesse as Configurações."</string>
|
||||
<string name="overview_gesture_feedback_complete_without_follow_up" msgid="2903050864432331629">"Você concluiu o gesto para trocar de app"</string>
|
||||
<string name="overview_gesture_feedback_complete_without_follow_up" msgid="2903050864432331629">"Você concluiu o gesto para mudar de app"</string>
|
||||
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"Deslizar para trocar de app"</string>
|
||||
<string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para mudar de app, deslize de baixo para cima, mantenha a tela pressionada por um tempo e solte."</string>
|
||||
<string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Para mudar de app, deslize de baixo para cima na tela com dois dedos, segure por um tempo e solte."</string>
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<string name="overview_gesture_feedback_home_detected" msgid="663432226180397138">"尝试按住窗口较长时间,然后再松开手指"</string>
|
||||
<string name="overview_gesture_feedback_wrong_swipe_direction" msgid="1191055451018584958">"确保笔直向上滑动,然后停住"</string>
|
||||
<string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"您已了解如何使用手势了。如要关闭手势,请前往“设置”。"</string>
|
||||
<string name="overview_gesture_feedback_complete_without_follow_up" msgid="2903050864432331629">"您完成了“切换应用”手势"</string>
|
||||
<string name="overview_gesture_feedback_complete_without_follow_up" msgid="2903050864432331629">"您完成了应用切换手势"</string>
|
||||
<string name="overview_gesture_intro_title" msgid="2902054412868489378">"滑动即可切换应用"</string>
|
||||
<string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"如需在应用之间切换,请从屏幕底部向上滑动,按住,然后松开。"</string>
|
||||
<string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"如需在应用之间切换,请从屏幕底部向上滑动,按住,然后松开。"</string>
|
||||
|
||||
@@ -26,7 +26,6 @@ import android.content.pm.ActivityInfo;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceControl;
|
||||
@@ -153,14 +152,9 @@ public class SwipePipToHomeAnimator extends RectFSpringAnim {
|
||||
// Create a new overlay layer. We do not call detach on this instance, it's propagated
|
||||
// to other classes like PipTaskOrganizer / RecentsAnimationController to complete
|
||||
// the cleanup.
|
||||
if (SystemProperties.getBoolean(
|
||||
"persist.wm.debug.enable_pip_app_icon_overlay", true)) {
|
||||
mPipContentOverlay = new PipContentOverlay.PipAppIconOverlay(view.getContext(),
|
||||
mAppBounds, new IconProvider(context).getIcon(mActivityInfo),
|
||||
appIconSizePx);
|
||||
} else {
|
||||
mPipContentOverlay = new PipContentOverlay.PipColorOverlay(view.getContext());
|
||||
}
|
||||
mPipContentOverlay = new PipContentOverlay.PipAppIconOverlay(view.getContext(),
|
||||
mAppBounds, new IconProvider(context).getIcon(mActivityInfo),
|
||||
appIconSizePx);
|
||||
final SurfaceControl.Transaction tx = new SurfaceControl.Transaction();
|
||||
mPipContentOverlay.attach(tx, mLeash);
|
||||
} else {
|
||||
|
||||
@@ -50,6 +50,7 @@ import androidx.core.content.res.ResourcesCompat;
|
||||
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.icons.DotRenderer;
|
||||
import com.android.launcher3.logging.FileLog;
|
||||
import com.android.launcher3.model.DeviceGridState;
|
||||
import com.android.launcher3.provider.RestoreDbTask;
|
||||
import com.android.launcher3.testing.shared.ResourceUtils;
|
||||
@@ -287,12 +288,13 @@ public class InvariantDeviceProfile {
|
||||
* Reinitialize the current grid after a restore, where some grids might now be disabled.
|
||||
*/
|
||||
public void reinitializeAfterRestore(Context context) {
|
||||
FileLog.d(TAG, "Reinitializing grid after restore");
|
||||
String currentGridName = getCurrentGridName(context);
|
||||
String currentDbFile = dbFile;
|
||||
String newGridName = initGrid(context, currentGridName);
|
||||
String newDbFile = dbFile;
|
||||
if (!newDbFile.equals(currentDbFile)) {
|
||||
Log.d(TAG, "Restored grid is disabled : " + currentGridName
|
||||
FileLog.d(TAG, "Restored grid is disabled : " + currentGridName
|
||||
+ ", migrating to: " + newGridName
|
||||
+ ", removing all other grid db files");
|
||||
for (String gridDbFile : LauncherFiles.GRID_DB_FILES) {
|
||||
@@ -300,7 +302,7 @@ public class InvariantDeviceProfile {
|
||||
continue;
|
||||
}
|
||||
if (context.getDatabasePath(gridDbFile).delete()) {
|
||||
Log.d(TAG, "Removed old grid db file: " + gridDbFile);
|
||||
FileLog.d(TAG, "Removed old grid db file: " + gridDbFile);
|
||||
}
|
||||
}
|
||||
setCurrentGrid(context, newGridName);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class LauncherBackupAgent extends BackupAgent {
|
||||
// Remove old files which might contain obsolete attributes like idp_grid_name in shared
|
||||
// preference that will obstruct backup's attribute from writing to shared preferences.
|
||||
if (destination.delete()) {
|
||||
FileLog.d("LauncherBackupAgent", "Removed obsolete file: " + destination);
|
||||
FileLog.d(TAG, "onRestoreFile: Removed obsolete file " + destination);
|
||||
}
|
||||
super.onRestoreFile(data, size, destination, type, mode, mtime);
|
||||
}
|
||||
@@ -47,6 +47,7 @@ public class LauncherBackupAgent extends BackupAgent {
|
||||
|
||||
@Override
|
||||
public void onRestoreFinished() {
|
||||
FileLog.d(TAG, "onRestoreFinished: set pending for RestoreDbTask");
|
||||
RestoreDbTask.setPending(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ import com.android.launcher3.model.ItemInstallQueue;
|
||||
import com.android.launcher3.pm.InstallSessionHelper;
|
||||
import com.android.launcher3.util.Executors;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* BroadcastReceiver to handle session commit intent.
|
||||
*/
|
||||
@@ -63,9 +65,20 @@ public class SessionCommitReceiver extends BroadcastReceiver {
|
||||
}
|
||||
|
||||
InstallSessionHelper packageInstallerCompat = InstallSessionHelper.INSTANCE.get(context);
|
||||
boolean alreadyAddedPromiseIcon =
|
||||
packageInstallerCompat.promiseIconAddedForId(info.getSessionId());
|
||||
if (TextUtils.isEmpty(info.getAppPackageName())
|
||||
|| info.getInstallReason() != PackageManager.INSTALL_REASON_USER
|
||||
|| packageInstallerCompat.promiseIconAddedForId(info.getSessionId())) {
|
||||
|| alreadyAddedPromiseIcon) {
|
||||
FileLog.d(LOG,
|
||||
String.format(Locale.ENGLISH,
|
||||
"Removing PromiseIcon for package: %s, install reason: %d,"
|
||||
+ " alreadyAddedPromiseIcon: %s",
|
||||
info.getAppPackageName(),
|
||||
info.getInstallReason(),
|
||||
alreadyAddedPromiseIcon
|
||||
)
|
||||
);
|
||||
packageInstallerCompat.removePromiseIconId(info.getSessionId());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -374,6 +374,8 @@ public class LoaderTask implements Runnable {
|
||||
final HashMap<PackageUserKey, SessionInfo> installingPkgs =
|
||||
mSessionHelper.getActiveSessions();
|
||||
installingPkgs.forEach(mApp.getIconCache()::updateSessionCache);
|
||||
FileLog.d(TAG, "loadWorkspace: Packages with active install sessions: "
|
||||
+ installingPkgs.values());
|
||||
|
||||
final PackageUserKey tempPackageKey = new PackageUserKey(null, null);
|
||||
mFirstScreenBroadcast = new FirstScreenBroadcast(installingPkgs);
|
||||
|
||||
@@ -82,11 +82,15 @@ public class RestoreDbTask {
|
||||
public static final String APPWIDGET_OLD_IDS = "appwidget_old_ids";
|
||||
public static final String APPWIDGET_IDS = "appwidget_ids";
|
||||
|
||||
private static final String[] DB_COLUMNS_TO_LOG = {"profileId", "title", "itemType", "screen",
|
||||
"container", "cellX", "cellY", "spanX", "spanY", "intent"};
|
||||
|
||||
/**
|
||||
* Tries to restore the backup DB if needed
|
||||
*/
|
||||
public static void restoreIfNeeded(Context context, ModelDbController dbController) {
|
||||
if (!isPending(context)) {
|
||||
Log.d(TAG, "No restore task pending, exiting RestoreDbTask");
|
||||
return;
|
||||
}
|
||||
if (!performRestore(context, dbController)) {
|
||||
@@ -106,6 +110,7 @@ public class RestoreDbTask {
|
||||
|
||||
private static boolean performRestore(Context context, ModelDbController controller) {
|
||||
SQLiteDatabase db = controller.getDb();
|
||||
FileLog.d(TAG, "performRestore: starting restore from db");
|
||||
try (SQLiteTransaction t = new SQLiteTransaction(db)) {
|
||||
RestoreDbTask task = new RestoreDbTask();
|
||||
task.sanitizeDB(context, controller, db, new BackupManager(context));
|
||||
@@ -133,10 +138,11 @@ public class RestoreDbTask {
|
||||
@VisibleForTesting
|
||||
protected int sanitizeDB(Context context, ModelDbController controller, SQLiteDatabase db,
|
||||
BackupManager backupManager) throws Exception {
|
||||
FileLog.d(TAG, "Old Launcher Database before sanitizing:");
|
||||
// Primary user ids
|
||||
long myProfileId = controller.getSerialNumberForUser(myUserHandle());
|
||||
long oldProfileId = getDefaultProfileId(db);
|
||||
Log.d(TAG, "sanitizeDB: myProfileId=" + myProfileId + " oldProfileId=" + oldProfileId);
|
||||
FileLog.d(TAG, "sanitizeDB: myProfileId=" + myProfileId + " oldProfileId=" + oldProfileId);
|
||||
LongSparseArray<Long> oldManagedProfileIds = getManagedProfileIds(db, oldProfileId);
|
||||
LongSparseArray<Long> profileMapping = new LongSparseArray<>(oldManagedProfileIds.size()
|
||||
+ 1);
|
||||
@@ -149,8 +155,11 @@ public class RestoreDbTask {
|
||||
if (user != null) {
|
||||
long newManagedProfileId = controller.getSerialNumberForUser(user);
|
||||
profileMapping.put(oldManagedProfileId, newManagedProfileId);
|
||||
Log.d(TAG, "sanitizeDB: managed profile id=" + oldManagedProfileId
|
||||
FileLog.d(TAG, "sanitizeDB: managed profile id=" + oldManagedProfileId
|
||||
+ " should be mapped to new id=" + newManagedProfileId);
|
||||
} else {
|
||||
FileLog.e(TAG, "sanitizeDB: No User found for old profileId, Ancestral Serial "
|
||||
+ "Number: " + oldManagedProfileId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,11 +170,13 @@ public class RestoreDbTask {
|
||||
for (int i = numProfiles - 1; i >= 1; --i) {
|
||||
profileIds[i] = Long.toString(profileMapping.keyAt(i));
|
||||
}
|
||||
|
||||
final String[] args = new String[profileIds.length];
|
||||
Arrays.fill(args, "?");
|
||||
final String where = "profileId NOT IN (" + TextUtils.join(", ", Arrays.asList(args)) + ")";
|
||||
int itemsDeleted = db.delete(Favorites.TABLE_NAME, where, profileIds);
|
||||
FileLog.d(TAG, itemsDeleted + " items from unrestored user(s) were deleted");
|
||||
logUnrestoredItems(db, where, profileIds);
|
||||
int itemsDeletedCount = db.delete(Favorites.TABLE_NAME, where, profileIds);
|
||||
FileLog.d(TAG, itemsDeletedCount + " total items from unrestored user(s) were deleted");
|
||||
|
||||
// Mark all items as restored.
|
||||
boolean keepAllIcons = Utilities.isPropertyEnabled(LogConfig.KEEP_ALL_ICONS);
|
||||
@@ -219,8 +230,48 @@ public class RestoreDbTask {
|
||||
|
||||
// Override shortcuts
|
||||
maybeOverrideShortcuts(context, controller, db, myProfileId);
|
||||
return itemsDeletedCount;
|
||||
}
|
||||
|
||||
return itemsDeleted;
|
||||
/**
|
||||
* Queries and logs the items we will delete from unrestored profiles in the launcher db.
|
||||
* This is to understand why items might be missing during the restore process for Launcher.
|
||||
* @param database the Launcher db to query from.
|
||||
* @param where the SELECT statement to query items that will be deleted.
|
||||
* @param profileIds the profile ID's the user will be migrating to.
|
||||
*/
|
||||
private void logUnrestoredItems(SQLiteDatabase database, String where, String[] profileIds) {
|
||||
try (Cursor itemsToDelete = database.query(
|
||||
/* table */ Favorites.TABLE_NAME,
|
||||
/* columns */ DB_COLUMNS_TO_LOG,
|
||||
/* selection */ where,
|
||||
/* selection args */ profileIds,
|
||||
/* groupBy */ null,
|
||||
/* having */ null,
|
||||
/* orderBy */ null
|
||||
)) {
|
||||
if (itemsToDelete.moveToFirst()) {
|
||||
String[] columnNames = itemsToDelete.getColumnNames();
|
||||
StringBuilder stringBuilder = new StringBuilder(
|
||||
"items to be deleted from the Favorites Table during restore:\n"
|
||||
);
|
||||
do {
|
||||
for (String columnName : columnNames) {
|
||||
stringBuilder.append(columnName)
|
||||
.append("=")
|
||||
.append(itemsToDelete.getString(
|
||||
itemsToDelete.getColumnIndex(columnName)))
|
||||
.append(" ");
|
||||
}
|
||||
stringBuilder.append("\n");
|
||||
} while (itemsToDelete.moveToNext());
|
||||
FileLog.d(TAG, stringBuilder.toString());
|
||||
} else {
|
||||
FileLog.d(TAG, "logDeletedItems: No items found to delete");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FileLog.e(TAG, "logDeletedItems: Error reading from database", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -321,7 +372,7 @@ public class RestoreDbTask {
|
||||
* Marks the DB state as pending restoration
|
||||
*/
|
||||
public static void setPending(Context context) {
|
||||
FileLog.d(TAG, "Restore data received through full backup ");
|
||||
FileLog.d(TAG, "Restore data received through full backup");
|
||||
LauncherPrefs.get(context)
|
||||
.putSync(RESTORE_DEVICE.to(new DeviceGridState(context).getDeviceType()));
|
||||
}
|
||||
|
||||
@@ -38,8 +38,6 @@ public class OnboardingPrefs<T extends ActivityContext> {
|
||||
public static final String HOME_BOUNCE_COUNT = "launcher.home_bounce_count";
|
||||
public static final String HOTSEAT_DISCOVERY_TIP_COUNT = "launcher.hotseat_discovery_tip_count";
|
||||
public static final String HOTSEAT_LONGPRESS_TIP_SEEN = "launcher.hotseat_longpress_tip_seen";
|
||||
public static final String SEARCH_KEYBOARD_EDU_SEEN = "launcher.search_edu_seen";
|
||||
public static final String SEARCH_SNACKBAR_COUNT = "launcher.keyboard_snackbar_count";
|
||||
public static final String ALL_APPS_VISITED_COUNT = "launcher.all_apps_visited_count";
|
||||
public static final String TASKBAR_EDU_TOOLTIP_STEP = "launcher.taskbar_edu_tooltip_step";
|
||||
// When adding a new key, add it here as well, to be able to reset it from Developer Options.
|
||||
@@ -47,7 +45,6 @@ public class OnboardingPrefs<T extends ActivityContext> {
|
||||
"All Apps Bounce", new String[] { HOME_BOUNCE_SEEN, HOME_BOUNCE_COUNT },
|
||||
"Hybrid Hotseat Education", new String[] { HOTSEAT_DISCOVERY_TIP_COUNT,
|
||||
HOTSEAT_LONGPRESS_TIP_SEEN },
|
||||
"Search Education", new String[] { SEARCH_KEYBOARD_EDU_SEEN, SEARCH_SNACKBAR_COUNT},
|
||||
"Taskbar Education", new String[] { TASKBAR_EDU_TOOLTIP_STEP },
|
||||
"All Apps Visited Count", new String[] {ALL_APPS_VISITED_COUNT}
|
||||
);
|
||||
@@ -58,7 +55,6 @@ public class OnboardingPrefs<T extends ActivityContext> {
|
||||
@StringDef(value = {
|
||||
HOME_BOUNCE_SEEN,
|
||||
HOTSEAT_LONGPRESS_TIP_SEEN,
|
||||
SEARCH_KEYBOARD_EDU_SEEN,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface EventBoolKey {}
|
||||
@@ -69,7 +65,6 @@ public class OnboardingPrefs<T extends ActivityContext> {
|
||||
@StringDef(value = {
|
||||
HOME_BOUNCE_COUNT,
|
||||
HOTSEAT_DISCOVERY_TIP_COUNT,
|
||||
SEARCH_SNACKBAR_COUNT,
|
||||
ALL_APPS_VISITED_COUNT,
|
||||
TASKBAR_EDU_TOOLTIP_STEP,
|
||||
})
|
||||
@@ -82,7 +77,6 @@ public class OnboardingPrefs<T extends ActivityContext> {
|
||||
Map<String, Integer> maxCounts = new ArrayMap<>(5);
|
||||
maxCounts.put(HOME_BOUNCE_COUNT, 3);
|
||||
maxCounts.put(HOTSEAT_DISCOVERY_TIP_COUNT, 5);
|
||||
maxCounts.put(SEARCH_SNACKBAR_COUNT, 3);
|
||||
maxCounts.put(ALL_APPS_VISITED_COUNT, 20);
|
||||
maxCounts.put(TASKBAR_EDU_TOOLTIP_STEP, 2);
|
||||
MAX_COUNTS = Collections.unmodifiableMap(maxCounts);
|
||||
|
||||
@@ -104,6 +104,7 @@ final class AlphaJumpDetector extends AnomalyDetector {
|
||||
DRAG_LAYER + "Snackbar|TextView:id/label",
|
||||
DRAG_LAYER + "SplitInstructionsView|AppCompatTextView:id/split_instructions_text",
|
||||
DRAG_LAYER + "TaskMenuView|LinearLayout:id/menu_option_layout",
|
||||
DRAG_LAYER + "TaskMenuViewWithArrow|LinearLayout:id/menu_option_layout",
|
||||
DRAG_LAYER + "TaskMenuView|TextView:id/task_name",
|
||||
DRAG_LAYER + "View",
|
||||
DRAG_LAYER + "WidgetsFullSheet|SpringRelativeLayout:id/container",
|
||||
|
||||
@@ -57,9 +57,7 @@ final class FlashDetector extends AnomalyDetector {
|
||||
+ "|ScrollView:id/widget_preview_scroll_view|WidgetCell:id/widget_cell"
|
||||
+ "|WidgetCellPreview:id/widget_preview_container|ImageView:id/widget_badge",
|
||||
RECENTS_DRAG_LAYER + "FallbackRecentsView:id/overview_panel|TaskView|IconView:id/icon",
|
||||
DRAG_LAYER
|
||||
+ "SearchContainerView:id/apps_view|UniversalSearchInputView:id"
|
||||
+ "/search_container_all_apps|View:id/ripple",
|
||||
DRAG_LAYER + "SearchContainerView:id/apps_view",
|
||||
DRAG_LAYER + "LauncherDragView"
|
||||
));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user