From 4cb6ff383854fab293ceb25fa3f236efb10cd1fa Mon Sep 17 00:00:00 2001 From: Shamali P Date: Fri, 16 May 2025 15:26:39 +0000 Subject: [PATCH] Pass device profile as constructor arg to DatabaseWidgetPreviewLoader This is so, we can use it with compose, and let caller pass the needed dependencies. May also convert to dagger in followup Bug: 408283627 Flag: EXEMPT BUGFIX Test: N/A Change-Id: I9b04011ec2592df3bd02bd74ec4889eb05928e7f --- .../widget/DatabaseWidgetPreviewLoader.java | 11 ++++++----- .../launcher3/widget/PendingItemDragHelper.java | 6 +++--- src/com/android/launcher3/widget/WidgetCell.java | 3 ++- .../android/launcher3/widget/GeneratedPreviewTest.kt | 12 +++++++++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java b/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java index d4538dd316..5b4b016773 100644 --- a/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java +++ b/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java @@ -68,8 +68,11 @@ public class DatabaseWidgetPreviewLoader { private final Context mContext; - public DatabaseWidgetPreviewLoader(Context context) { + private final DeviceProfile mDeviceProfile; + + public DatabaseWidgetPreviewLoader(Context context, DeviceProfile deviceProfile) { mContext = context; + mDeviceProfile = deviceProfile; } /** @@ -182,14 +185,12 @@ public class DatabaseWidgetPreviewLoader { int previewWidth; int previewHeight; - DeviceProfile dp = ActivityContext.lookupContext(mContext).getDeviceProfile(); - if (widgetPreviewExists && drawable.getIntrinsicWidth() > 0 && drawable.getIntrinsicHeight() > 0) { previewWidth = drawable.getIntrinsicWidth(); previewHeight = drawable.getIntrinsicHeight(); } else { - Size widgetSize = WidgetSizes.getWidgetSizePx(dp, spanX, spanY); + Size widgetSize = WidgetSizes.getWidgetSizePx(mDeviceProfile, spanX, spanY); previewWidth = widgetSize.getWidth(); previewHeight = widgetSize.getHeight(); } @@ -253,7 +254,7 @@ public class DatabaseWidgetPreviewLoader { Drawable icon = info.getFullResIcon( LauncherAppState.getInstance(mContext).getIconCache()); if (icon != null) { - int appIconSize = dp.iconSizePx; + int appIconSize = mDeviceProfile.iconSizePx; int iconSize = (int) Math.min(appIconSize * scale, Math.min(boxRect.width(), boxRect.height())); diff --git a/src/com/android/launcher3/widget/PendingItemDragHelper.java b/src/com/android/launcher3/widget/PendingItemDragHelper.java index 130d533ca4..2c3ac26503 100644 --- a/src/com/android/launcher3/widget/PendingItemDragHelper.java +++ b/src/com/android/launcher3/widget/PendingItemDragHelper.java @@ -133,9 +133,9 @@ public class PendingItemDragHelper extends DragPreviewProvider { previewSizeBeforeScale[0] = mAppWidgetHostViewPreview.getMeasuredWidth(); } if (preview == null && mAppWidgetHostViewPreview == null) { - Drawable p = new FastBitmapDrawable(new DatabaseWidgetPreviewLoader(launcher) - .generateWidgetPreview( - createWidgetInfo.info, maxWidth, previewSizeBeforeScale)); + Drawable p = new FastBitmapDrawable(new DatabaseWidgetPreviewLoader(launcher, + launcher.getDeviceProfile()).generateWidgetPreview(createWidgetInfo.info, + maxWidth, previewSizeBeforeScale)); p = new RoundDrawableWrapper(p, mEnforcedRoundedCornersForWidget); preview = p; } diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java index b592c32c37..74122b9dad 100644 --- a/src/com/android/launcher3/widget/WidgetCell.java +++ b/src/com/android/launcher3/widget/WidgetCell.java @@ -130,7 +130,8 @@ public class WidgetCell extends LinearLayout { super(context, attrs, defStyle); mActivity = ActivityContext.lookupContext(context); - mWidgetPreviewLoader = new DatabaseWidgetPreviewLoader(context); + mWidgetPreviewLoader = new DatabaseWidgetPreviewLoader(context, + mActivity.getDeviceProfile()); mLongPressHelper = new CheckLongPressHelper(this); mLongPressHelper.setLongPressTimeoutFactor(1); mEnforcedCornerRadius = RoundedCornerEnforcement.computeEnforcedRadius(context); diff --git a/tests/multivalentTests/src/com/android/launcher3/widget/GeneratedPreviewTest.kt b/tests/multivalentTests/src/com/android/launcher3/widget/GeneratedPreviewTest.kt index 80fa2fa421..b1e75184b5 100644 --- a/tests/multivalentTests/src/com/android/launcher3/widget/GeneratedPreviewTest.kt +++ b/tests/multivalentTests/src/com/android/launcher3/widget/GeneratedPreviewTest.kt @@ -17,6 +17,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation import com.android.launcher3.Flags.FLAG_ENABLE_GENERATED_PREVIEWS +import com.android.launcher3.InvariantDeviceProfile import com.android.launcher3.R import com.android.launcher3.icons.IconCache import com.android.launcher3.model.WidgetItem @@ -58,6 +59,7 @@ class GeneratedPreviewTest { private lateinit var widgetCell: WidgetCell private lateinit var appWidgetProviderInfo: LauncherAppWidgetProviderInfo private lateinit var widgetItem: WidgetItem + private lateinit var idp: InvariantDeviceProfile @Mock lateinit var iconCache: IconCache @@ -67,6 +69,7 @@ class GeneratedPreviewTest { generatedPreview = RemoteViews(context.packageName, generatedPreviewLayout) uiContext = ActivityContextWrapper(ContextThemeWrapper(context, R.style.WidgetContainerTheme)) + idp = InvariantDeviceProfile.INSTANCE[uiContext] widgetCell = LayoutInflater.from(uiContext).inflate(R.layout.widget_cell, null) as WidgetCell appWidgetProviderInfo = @@ -98,7 +101,6 @@ class GeneratedPreviewTest { private fun createWidgetItem() { Executors.MODEL_EXECUTOR.submit { - val idp = context.appComponent.idp widgetItem = WidgetItem(appWidgetProviderInfo, idp, iconCache, context) } .get() @@ -108,13 +110,17 @@ class GeneratedPreviewTest { fun widgetItem_hasGeneratedPreview_noPreview() { appWidgetProviderInfo.generatedPreviewCategories = 0 createWidgetItem() - val preview = DatabaseWidgetPreviewLoader(uiContext).generatePreviewInfoBg(widgetItem, 1, 1) + val preview = + DatabaseWidgetPreviewLoader(uiContext, idp.getDeviceProfile(uiContext)) + .generatePreviewInfoBg(widgetItem, 1, 1) assertThat(preview.remoteViews).isNull() } @Test fun widgetItem_getGeneratedPreview() { - val preview = DatabaseWidgetPreviewLoader(uiContext).generatePreviewInfoBg(widgetItem, 1, 1) + val preview = + DatabaseWidgetPreviewLoader(uiContext, idp.getDeviceProfile(uiContext)) + .generatePreviewInfoBg(widgetItem, 1, 1) assertThat(preview.remoteViews).isEqualTo(generatedPreview) }