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:
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user