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

Commit 46463f6a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Adding support for storing keywords in iconCache" into ub-launcher3-qt-qpr1-dev

parents 4c19f941 934ebd08
Loading
Loading
Loading
Loading
+54 −37
Original line number Diff line number Diff line
@@ -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";
    /**
     * 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);
    }

        public final static String[] COLUMNS_HIGH_RES = new String[] {
    /**
     * 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 + ") " +
                    ");");
        }
    }

    private ContentValues newContentValues(BitmapInfo bitmapInfo, String label, String packageName) {
            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, @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;
    }

+11 −0
Original line number Diff line number Diff line
@@ -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;
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.quickstep;

import static com.android.launcher3.util.MainThreadInitializedObject.forOverride;

import android.graphics.Matrix;
import android.view.View;

@@ -47,8 +49,7 @@ public class TaskOverlayFactory implements ResourceBasedOverride {
    };

    public static final MainThreadInitializedObject<TaskOverlayFactory> INSTANCE =
            new MainThreadInitializedObject<>(c -> Overrides.getObject(TaskOverlayFactory.class,
                    c, R.string.task_overlay_factory_class));
            forOverride(TaskOverlayFactory.class, R.string.task_overlay_factory_class);

    public List<TaskSystemShortcut> getEnabledShortcuts(TaskView taskView) {
        final ArrayList<TaskSystemShortcut> shortcuts = new ArrayList<>();
+1 −5
Original line number Diff line number Diff line
@@ -16,15 +16,12 @@
package com.android.quickstep;

import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SUPPORTS_WINDOW_CORNERS;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS;

import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.content.ComponentCallbacks2;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.os.HandlerThread;
import android.os.Process;
import android.os.RemoteException;
@@ -35,7 +32,6 @@ import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.TaskStackChangeListener;

import java.util.ArrayList;
@@ -52,7 +48,7 @@ public class RecentsModel extends TaskStackChangeListener {

    // We do not need any synchronization for this variable as its only written on UI thread.
    public static final MainThreadInitializedObject<RecentsModel> INSTANCE =
            new MainThreadInitializedObject<>(c -> new RecentsModel(c));
            new MainThreadInitializedObject<>(RecentsModel::new);

    private final List<TaskThumbnailChangeListener> mThumbnailChangeListeners = new ArrayList<>();
    private final Context mContext;
+1 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@
    <string name="system_shortcut_factory_class" translatable="false"></string>
    <string name="app_launch_tracker_class" translatable="false"></string>
    <string name="test_information_handler_class" translatable="false"></string>
    <string name="launcher_activity_logic_class" translatable="false"></string>

    <!-- Package name of the default wallpaper picker. -->
    <string name="wallpaper_picker_package" translatable="false"></string>
Loading