diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index 79396b1fc9..318496ad19 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -28,6 +28,7 @@ import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; import static com.android.launcher3.util.PackageManagerHelper.hasShortcutsPermission; import static com.android.launcher3.util.PackageManagerHelper.isSystemApp; +import android.annotation.SuppressLint; import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; import android.content.ContentResolver; @@ -40,6 +41,7 @@ import android.content.pm.PackageInstaller; import android.content.pm.PackageInstaller.SessionInfo; import android.content.pm.PackageManager; import android.content.pm.ShortcutInfo; +import android.graphics.Point; import android.net.Uri; import android.os.Bundle; import android.os.UserHandle; @@ -50,6 +52,8 @@ import android.util.Log; import android.util.LongSparseArray; import android.util.TimingLogger; +import com.android.launcher3.DeviceProfile; +import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherModel; import com.android.launcher3.LauncherSettings; @@ -754,6 +758,9 @@ public class LoaderTask implements Runnable { if (widgetProviderInfo != null && (appWidgetInfo.spanX < widgetProviderInfo.minSpanX || appWidgetInfo.spanY < widgetProviderInfo.minSpanY)) { + logDeleteWidgetInfo(mApp.getInvariantDeviceProfile(), + widgetProviderInfo); + // This can happen when display size changes. c.markDeleted("Widget removed, min sizes not met: " + "span=" + appWidgetInfo.spanX + "x" @@ -980,6 +987,51 @@ public class LoaderTask implements Runnable { && (provider.provider.getPackageName() != null); } + @SuppressLint("NewApi") // Already added API check. + private static void logDeleteWidgetInfo(InvariantDeviceProfile idp, + LauncherAppWidgetProviderInfo widgetProviderInfo) { + FileLog.d(TAG, "Deleting " + widgetProviderInfo.getComponent() + + " due to min size constraint"); + Point cellSize = new Point(); + for (DeviceProfile deviceProfile : idp.supportedProfiles) { + deviceProfile.getCellSize(cellSize); + FileLog.d(TAG, "DeviceProfile available width: " + deviceProfile.availableWidthPx + + ", available height: " + deviceProfile.availableHeightPx + + ", cellLayoutBorderSpacingPx: " + deviceProfile.cellLayoutBorderSpacingPx + + ", cellSize: " + cellSize); + } + + StringBuilder widgetDimension = new StringBuilder(); + widgetDimension.append("Widget dimensions:\n") + .append("minResizeWidth: ") + .append(widgetProviderInfo.minResizeWidth) + .append("\n") + .append("minResizeHeight: ") + .append(widgetProviderInfo.minResizeHeight) + .append("\n") + .append("defaultWidth: ") + .append(widgetProviderInfo.minWidth) + .append("\n") + .append("defaultHeight: ") + .append(widgetProviderInfo.minHeight) + .append("\n"); + if (Utilities.ATLEAST_S) { + widgetDimension.append("targetCellWidth: ") + .append(widgetProviderInfo.targetCellWidth) + .append("\n") + .append("targetCellHeight: ") + .append(widgetProviderInfo.targetCellHeight) + .append("\n") + .append("maxResizeWidth: ") + .append(widgetProviderInfo.maxResizeWidth) + .append("\n") + .append("maxResizeHeight: ") + .append(widgetProviderInfo.maxResizeHeight) + .append("\n"); + } + FileLog.d(TAG, widgetDimension.toString()); + } + private static void logASplit(final TimingLogger logger, final String label) { logger.addSplit(label); if (DEBUG) {