diff --git a/iconloaderlib/build.gradle b/iconloaderlib/build.gradle index d08029386a..a6433ad1a6 100644 --- a/iconloaderlib/build.gradle +++ b/iconloaderlib/build.gradle @@ -37,6 +37,11 @@ android { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } diff --git a/src/com/android/launcher3/graphics/BitmapRenderer.java b/iconloaderlib/src/com/android/launcher3/icons/BitmapRenderer.java similarity index 92% rename from src/com/android/launcher3/graphics/BitmapRenderer.java rename to iconloaderlib/src/com/android/launcher3/icons/BitmapRenderer.java index 2a7f20ea33..a66b929efb 100644 --- a/src/com/android/launcher3/graphics/BitmapRenderer.java +++ b/iconloaderlib/src/com/android/launcher3/icons/BitmapRenderer.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3.graphics; +package com.android.launcher3.icons; import android.annotation.TargetApi; import android.graphics.Bitmap; @@ -21,14 +21,12 @@ import android.graphics.Canvas; import android.graphics.Picture; import android.os.Build; -import com.android.launcher3.Utilities; - /** * Interface representing a bitmap draw operation. */ public interface BitmapRenderer { - boolean USE_HARDWARE_BITMAP = Utilities.ATLEAST_P; + boolean USE_HARDWARE_BITMAP = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P; static Bitmap createSoftwareBitmap(int width, int height, BitmapRenderer renderer) { Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); diff --git a/src/com/android/launcher3/util/ComponentKey.java b/iconloaderlib/src/com/android/launcher3/util/ComponentKey.java similarity index 93% rename from src/com/android/launcher3/util/ComponentKey.java rename to iconloaderlib/src/com/android/launcher3/util/ComponentKey.java index d478ffa541..34bed94270 100644 --- a/src/com/android/launcher3/util/ComponentKey.java +++ b/iconloaderlib/src/com/android/launcher3/util/ComponentKey.java @@ -29,8 +29,9 @@ public class ComponentKey { private final int mHashCode; public ComponentKey(ComponentName componentName, UserHandle user) { - Preconditions.assertNotNull(componentName); - Preconditions.assertNotNull(user); + if (componentName == null || user == null) { + throw new NullPointerException(); + } this.componentName = componentName; this.user = user; mHashCode = Arrays.hashCode(new Object[] {componentName, user}); diff --git a/src/com/android/launcher3/util/NoLocaleSQLiteHelper.java b/iconloaderlib/src/com/android/launcher3/util/NoLocaleSQLiteHelper.java similarity index 94% rename from src/com/android/launcher3/util/NoLocaleSQLiteHelper.java rename to iconloaderlib/src/com/android/launcher3/util/NoLocaleSQLiteHelper.java index 05a7d27434..fe864a2847 100644 --- a/src/com/android/launcher3/util/NoLocaleSQLiteHelper.java +++ b/iconloaderlib/src/com/android/launcher3/util/NoLocaleSQLiteHelper.java @@ -18,8 +18,6 @@ package com.android.launcher3.util; import static android.database.sqlite.SQLiteDatabase.NO_LOCALIZED_COLLATORS; -import static com.android.launcher3.Utilities.ATLEAST_P; - import android.content.Context; import android.content.ContextWrapper; import android.database.DatabaseErrorHandler; @@ -27,6 +25,7 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteDatabase.OpenParams; import android.database.sqlite.SQLiteOpenHelper; +import android.os.Build; /** * Extension of {@link SQLiteOpenHelper} which avoids creating default locale table by @@ -34,6 +33,9 @@ import android.database.sqlite.SQLiteOpenHelper; */ public abstract class NoLocaleSQLiteHelper extends SQLiteOpenHelper { + private static final boolean ATLEAST_P = + Build.VERSION.SDK_INT >= Build.VERSION_CODES.P; + public NoLocaleSQLiteHelper(Context context, String name, int version) { super(ATLEAST_P ? context : new NoLocalContext(context), name, null, version); if (ATLEAST_P) { diff --git a/src/com/android/launcher3/util/Provider.java b/iconloaderlib/src/com/android/launcher3/util/Provider.java similarity index 100% rename from src/com/android/launcher3/util/Provider.java rename to iconloaderlib/src/com/android/launcher3/util/Provider.java diff --git a/src/com/android/launcher3/util/SQLiteCacheHelper.java b/iconloaderlib/src/com/android/launcher3/util/SQLiteCacheHelper.java similarity index 93% rename from src/com/android/launcher3/util/SQLiteCacheHelper.java rename to iconloaderlib/src/com/android/launcher3/util/SQLiteCacheHelper.java index 3faf0709a9..49de4bd1bf 100644 --- a/src/com/android/launcher3/util/SQLiteCacheHelper.java +++ b/iconloaderlib/src/com/android/launcher3/util/SQLiteCacheHelper.java @@ -9,9 +9,6 @@ import android.database.sqlite.SQLiteFullException; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; -import com.android.launcher3.Utilities; -import com.android.launcher3.config.FeatureFlags; - /** * An extension of {@link SQLiteOpenHelper} with utility methods for a single table cache DB. * Any exception during write operations are ignored, and any version change causes a DB reset. @@ -19,8 +16,7 @@ import com.android.launcher3.config.FeatureFlags; public abstract class SQLiteCacheHelper { private static final String TAG = "SQLiteCacheHelper"; - private static final boolean NO_ICON_CACHE = FeatureFlags.IS_DOGFOOD_BUILD && - Utilities.isPropertyEnabled(LogConfig.MEMORY_ONLY_ICON_CACHE); + private static final boolean IN_MEMORY_CACHE = false; private final String mTableName; private final MySQLiteOpenHelper mOpenHelper; @@ -28,7 +24,7 @@ public abstract class SQLiteCacheHelper { private boolean mIgnoreWrites; public SQLiteCacheHelper(Context context, String name, int version, String tableName) { - if (NO_ICON_CACHE) { + if (IN_MEMORY_CACHE) { name = null; } mTableName = tableName; diff --git a/src/com/android/launcher3/dragndrop/FolderAdaptiveIcon.java b/src/com/android/launcher3/dragndrop/FolderAdaptiveIcon.java index 9f0d678bf2..e40397bf31 100644 --- a/src/com/android/launcher3/dragndrop/FolderAdaptiveIcon.java +++ b/src/com/android/launcher3/dragndrop/FolderAdaptiveIcon.java @@ -36,7 +36,7 @@ import com.android.launcher3.MainThreadExecutor; import com.android.launcher3.R; import com.android.launcher3.folder.FolderIcon; import com.android.launcher3.folder.PreviewBackground; -import com.android.launcher3.graphics.BitmapRenderer; +import com.android.launcher3.icons.BitmapRenderer; import com.android.launcher3.util.Preconditions; /** diff --git a/src/com/android/launcher3/graphics/DragPreviewProvider.java b/src/com/android/launcher3/graphics/DragPreviewProvider.java index 5094280f6a..75d3425e2b 100644 --- a/src/com/android/launcher3/graphics/DragPreviewProvider.java +++ b/src/com/android/launcher3/graphics/DragPreviewProvider.java @@ -33,6 +33,7 @@ import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.folder.FolderIcon; +import com.android.launcher3.icons.BitmapRenderer; import com.android.launcher3.util.UiThreadHelper; import com.android.launcher3.widget.LauncherAppWidgetHostView; diff --git a/src/com/android/launcher3/graphics/ShadowDrawable.java b/src/com/android/launcher3/graphics/ShadowDrawable.java index 19e2768ccb..f10b972590 100644 --- a/src/com/android/launcher3/graphics/ShadowDrawable.java +++ b/src/com/android/launcher3/graphics/ShadowDrawable.java @@ -32,6 +32,7 @@ import android.os.Build; import android.util.AttributeSet; import com.android.launcher3.R; +import com.android.launcher3.icons.BitmapRenderer; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; diff --git a/src/com/android/launcher3/icons/BaseIconCache.java b/src/com/android/launcher3/icons/BaseIconCache.java index 9a2e287dbe..61c8ccc402 100644 --- a/src/com/android/launcher3/icons/BaseIconCache.java +++ b/src/com/android/launcher3/icons/BaseIconCache.java @@ -36,14 +36,13 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Build.VERSION; import android.os.Handler; +import android.os.Looper; import android.os.Process; import android.os.UserHandle; import android.text.TextUtils; import android.util.Log; import com.android.launcher3.IconProvider; -import com.android.launcher3.LauncherModel; -import com.android.launcher3.graphics.BitmapRenderer; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.Provider; @@ -58,7 +57,6 @@ public abstract class BaseIconCache { private static final String TAG = "BaseIconCache"; private static final boolean DEBUG = false; - private static final boolean DEBUG_IGNORE_CACHE = false; private static final int INITIAL_ICON_CACHE_CAPACITY = 50; @@ -78,21 +76,24 @@ public abstract class BaseIconCache { private final HashMap mCache = new HashMap<>(INITIAL_ICON_CACHE_CAPACITY); - final Handler mWorkerHandler; + protected final Handler mWorkerHandler; protected int mIconDpi; IconDB mIconDb; private final String mDbFileName; private final BitmapFactory.Options mDecodeOptions; + private final Looper mBgLooper; - public BaseIconCache(Context context, String dbFileName, int iconDpi, int iconPixelSize) { + public BaseIconCache(Context context, String dbFileName, Looper bgLooper, + int iconDpi, int iconPixelSize) { mContext = context; mDbFileName = dbFileName; mPackageManager = context.getPackageManager(); + mBgLooper = bgLooper; mIconProvider = IconProvider.newInstance(context); - mWorkerHandler = new Handler(LauncherModel.getWorkerLooper()); + mWorkerHandler = new Handler(mBgLooper); if (BitmapRenderer.USE_HARDWARE_BITMAP && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { mDecodeOptions = new BitmapFactory.Options(); @@ -294,7 +295,7 @@ public abstract class BaseIconCache { T object = null; boolean providerFetchedOnce = false; - if (!getEntryFromDB(cacheKey, entry, useLowResIcon) || DEBUG_IGNORE_CACHE) { + if (!getEntryFromDB(cacheKey, entry, useLowResIcon)) { object = infoProvider.get(); providerFetchedOnce = true; diff --git a/src/com/android/launcher3/icons/IconCache.java b/src/com/android/launcher3/icons/IconCache.java index 9c0a36374a..7b318048af 100644 --- a/src/com/android/launcher3/icons/IconCache.java +++ b/src/com/android/launcher3/icons/IconCache.java @@ -66,7 +66,8 @@ public class IconCache extends BaseIconCache { private int mPendingIconRequestCount = 0; public IconCache(Context context, InvariantDeviceProfile inv) { - super(context, LauncherFiles.APP_ICONS_DB, inv.fillResIconDpi, inv.iconBitmapSize); + super(context, LauncherFiles.APP_ICONS_DB, LauncherModel.getWorkerLooper(), + inv.fillResIconDpi, inv.iconBitmapSize); mComponentWithLabelCachingLogic = new ComponentCachingLogic(context); mLauncherActivityInfoCachingLogic = new LauncherActivtiyCachingLogic(this); mLauncherApps = LauncherAppsCompat.getInstance(mContext); diff --git a/src/com/android/launcher3/icons/LauncherIcons.java b/src/com/android/launcher3/icons/LauncherIcons.java index c96d35db56..0cf1a72585 100644 --- a/src/com/android/launcher3/icons/LauncherIcons.java +++ b/src/com/android/launcher3/icons/LauncherIcons.java @@ -31,7 +31,6 @@ import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.ItemInfoWithIcon; import com.android.launcher3.LauncherAppState; import com.android.launcher3.Utilities; -import com.android.launcher3.graphics.BitmapRenderer; import com.android.launcher3.model.PackageItemInfo; import com.android.launcher3.shortcuts.DeepShortcutManager; import com.android.launcher3.shortcuts.ShortcutInfoCompat;