diff --git a/robolectric_tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java b/robolectric_tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java index c7286e5676..2d87957cf7 100644 --- a/robolectric_tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java +++ b/robolectric_tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java @@ -36,6 +36,10 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + @RunWith(RobolectricTestRunner.class) public final class LauncherAppWidgetProviderInfoTest { @@ -234,10 +238,11 @@ public final class LauncherAppWidgetProviderInfoTest { Mockito.when(profile.getCellSize()).thenReturn(new Point(CELL_SIZE, CELL_SIZE)); InvariantDeviceProfile idp = new InvariantDeviceProfile(); - idp.supportedProfiles.add(profile); + List supportedProfiles = new ArrayList<>(idp.supportedProfiles); + supportedProfiles.add(profile); + idp.supportedProfiles = Collections.unmodifiableList(supportedProfiles); idp.numColumns = NUM_OF_COLS; idp.numRows = NUM_OF_ROWS; return idp; } - } diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java index 318dde1ecc..29a0223612 100644 --- a/src/com/android/launcher3/InvariantDeviceProfile.java +++ b/src/com/android/launcher3/InvariantDeviceProfile.java @@ -140,7 +140,10 @@ public class InvariantDeviceProfile { public int defaultLayoutId; int demoModeLayoutId; - public final List supportedProfiles = new ArrayList<>(); + /** + * An immutable list of supported profiles. + */ + public List supportedProfiles = Collections.EMPTY_LIST; @Nullable public DevicePaddings devicePaddings; @@ -322,10 +325,10 @@ public class InvariantDeviceProfile { // Supported overrides: numRows, numColumns, iconSize applyPartnerDeviceProfileOverrides(context, metrics); - supportedProfiles.clear(); + final List localSupportedProfiles = new ArrayList<>(); defaultWallpaperSize = new Point(displayInfo.currentSize); for (WindowBounds bounds : displayInfo.supportedBounds) { - supportedProfiles.add(new DeviceProfile.Builder(context, this, displayInfo) + localSupportedProfiles.add(new DeviceProfile.Builder(context, this, displayInfo) .setUseTwoPanels(isSplitDisplay) .setWindowBounds(bounds).build()); @@ -343,6 +346,7 @@ public class InvariantDeviceProfile { defaultWallpaperSize.x = Math.max(defaultWallpaperSize.x, Math.round(parallaxFactor * displayWidth)); } + supportedProfiles = Collections.unmodifiableList(localSupportedProfiles); ComponentName cn = new ComponentName(context.getPackageName(), getClass().getName()); defaultWidgetPadding = AppWidgetHostView.getDefaultPaddingForWidget(context, cn, null);