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
This commit is contained in:
Shamali P
2025-05-16 15:26:39 +00:00
committed by Shamali Patwa
parent a098f6a855
commit 4cb6ff3838
4 changed files with 20 additions and 12 deletions
@@ -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()));
@@ -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;
}
@@ -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);
@@ -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)
}