Merge "Log widget dimensions before deleting a widget violating min size" into sc-dev am: 21780405ac

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15015050

Change-Id: I8e2b4160bef59aa17f131a384642975eb0bfbd2c
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index 34a21fe..d373cf4 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.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.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.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;
@@ -756,6 +760,9 @@
                                 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"
@@ -982,6 +989,51 @@
                 && (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) {