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) }