summaryrefslogtreecommitdiffstats
path: root/iconloaderlib
diff options
context:
space:
mode:
authorHyunyoung Song <hyunyoungs@google.com>2019-08-21 02:25:20 -0700
committerHyunyoung Song <hyunyoungs@google.com>2019-08-21 22:20:03 +0000
commit227daf0108bc5769d9bb8bec88b0c2bb8ada96b2 (patch)
treebaee44af7cf46e3d6af195d1038a748eea6149ff /iconloaderlib
parent63b2cbc0c7515ca3d34fd8503e6c3f87e5f34162 (diff)
parentd88f63bbed4c4c1e7eace9ab8c25e89ad6c662c9 (diff)
downloadandroid_packages_apps_Trebuchet-227daf0108bc5769d9bb8bec88b0c2bb8ada96b2.tar.gz
android_packages_apps_Trebuchet-227daf0108bc5769d9bb8bec88b0c2bb8ada96b2.tar.bz2
android_packages_apps_Trebuchet-227daf0108bc5769d9bb8bec88b0c2bb8ada96b2.zip
ub-launcher3-qt-qpr1-dev @ build 5818303
Test: presubmit setup on source branch Bug: 112282235 Starting an app from Launcher sometimes takes > 10 sec Bug: 125027540 Apps to be searchable in different languages Bug: 132336512 Notification dots on pinned shortcuts Bug: 135218095 Disable unnecessary services Bug: 136277517 Widgets often don’t support scroll direction up/down, left/right and use forward/backward instead Bug: 137777105 Make clearcut launcher logging feature parity with westworld logging Bug: 137952354 OnResume() and onStop logging doesn't reflect the real source id for -1 screen Bug: 137953006 Swiping/fling up from workspace logged as hotseat Bug: 138273985 The pause app message takes more than 30 seconds to display after restarting the device. Bug: 138683199 Pass the captured snapshot data to Launcher when recents animation is cancelled Bug: 138729456 [Flaky test] java.lang.AssertionError: http://go/tapl : Can't find an object with selector: BySelector [CLASS='\Qandroid.widget.TextView\E', PKG='\Qcom.google.android.apps.nexuslauncher\E', TEXT='\QShortcut 3\E'] (visible state: Workspace) Bug: 138743758 [Flaky test] java.lang.AssertionError: App still doesn't have Pause action: com.google.android.calculator Bug: 138743792 [Flaky test] java.lang.AssertionError: ensureScrollable didn't add Chrome app Bug: 138964490 Investigate if ToggleableFlags can be connected with DeviceConfig Bug: 139416391 CTS tests crash when app_prediction service is disabled Bug: 139498375 Flake: java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission Bug: 139540363 Launcher goes in crash loop Change-Id: Iaba4ed67e9fe4f8f5858324201e4c4e8711f59fa
Diffstat (limited to 'iconloaderlib')
-rw-r--r--iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java91
-rw-r--r--iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java11
2 files changed, 65 insertions, 37 deletions
diff --git a/iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java b/iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java
index d84633d56..36d1c3ecc 100644
--- a/iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java
+++ b/iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java
@@ -36,12 +36,16 @@ import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler;
+import android.os.LocaleList;
import android.os.Looper;
import android.os.Process;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import com.android.launcher3.icons.BaseIconFactory;
import com.android.launcher3.icons.BitmapInfo;
import com.android.launcher3.icons.BitmapRenderer;
@@ -57,8 +61,6 @@ import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;
-import androidx.annotation.NonNull;
-
public abstract class BaseIconCache {
private static final String TAG = "BaseIconCache";
@@ -84,6 +86,7 @@ public abstract class BaseIconCache {
protected int mIconDpi;
protected IconDB mIconDb;
+ protected LocaleList mLocaleList = LocaleList.getEmptyLocaleList();
protected String mSystemState = "";
private final String mDbFileName;
@@ -227,12 +230,12 @@ public abstract class BaseIconCache {
/**
* Refreshes the system state definition used to check the validity of the cache. It
- * incorporates all the properties that can affect the cache like locale and system-version.
+ * incorporates all the properties that can affect the cache like the list of enabled locale
+ * and system-version.
*/
private void updateSystemState() {
- final String locale =
- mContext.getResources().getConfiguration().getLocales().toLanguageTags();
- mSystemState = locale + "," + Build.VERSION.SDK_INT;
+ mLocaleList = mContext.getResources().getConfiguration().getLocales();
+ mSystemState = mLocaleList.toLanguageTags() + "," + Build.VERSION.SDK_INT;
}
protected String getIconSystemState(String packageName) {
@@ -269,7 +272,7 @@ public abstract class BaseIconCache {
mCache.put(key, entry);
ContentValues values = newContentValues(entry, entry.title.toString(),
- componentName.getPackageName());
+ componentName.getPackageName(), cachingLogic.getKeywords(object, mLocaleList));
addIconToDB(values, componentName, info, userSerial);
}
@@ -445,7 +448,7 @@ public abstract class BaseIconCache {
// Add the icon in the DB here, since these do not get written during
// package updates.
ContentValues values = newContentValues(
- iconInfo, entry.title.toString(), packageName);
+ iconInfo, entry.title.toString(), packageName, null);
addIconToDB(values, cacheKey.componentName, info, getSerialNumberForUser(user));
} catch (NameNotFoundException e) {
@@ -504,23 +507,35 @@ public abstract class BaseIconCache {
return false;
}
- static final class IconDB extends SQLiteCacheHelper {
- private final static int RELEASE_VERSION = 26;
-
- public final static String TABLE_NAME = "icons";
- public final static String COLUMN_ROWID = "rowid";
- public final static String COLUMN_COMPONENT = "componentName";
- public final static String COLUMN_USER = "profileId";
- public final static String COLUMN_LAST_UPDATED = "lastUpdated";
- public final static String COLUMN_VERSION = "version";
- public final static String COLUMN_ICON = "icon";
- public final static String COLUMN_ICON_COLOR = "icon_color";
- public final static String COLUMN_LABEL = "label";
- public final static String COLUMN_SYSTEM_STATE = "system_state";
-
- public final static String[] COLUMNS_HIGH_RES = new String[] {
+ /**
+ * Returns a cursor for an arbitrary query to the cache db
+ */
+ public synchronized Cursor queryCacheDb(String[] columns, String selection,
+ String[] selectionArgs) {
+ return mIconDb.query(columns, selection, selectionArgs);
+ }
+
+ /**
+ * Cache class to store the actual entries on disk
+ */
+ public static final class IconDB extends SQLiteCacheHelper {
+ private static final int RELEASE_VERSION = 27;
+
+ public static final String TABLE_NAME = "icons";
+ public static final String COLUMN_ROWID = "rowid";
+ public static final String COLUMN_COMPONENT = "componentName";
+ public static final String COLUMN_USER = "profileId";
+ public static final String COLUMN_LAST_UPDATED = "lastUpdated";
+ public static final String COLUMN_VERSION = "version";
+ public static final String COLUMN_ICON = "icon";
+ public static final String COLUMN_ICON_COLOR = "icon_color";
+ public static final String COLUMN_LABEL = "label";
+ public static final String COLUMN_SYSTEM_STATE = "system_state";
+ public static final String COLUMN_KEYWORDS = "keywords";
+
+ public static final String[] COLUMNS_HIGH_RES = new String[] {
IconDB.COLUMN_ICON_COLOR, IconDB.COLUMN_LABEL, IconDB.COLUMN_ICON };
- public final static String[] COLUMNS_LOW_RES = new String[] {
+ public static final String[] COLUMNS_LOW_RES = new String[] {
IconDB.COLUMN_ICON_COLOR, IconDB.COLUMN_LABEL };
public IconDB(Context context, String dbFileName, int iconPixelSize) {
@@ -529,21 +544,23 @@ public abstract class BaseIconCache {
@Override
protected void onCreateTable(SQLiteDatabase db) {
- db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" +
- COLUMN_COMPONENT + " TEXT NOT NULL, " +
- COLUMN_USER + " INTEGER NOT NULL, " +
- COLUMN_LAST_UPDATED + " INTEGER NOT NULL DEFAULT 0, " +
- COLUMN_VERSION + " INTEGER NOT NULL DEFAULT 0, " +
- COLUMN_ICON + " BLOB, " +
- COLUMN_ICON_COLOR + " INTEGER NOT NULL DEFAULT 0, " +
- COLUMN_LABEL + " TEXT, " +
- COLUMN_SYSTEM_STATE + " TEXT, " +
- "PRIMARY KEY (" + COLUMN_COMPONENT + ", " + COLUMN_USER + ") " +
- ");");
+ db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " ("
+ + COLUMN_COMPONENT + " TEXT NOT NULL, "
+ + COLUMN_USER + " INTEGER NOT NULL, "
+ + COLUMN_LAST_UPDATED + " INTEGER NOT NULL DEFAULT 0, "
+ + COLUMN_VERSION + " INTEGER NOT NULL DEFAULT 0, "
+ + COLUMN_ICON + " BLOB, "
+ + COLUMN_ICON_COLOR + " INTEGER NOT NULL DEFAULT 0, "
+ + COLUMN_LABEL + " TEXT, "
+ + COLUMN_SYSTEM_STATE + " TEXT, "
+ + COLUMN_KEYWORDS + " TEXT, "
+ + "PRIMARY KEY (" + COLUMN_COMPONENT + ", " + COLUMN_USER + ") "
+ + ");");
}
}
- private ContentValues newContentValues(BitmapInfo bitmapInfo, String label, String packageName) {
+ private ContentValues newContentValues(BitmapInfo bitmapInfo, String label,
+ String packageName, @Nullable String keywords) {
ContentValues values = new ContentValues();
values.put(IconDB.COLUMN_ICON,
bitmapInfo.isLowRes() ? null : GraphicsUtils.flattenBitmap(bitmapInfo.icon));
@@ -551,7 +568,7 @@ public abstract class BaseIconCache {
values.put(IconDB.COLUMN_LABEL, label);
values.put(IconDB.COLUMN_SYSTEM_STATE, getIconSystemState(packageName));
-
+ values.put(IconDB.COLUMN_KEYWORDS, keywords);
return values;
}
diff --git a/iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java b/iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java
index addb51fa7..09f59b84c 100644
--- a/iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java
+++ b/iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java
@@ -17,8 +17,11 @@ package com.android.launcher3.icons.cache;
import android.content.ComponentName;
import android.content.Context;
+import android.os.LocaleList;
import android.os.UserHandle;
+import androidx.annotation.Nullable;
+
import com.android.launcher3.icons.BitmapInfo;
public interface CachingLogic<T> {
@@ -30,4 +33,12 @@ public interface CachingLogic<T> {
CharSequence getLabel(T object);
void loadIcon(Context context, T object, BitmapInfo target);
+
+ /**
+ * Provides a option list of keywords to associate with this object
+ */
+ @Nullable
+ default String getKeywords(T object, LocaleList localeList) {
+ return null;
+ }
}