Allow restore between TYPE_PHONE AND TYPE_MULTI_DISPLAY

Bug: 199407109
Test: manual
Change-Id: I6eb982a79f4130925a9d7e0972faf0f01a6aac20
diff --git a/src/com/android/launcher3/model/DeviceGridState.java b/src/com/android/launcher3/model/DeviceGridState.java
index 761053d..1076e88 100644
--- a/src/com/android/launcher3/model/DeviceGridState.java
+++ b/src/com/android/launcher3/model/DeviceGridState.java
@@ -28,6 +28,7 @@
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.logging.StatsLogManager.LauncherEvent;
+import com.android.launcher3.util.IntSet;
 
 import java.util.Locale;
 import java.util.Objects;
@@ -44,6 +45,7 @@
     public static final int TYPE_PHONE = 0;
     public static final int TYPE_MULTI_DISPLAY = 1;
     public static final int TYPE_TABLET = 2;
+    public static final IntSet COMPATIBLE_TYPES = IntSet.wrap(TYPE_PHONE, TYPE_MULTI_DISPLAY);
 
     private final String mGridSizeString;
     private final int mNumHotseat;
@@ -109,7 +111,9 @@
         if (o == null || getClass() != o.getClass()) return false;
         DeviceGridState that = (DeviceGridState) o;
         return mNumHotseat == that.mNumHotseat
-                && mDeviceType == that.mDeviceType
+                && (mDeviceType == that.mDeviceType
+                    || (COMPATIBLE_TYPES.contains(mDeviceType)
+                        && COMPATIBLE_TYPES.contains(that.mDeviceType)))
                 && Objects.equals(mGridSizeString, that.mGridSizeString);
     }
 }