Updating some non-final static objects
Updating various static objects to use a standard pattern so that
it is easier to track and cleanup those objects
Bug: 141376165
Change-Id: Ia539cbfa338d544dddad771c5027b6748762768b
diff --git a/src/com/android/launcher3/AppInfo.java b/src/com/android/launcher3/AppInfo.java
index dfa4796..af219ba 100644
--- a/src/com/android/launcher3/AppInfo.java
+++ b/src/com/android/launcher3/AppInfo.java
@@ -36,8 +36,8 @@
*/
public class AppInfo extends ItemInfoWithIcon {
- public static AppInfo[] EMPTY_ARRAY = new AppInfo[0];
- public static Comparator<AppInfo> COMPONENT_KEY_COMPARATOR = (a, b) -> {
+ public static final AppInfo[] EMPTY_ARRAY = new AppInfo[0];
+ public static final Comparator<AppInfo> COMPONENT_KEY_COMPARATOR = (a, b) -> {
int uc = a.user.hashCode() - b.user.hashCode();
return uc != 0 ? uc : a.componentName.compareTo(b.componentName);
};
diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java
index f9a8d1b..73d8a88 100644
--- a/src/com/android/launcher3/AppWidgetResizeFrame.java
+++ b/src/com/android/launcher3/AppWidgetResizeFrame.java
@@ -22,6 +22,7 @@
import com.android.launcher3.accessibility.DragViewStateAnnouncer;
import com.android.launcher3.dragndrop.DragLayer;
import com.android.launcher3.util.FocusLogic;
+import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
import java.util.ArrayList;
@@ -35,7 +36,12 @@
private static final Rect sTmpRect = new Rect();
// Represents the cell size on the grid in the two orientations.
- private static Point[] sCellSize;
+ private static final MainThreadInitializedObject<Point[]> CELL_SIZE =
+ new MainThreadInitializedObject<>(c -> {
+ InvariantDeviceProfile inv = LauncherAppState.getIDP(c);
+ return new Point[] {inv.landscapeProfile.getCellSize(),
+ inv.portraitProfile.getCellSize()};
+ });
private static final int HANDLE_COUNT = 4;
private static final int INDEX_LEFT = 0;
@@ -352,27 +358,19 @@
}
public static Rect getWidgetSizeRanges(Context context, int spanX, int spanY, Rect rect) {
- if (sCellSize == null) {
- InvariantDeviceProfile inv = LauncherAppState.getIDP(context);
-
- // Initiate cell sizes.
- sCellSize = new Point[2];
- sCellSize[0] = inv.landscapeProfile.getCellSize();
- sCellSize[1] = inv.portraitProfile.getCellSize();
- }
-
if (rect == null) {
rect = new Rect();
}
final float density = context.getResources().getDisplayMetrics().density;
+ final Point[] cellSize = CELL_SIZE.get(context);
// Compute landscape size
- int landWidth = (int) ((spanX * sCellSize[0].x) / density);
- int landHeight = (int) ((spanY * sCellSize[0].y) / density);
+ int landWidth = (int) ((spanX * cellSize[0].x) / density);
+ int landHeight = (int) ((spanY * cellSize[0].y) / density);
// Compute portrait size
- int portWidth = (int) ((spanX * sCellSize[1].x) / density);
- int portHeight = (int) ((spanY * sCellSize[1].y) / density);
+ int portWidth = (int) ((spanX * cellSize[1].x) / density);
+ int portHeight = (int) ((spanY * cellSize[1].y) / density);
rect.set(portWidth, landHeight, landWidth, portHeight);
return rect;
}
diff --git a/src/com/android/launcher3/BaseDraggingActivity.java b/src/com/android/launcher3/BaseDraggingActivity.java
index 772eb00..893f64a 100644
--- a/src/com/android/launcher3/BaseDraggingActivity.java
+++ b/src/com/android/launcher3/BaseDraggingActivity.java
@@ -73,8 +73,7 @@
mRotationListener = new DisplayRotationListener(this, this::onDeviceRotationChanged);
// Update theme
- WallpaperColorInfo wallpaperColorInfo = WallpaperColorInfo.getInstance(this);
- wallpaperColorInfo.addOnChangeListener(this);
+ WallpaperColorInfo.INSTANCE.get(this).addOnChangeListener(this);
int themeRes = Themes.getActivityThemeRes(this);
if (themeRes != mThemeRes) {
mThemeRes = themeRes;
@@ -234,7 +233,7 @@
@Override
protected void onDestroy() {
super.onDestroy();
- WallpaperColorInfo.getInstance(this).removeOnChangeListener(this);
+ WallpaperColorInfo.INSTANCE.get(this).removeOnChangeListener(this);
mRotationListener.disable();
}
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java
index 89bec98..ac61c49 100644
--- a/src/com/android/launcher3/CellLayout.java
+++ b/src/com/android/launcher3/CellLayout.java
@@ -179,7 +179,7 @@
private final Rect mTempRect = new Rect();
- private final static Paint sPaint = new Paint();
+ private static final Paint sPaint = new Paint();
// Related to accessible drag and drop
private DragAndDropAccessibilityDelegate mTouchHelper;
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index b8721d7..c6946ca 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -32,8 +32,8 @@
import com.android.launcher3.icons.IconProvider;
import com.android.launcher3.icons.LauncherIcons;
import com.android.launcher3.notification.NotificationListener;
+import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.pm.InstallSessionTracker;
-import com.android.launcher3.pm.PackageInstallerCompat;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.Preconditions;
@@ -109,7 +109,7 @@
mInvariantDeviceProfile.addOnChangeListener(this::onIdpChanged);
new Handler().post( () -> mInvariantDeviceProfile.verifyConfigChangedInBackground(context));
- mInstallSessionTracker = PackageInstallerCompat.getInstance(context)
+ mInstallSessionTracker = InstallSessionHelper.INSTANCE.get(context)
.registerInstallTracker(mModel, MODEL_EXECUTOR);
if (!mContext.getResources().getBoolean(R.bool.notification_dots_enabled)) {
diff --git a/src/com/android/launcher3/Partner.java b/src/com/android/launcher3/Partner.java
index af5402a..d79f62d 100644
--- a/src/com/android/launcher3/Partner.java
+++ b/src/com/android/launcher3/Partner.java
@@ -53,21 +53,12 @@
public static final String RES_GRID_NUM_COLUMNS = "grid_num_columns";
public static final String RES_GRID_ICON_SIZE_DP = "grid_icon_size_dp";
- private static boolean sSearched = false;
- private static Partner sPartner;
-
/**
* Find and return partner details, or {@code null} if none exists.
*/
public static synchronized Partner get(PackageManager pm) {
- if (!sSearched) {
- Pair<String, Resources> apkInfo = findSystemApk(ACTION_PARTNER_CUSTOMIZATION, pm);
- if (apkInfo != null) {
- sPartner = new Partner(apkInfo.first, apkInfo.second);
- }
- sSearched = true;
- }
- return sPartner;
+ Pair<String, Resources> apkInfo = findSystemApk(ACTION_PARTNER_CUSTOMIZATION, pm);
+ return apkInfo != null ? new Partner(apkInfo.first, apkInfo.second) : null;
}
private final String mPackageName;
diff --git a/src/com/android/launcher3/SessionCommitReceiver.java b/src/com/android/launcher3/SessionCommitReceiver.java
index e0c50e2..f0bae02 100644
--- a/src/com/android/launcher3/SessionCommitReceiver.java
+++ b/src/com/android/launcher3/SessionCommitReceiver.java
@@ -16,7 +16,7 @@
package com.android.launcher3;
-import static com.android.launcher3.pm.PackageInstallerCompat.getUserHandle;
+import static com.android.launcher3.pm.InstallSessionHelper.getUserHandle;
import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
@@ -40,7 +40,7 @@
import android.text.TextUtils;
import android.util.Log;
-import com.android.launcher3.pm.PackageInstallerCompat;
+import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.util.Executors;
import java.util.List;
@@ -77,7 +77,7 @@
return;
}
- PackageInstallerCompat packageInstallerCompat = PackageInstallerCompat.getInstance(context);
+ InstallSessionHelper packageInstallerCompat = InstallSessionHelper.INSTANCE.get(context);
if (TextUtils.isEmpty(info.getAppPackageName())
|| info.getInstallReason() != PackageManager.INSTALL_REASON_USER
|| packageInstallerCompat.promiseIconAddedForId(info.getSessionId())) {
diff --git a/src/com/android/launcher3/folder/FolderPreviewItemAnim.java b/src/com/android/launcher3/folder/FolderPreviewItemAnim.java
index 1e56f7d..22f7333 100644
--- a/src/com/android/launcher3/folder/FolderPreviewItemAnim.java
+++ b/src/com/android/launcher3/folder/FolderPreviewItemAnim.java
@@ -44,7 +44,8 @@
}
};
- private static PreviewItemDrawingParams sTmpParams = new PreviewItemDrawingParams(0, 0, 0, 0);
+ private static final PreviewItemDrawingParams sTmpParams =
+ new PreviewItemDrawingParams(0, 0, 0, 0);
private static final float[] sTempParamsArray = new float[3];
private final ObjectAnimator mAnimator;
diff --git a/src/com/android/launcher3/graphics/RotationMode.java b/src/com/android/launcher3/graphics/RotationMode.java
index b06305f..6dd356a 100644
--- a/src/com/android/launcher3/graphics/RotationMode.java
+++ b/src/com/android/launcher3/graphics/RotationMode.java
@@ -20,7 +20,7 @@
public abstract class RotationMode {
- public static RotationMode NORMAL = new RotationMode(0) { };
+ public static final RotationMode NORMAL = new RotationMode(0) { };
public final float surfaceRotation;
public final boolean isTransposed;
diff --git a/src/com/android/launcher3/graphics/Scrim.java b/src/com/android/launcher3/graphics/Scrim.java
index 5c14f8d..67b2b6d 100644
--- a/src/com/android/launcher3/graphics/Scrim.java
+++ b/src/com/android/launcher3/graphics/Scrim.java
@@ -31,7 +31,7 @@
public class Scrim implements View.OnAttachStateChangeListener,
WallpaperColorInfo.OnChangeListener {
- public static Property<Scrim, Float> SCRIM_PROGRESS =
+ public static final Property<Scrim, Float> SCRIM_PROGRESS =
new Property<Scrim, Float>(Float.TYPE, "scrimProgress") {
@Override
public Float get(Scrim scrim) {
@@ -55,7 +55,7 @@
public Scrim(View view) {
mRoot = view;
mLauncher = Launcher.getLauncher(view.getContext());
- mWallpaperColorInfo = WallpaperColorInfo.getInstance(mLauncher);
+ mWallpaperColorInfo = WallpaperColorInfo.INSTANCE.get(mLauncher);
view.addOnAttachStateChangeListener(this);
}
diff --git a/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java b/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java
index 6740fa1..8020f15 100644
--- a/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java
+++ b/src/com/android/launcher3/graphics/WorkspaceAndHotseatScrim.java
@@ -54,7 +54,7 @@
*/
public class WorkspaceAndHotseatScrim extends Scrim {
- public static Property<WorkspaceAndHotseatScrim, Float> SYSUI_PROGRESS =
+ public static final Property<WorkspaceAndHotseatScrim, Float> SYSUI_PROGRESS =
new Property<WorkspaceAndHotseatScrim, Float>(Float.TYPE, "sysUiProgress") {
@Override
public Float get(WorkspaceAndHotseatScrim scrim) {
@@ -67,7 +67,7 @@
}
};
- private static Property<WorkspaceAndHotseatScrim, Float> SYSUI_ANIM_MULTIPLIER =
+ private static final Property<WorkspaceAndHotseatScrim, Float> SYSUI_ANIM_MULTIPLIER =
new Property<WorkspaceAndHotseatScrim, Float>(Float.TYPE, "sysUiAnimMultiplier") {
@Override
public Float get(WorkspaceAndHotseatScrim scrim) {
diff --git a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
index fa0fe1b..eb95395 100644
--- a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
+++ b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
@@ -33,7 +33,7 @@
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.WorkspaceItemInfo;
import com.android.launcher3.model.BgDataModel.Callbacks;
-import com.android.launcher3.pm.PackageInstallerCompat;
+import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.util.GridOccupancy;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.PackageManagerHelper;
@@ -93,8 +93,8 @@
}
}
- PackageInstallerCompat packageInstaller =
- PackageInstallerCompat.getInstance(app.getContext());
+ InstallSessionHelper packageInstaller =
+ InstallSessionHelper.INSTANCE.get(app.getContext());
LauncherApps launcherApps = app.getContext().getSystemService(LauncherApps.class);
for (ItemInfo item : filteredItems) {
diff --git a/src/com/android/launcher3/model/GridSizeMigrationTask.java b/src/com/android/launcher3/model/GridSizeMigrationTask.java
index 8b76190..c35c4b9 100644
--- a/src/com/android/launcher3/model/GridSizeMigrationTask.java
+++ b/src/com/android/launcher3/model/GridSizeMigrationTask.java
@@ -29,7 +29,7 @@
import com.android.launcher3.Utilities;
import com.android.launcher3.Workspace;
import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.pm.PackageInstallerCompat;
+import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.provider.LauncherDbUtils;
import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
import com.android.launcher3.util.GridOccupancy;
@@ -971,7 +971,7 @@
.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES)) {
validPackages.add(info.packageName);
}
- PackageInstallerCompat.getInstance(context)
+ InstallSessionHelper.INSTANCE.get(context)
.getActiveSessions().keySet()
.forEach(packageUserKey -> validPackages.add(packageUserKey.mPackageName));
return validPackages;
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index cec3007..605bb75 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -67,8 +67,8 @@
import com.android.launcher3.icons.ShortcutCachingLogic;
import com.android.launcher3.icons.cache.IconCacheUpdateHandler;
import com.android.launcher3.logging.FileLog;
+import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.pm.PackageInstallInfo;
-import com.android.launcher3.pm.PackageInstallerCompat;
import com.android.launcher3.pm.UserCache;
import com.android.launcher3.provider.ImportDataTask;
import com.android.launcher3.qsb.QsbContainerView;
@@ -115,7 +115,7 @@
private final UserCache mUserCache;
private final DeepShortcutManager mShortcutManager;
- private final PackageInstallerCompat mPackageInstaller;
+ private final InstallSessionHelper mSessionHelper;
private final IconCache mIconCache;
private boolean mStopped;
@@ -131,7 +131,7 @@
mUserManager = mApp.getContext().getSystemService(UserManager.class);
mUserCache = UserCache.INSTANCE.get(mApp.getContext());
mShortcutManager = DeepShortcutManager.getInstance(mApp.getContext());
- mPackageInstaller = PackageInstallerCompat.getInstance(mApp.getContext());
+ mSessionHelper = InstallSessionHelper.INSTANCE.get(mApp.getContext());
mIconCache = mApp.getIconCache();
}
@@ -311,7 +311,7 @@
mBgDataModel.clear();
final HashMap<PackageUserKey, SessionInfo> installingPkgs =
- mPackageInstaller.getActiveSessions();
+ mSessionHelper.getActiveSessions();
installingPkgs.forEach(mApp.getIconCache()::updateSessionCache);
final PackageUserKey tempPackageKey = new PackageUserKey(null, null);
@@ -871,7 +871,7 @@
if (FeatureFlags.PROMISE_APPS_IN_ALL_APPS.get()) {
// get all active sessions and add them to the all apps list
for (PackageInstaller.SessionInfo info :
- mPackageInstaller.getAllVerifiedSessions()) {
+ mSessionHelper.getAllVerifiedSessions()) {
mBgAllAppsList.addPromiseApp(mApp.getContext(),
PackageInstallInfo.fromInstallingState(info));
}
diff --git a/src/com/android/launcher3/model/WidgetItem.java b/src/com/android/launcher3/model/WidgetItem.java
index b442c42..37c089e 100644
--- a/src/com/android/launcher3/model/WidgetItem.java
+++ b/src/com/android/launcher3/model/WidgetItem.java
@@ -2,8 +2,6 @@
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
-import android.os.Process;
-import android.os.UserHandle;
import com.android.launcher3.InvariantDeviceProfile;
import com.android.launcher3.LauncherAppWidgetProviderInfo;
@@ -12,17 +10,12 @@
import com.android.launcher3.pm.ShortcutConfigActivityInfo;
import com.android.launcher3.util.ComponentKey;
-import java.text.Collator;
-
/**
* An wrapper over various items displayed in a widget picker,
* {@link LauncherAppWidgetProviderInfo} & {@link ActivityInfo}. This provides easier access to
* common attributes like spanX and spanY.
*/
-public class WidgetItem extends ComponentKey implements Comparable<WidgetItem> {
-
- private static UserHandle sMyUserHandle;
- private static Collator sCollator;
+public class WidgetItem extends ComponentKey {
public final LauncherAppWidgetProviderInfo widgetInfo;
public final ShortcutConfigActivityInfo activityInfo;
@@ -50,34 +43,4 @@
activityInfo = info;
spanX = spanY = 1;
}
-
- @Override
- public int compareTo(WidgetItem another) {
- if (sMyUserHandle == null) {
- // Delay these object creation until required.
- sMyUserHandle = Process.myUserHandle();
- sCollator = Collator.getInstance();
- }
-
- // Independent of how the labels compare, if only one of the two widget info belongs to
- // work profile, put that one in the back.
- boolean thisWorkProfile = !sMyUserHandle.equals(user);
- boolean otherWorkProfile = !sMyUserHandle.equals(another.user);
- if (thisWorkProfile ^ otherWorkProfile) {
- return thisWorkProfile ? 1 : -1;
- }
-
- int labelCompare = sCollator.compare(label, another.label);
- if (labelCompare != 0) {
- return labelCompare;
- }
-
- // If the label is same, put the smaller widget before the larger widget. If the area is
- // also same, put the widget with smaller height before.
- int thisArea = spanX * spanY;
- int otherArea = another.spanX * another.spanY;
- return thisArea == otherArea
- ? Integer.compare(spanY, another.spanY)
- : Integer.compare(thisArea, otherArea);
- }
}
diff --git a/src/com/android/launcher3/notification/NotificationMainView.java b/src/com/android/launcher3/notification/NotificationMainView.java
index b67adbb..812268a 100644
--- a/src/com/android/launcher3/notification/NotificationMainView.java
+++ b/src/com/android/launcher3/notification/NotificationMainView.java
@@ -51,7 +51,7 @@
@TargetApi(Build.VERSION_CODES.N)
public class NotificationMainView extends FrameLayout implements SingleAxisSwipeDetector.Listener {
- private static FloatProperty<NotificationMainView> CONTENT_TRANSLATION =
+ private static final FloatProperty<NotificationMainView> CONTENT_TRANSLATION =
new FloatProperty<NotificationMainView>("contentTranslation") {
@Override
public void setValue(NotificationMainView view, float v) {
diff --git a/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java b/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
index 654e593..0f2ca72 100644
--- a/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
+++ b/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
@@ -123,7 +123,7 @@
mLauncher = Launcher.getLauncher(context);
mLineHeight = res.getDimensionPixelSize(R.dimen.dynamic_grid_page_indicator_line_height);
- boolean darkText = WallpaperColorInfo.getInstance(context).supportsDarkText();
+ boolean darkText = WallpaperColorInfo.INSTANCE.get(context).supportsDarkText();
mActiveAlpha = darkText ? BLACK_ALPHA : WHITE_ALPHA;
mLinePaint.setColor(darkText ? Color.BLACK : Color.WHITE);
}
diff --git a/src/com/android/launcher3/pm/PackageInstallerCompat.java b/src/com/android/launcher3/pm/InstallSessionHelper.java
similarity index 94%
rename from src/com/android/launcher3/pm/PackageInstallerCompat.java
rename to src/com/android/launcher3/pm/InstallSessionHelper.java
index c7b27d9..186293f 100644
--- a/src/com/android/launcher3/pm/PackageInstallerCompat.java
+++ b/src/com/android/launcher3/pm/InstallSessionHelper.java
@@ -35,6 +35,7 @@
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.IntSet;
import com.android.launcher3.util.LooperExecutor;
+import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.PackageManagerHelper;
import com.android.launcher3.util.PackageUserKey;
@@ -43,15 +44,20 @@
import java.util.Iterator;
import java.util.List;
-public class PackageInstallerCompat {
+/**
+ * Utility class to tracking install sessions
+ */
+public class InstallSessionHelper {
// Set<String> of session ids of promise icons that have been added to the home screen
// as FLAG_PROMISE_NEW_INSTALLS.
protected static final String PROMISE_ICON_IDS = "promise_icon_ids";
- private static final Object sInstanceLock = new Object();
private static final boolean DEBUG = false;
- private static PackageInstallerCompat sInstance;
+
+ public static final MainThreadInitializedObject<InstallSessionHelper> INSTANCE =
+ new MainThreadInitializedObject<>(InstallSessionHelper::new);
+
private final LauncherApps mLauncherApps;
private final Context mAppContext;
private final IntSet mPromiseIconIds;
@@ -59,7 +65,7 @@
private final PackageInstaller mInstaller;
private final HashMap<String, Boolean> mSessionVerifiedMap = new HashMap<>();
- public PackageInstallerCompat(Context context) {
+ public InstallSessionHelper(Context context) {
mInstaller = context.getPackageManager().getPackageInstaller();
mAppContext = context.getApplicationContext();
mLauncherApps = context.getSystemService(LauncherApps.class);
@@ -70,15 +76,6 @@
cleanUpPromiseIconIds();
}
- public static PackageInstallerCompat getInstance(Context context) {
- synchronized (sInstanceLock) {
- if (sInstance == null) {
- sInstance = new PackageInstallerCompat(context);
- }
- return sInstance;
- }
- }
-
public static UserHandle getUserHandle(SessionInfo info) {
return Utilities.ATLEAST_Q ? info.getUser() : Process.myUserHandle();
}
diff --git a/src/com/android/launcher3/pm/InstallSessionTracker.java b/src/com/android/launcher3/pm/InstallSessionTracker.java
index f157603..eb3ca73 100644
--- a/src/com/android/launcher3/pm/InstallSessionTracker.java
+++ b/src/com/android/launcher3/pm/InstallSessionTracker.java
@@ -15,9 +15,9 @@
*/
package com.android.launcher3.pm;
+import static com.android.launcher3.pm.InstallSessionHelper.getUserHandle;
import static com.android.launcher3.pm.PackageInstallInfo.STATUS_FAILED;
import static com.android.launcher3.pm.PackageInstallInfo.STATUS_INSTALLED;
-import static com.android.launcher3.pm.PackageInstallerCompat.getUserHandle;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageInstaller.SessionInfo;
@@ -31,10 +31,10 @@
// Lazily initialized
private SparseArray<PackageUserKey> mActiveSessions = null;
- private final PackageInstallerCompat mInstallerCompat;
+ private final InstallSessionHelper mInstallerCompat;
private final Callback mCallback;
- InstallSessionTracker(PackageInstallerCompat installerCompat, Callback callback) {
+ InstallSessionTracker(InstallSessionHelper installerCompat, Callback callback) {
mInstallerCompat = installerCompat;
mCallback = callback;
}
diff --git a/src/com/android/launcher3/pm/PackageInstallInfo.java b/src/com/android/launcher3/pm/PackageInstallInfo.java
index 6776ec4..7997d16 100644
--- a/src/com/android/launcher3/pm/PackageInstallInfo.java
+++ b/src/com/android/launcher3/pm/PackageInstallInfo.java
@@ -38,7 +38,7 @@
this.packageName = info.getAppPackageName();
this.componentName = new ComponentName(packageName, "");
this.progress = (int) (info.getProgress() * 100f);
- this.user = PackageInstallerCompat.getUserHandle(info);
+ this.user = InstallSessionHelper.getUserHandle(info);
}
public PackageInstallInfo(String packageName, int state, int progress, UserHandle user) {
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
index 222c6c9..b580bd6 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -144,7 +144,7 @@
}
}
- public static Factory<BaseDraggingActivity> INSTALL = (activity, itemInfo) -> {
+ public static final Factory<BaseDraggingActivity> INSTALL = (activity, itemInfo) -> {
boolean supportsWebUI = (itemInfo instanceof WorkspaceItemInfo)
&& ((WorkspaceItemInfo) itemInfo).hasStatusFlag(
WorkspaceItemInfo.FLAG_SUPPORTS_WEB_UI);
@@ -176,7 +176,7 @@
}
}
- public static Factory<Launcher> DISMISS_PREDICTION = (launcher, itemInfo) -> {
+ public static final Factory<Launcher> DISMISS_PREDICTION = (launcher, itemInfo) -> {
if (!FeatureFlags.ENABLE_PREDICTION_DISMISS.get()) return null;
if (itemInfo.container != LauncherSettings.Favorites.CONTAINER_PREDICTION) return null;
return new DismissPrediction(launcher, itemInfo);
diff --git a/src/com/android/launcher3/touch/ItemClickHandler.java b/src/com/android/launcher3/touch/ItemClickHandler.java
index 7e65840..f7ce160 100644
--- a/src/com/android/launcher3/touch/ItemClickHandler.java
+++ b/src/com/android/launcher3/touch/ItemClickHandler.java
@@ -51,7 +51,7 @@
import com.android.launcher3.WorkspaceItemInfo;
import com.android.launcher3.folder.Folder;
import com.android.launcher3.folder.FolderIcon;
-import com.android.launcher3.pm.PackageInstallerCompat;
+import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.util.PackageManagerHelper;
import com.android.launcher3.views.FloatingIconView;
import com.android.launcher3.widget.PendingAppWidgetHostView;
@@ -169,8 +169,8 @@
private static void startMarketIntentForPackage(View v, Launcher launcher, String packageName) {
ItemInfo item = (ItemInfo) v.getTag();
if (Utilities.ATLEAST_Q) {
- PackageInstallerCompat pkgInstaller = PackageInstallerCompat.getInstance(launcher);
- SessionInfo sessionInfo = pkgInstaller.getActiveSessionInfo(item.user, packageName);
+ SessionInfo sessionInfo = InstallSessionHelper.INSTANCE.get(launcher)
+ .getActiveSessionInfo(item.user, packageName);
if (sessionInfo != null) {
LauncherApps launcherApps = launcher.getSystemService(LauncherApps.class);
try {
diff --git a/src/com/android/launcher3/touch/ItemLongClickListener.java b/src/com/android/launcher3/touch/ItemLongClickListener.java
index aa02d0a..ba1bfa5 100644
--- a/src/com/android/launcher3/touch/ItemLongClickListener.java
+++ b/src/com/android/launcher3/touch/ItemLongClickListener.java
@@ -22,7 +22,6 @@
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.OVERVIEW;
-import android.util.Log;
import android.view.View;
import android.view.View.OnLongClickListener;
@@ -34,19 +33,16 @@
import com.android.launcher3.dragndrop.DragController;
import com.android.launcher3.dragndrop.DragOptions;
import com.android.launcher3.folder.Folder;
-import com.android.launcher3.testing.TestProtocol;
-
-import java.util.Arrays;
/**
* Class to handle long-clicks on workspace items and start drag as a result.
*/
public class ItemLongClickListener {
- public static OnLongClickListener INSTANCE_WORKSPACE =
+ public static final OnLongClickListener INSTANCE_WORKSPACE =
ItemLongClickListener::onWorkspaceItemLongClick;
- public static OnLongClickListener INSTANCE_ALL_APPS =
+ public static final OnLongClickListener INSTANCE_ALL_APPS =
ItemLongClickListener::onAllAppsItemLongClick;
private static boolean onWorkspaceItemLongClick(View v) {
diff --git a/src/com/android/launcher3/util/PackageManagerHelper.java b/src/com/android/launcher3/util/PackageManagerHelper.java
index 91f687e..2d56ce7 100644
--- a/src/com/android/launcher3/util/PackageManagerHelper.java
+++ b/src/com/android/launcher3/util/PackageManagerHelper.java
@@ -16,6 +16,8 @@
package com.android.launcher3.util;
+import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
+
import android.app.AppOpsManager;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
@@ -297,16 +299,13 @@
*/
public static Pair<String, Resources> findSystemApk(String action, PackageManager pm) {
final Intent intent = new Intent(action);
- for (ResolveInfo info : pm.queryBroadcastReceivers(intent, 0)) {
- if (info.activityInfo != null &&
- (info.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
- final String packageName = info.activityInfo.packageName;
- try {
- final Resources res = pm.getResourcesForApplication(packageName);
- return Pair.create(packageName, res);
- } catch (NameNotFoundException e) {
- Log.w(TAG, "Failed to find resources for " + packageName);
- }
+ for (ResolveInfo info : pm.queryBroadcastReceivers(intent, MATCH_SYSTEM_ONLY)) {
+ final String packageName = info.activityInfo.packageName;
+ try {
+ final Resources res = pm.getResourcesForApplication(packageName);
+ return Pair.create(packageName, res);
+ } catch (NameNotFoundException e) {
+ Log.w(TAG, "Failed to find resources for " + packageName);
}
}
return null;
diff --git a/src/com/android/launcher3/util/Themes.java b/src/com/android/launcher3/util/Themes.java
index 0d02715..da59afe 100644
--- a/src/com/android/launcher3/util/Themes.java
+++ b/src/com/android/launcher3/util/Themes.java
@@ -36,7 +36,7 @@
public class Themes {
public static int getActivityThemeRes(Context context) {
- WallpaperColorInfo wallpaperColorInfo = WallpaperColorInfo.getInstance(context);
+ WallpaperColorInfo wallpaperColorInfo = WallpaperColorInfo.INSTANCE.get(context);
boolean darkTheme;
if (Utilities.ATLEAST_Q) {
Configuration configuration = context.getResources().getConfiguration();
diff --git a/src/com/android/launcher3/util/UiThreadHelper.java b/src/com/android/launcher3/util/UiThreadHelper.java
index ec87e79..0498052 100644
--- a/src/com/android/launcher3/util/UiThreadHelper.java
+++ b/src/com/android/launcher3/util/UiThreadHelper.java
@@ -29,26 +29,20 @@
*/
public class UiThreadHelper {
- private static Handler sHandler;
+ private static final MainThreadInitializedObject<Handler> HANDLER =
+ new MainThreadInitializedObject<>(
+ c -> new Handler(UI_HELPER_EXECUTOR.getLooper(), new UiCallbacks(c)));
private static final int MSG_HIDE_KEYBOARD = 1;
private static final int MSG_SET_ORIENTATION = 2;
private static final int MSG_RUN_COMMAND = 3;
- private static Handler getHandler(Context context) {
- if (sHandler == null) {
- sHandler = new Handler(UI_HELPER_EXECUTOR.getLooper(),
- new UiCallbacks(context.getApplicationContext()));
- }
- return sHandler;
- }
-
public static void hideKeyboardAsync(Context context, IBinder token) {
- Message.obtain(getHandler(context), MSG_HIDE_KEYBOARD, token).sendToTarget();
+ Message.obtain(HANDLER.get(context), MSG_HIDE_KEYBOARD, token).sendToTarget();
}
public static void setOrientationAsync(Activity activity, int orientation) {
- Message.obtain(getHandler(activity), MSG_SET_ORIENTATION, orientation, 0, activity)
+ Message.obtain(HANDLER.get(activity), MSG_SET_ORIENTATION, orientation, 0, activity)
.sendToTarget();
}
@@ -58,7 +52,7 @@
}
public static void runAsyncCommand(Context context, AsyncCommand command, int arg1, int arg2) {
- Message.obtain(getHandler(context), MSG_RUN_COMMAND, arg1, arg2, command).sendToTarget();
+ Message.obtain(HANDLER.get(context), MSG_RUN_COMMAND, arg1, arg2, command).sendToTarget();
}
private static class UiCallbacks implements Handler.Callback {
diff --git a/src/com/android/launcher3/views/AbstractSlideInView.java b/src/com/android/launcher3/views/AbstractSlideInView.java
index 195a77a..9334c46 100644
--- a/src/com/android/launcher3/views/AbstractSlideInView.java
+++ b/src/com/android/launcher3/views/AbstractSlideInView.java
@@ -41,7 +41,7 @@
public abstract class AbstractSlideInView extends AbstractFloatingView
implements SingleAxisSwipeDetector.Listener {
- protected static Property<AbstractSlideInView, Float> TRANSLATION_SHIFT =
+ protected static final Property<AbstractSlideInView, Float> TRANSLATION_SHIFT =
new Property<AbstractSlideInView, Float>(Float.class, "translationShift") {
@Override
diff --git a/src/com/android/launcher3/views/ScrimView.java b/src/com/android/launcher3/views/ScrimView.java
index e64b2fb..8ce98f2 100644
--- a/src/com/android/launcher3/views/ScrimView.java
+++ b/src/com/android/launcher3/views/ScrimView.java
@@ -131,7 +131,7 @@
public ScrimView(Context context, AttributeSet attrs) {
super(context, attrs);
mLauncher = Launcher.cast(Launcher.getLauncher(context));
- mWallpaperColorInfo = WallpaperColorInfo.getInstance(context);
+ mWallpaperColorInfo = WallpaperColorInfo.INSTANCE.get(context);
mEndScrim = Themes.getAttrColor(context, R.attr.allAppsScrimColor);
mMaxScrimAlpha = 0.7f;
diff --git a/src/com/android/launcher3/widget/BaseWidgetSheet.java b/src/com/android/launcher3/widget/BaseWidgetSheet.java
index 72cddc7..6cae43d 100644
--- a/src/com/android/launcher3/widget/BaseWidgetSheet.java
+++ b/src/com/android/launcher3/widget/BaseWidgetSheet.java
@@ -182,7 +182,7 @@
View view = new View(context);
view.forceHasOverlappingRendering(false);
- WallpaperColorInfo colors = WallpaperColorInfo.getInstance(context);
+ WallpaperColorInfo colors = WallpaperColorInfo.INSTANCE.get(context);
int alpha = context.getResources().getInteger(R.integer.extracted_color_gradient_alpha);
view.setBackgroundColor(setColorAlphaBound(colors.getSecondaryColor(), alpha));