Loading aconfig/launcher.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -485,3 +485,10 @@ flag { description: "Enables launcher recents opening inside of a window instead of being hosted in launcher activity." bug: "292269949" } flag { name: "enforce_system_radius_for_app_widgets" namespace: "launcher" description: "Enforce system radius for widget corners instead of a separate 16.dp value" bug: "370950552" } src/com/android/launcher3/widget/RoundedCornerEnforcement.java +6 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.launcher3.widget; import static com.android.launcher3.Flags.enforceSystemRadiusForAppWidgets; import android.appwidget.AppWidgetHostView; import android.content.Context; import android.content.res.Resources; Loading Loading @@ -97,6 +99,10 @@ public class RoundedCornerEnforcement { public static float computeEnforcedRadius(@NonNull Context context) { Resources res = context.getResources(); float systemRadius = res.getDimension(android.R.dimen.system_app_widget_background_radius); if (enforceSystemRadiusForAppWidgets()) { return systemRadius; } float defaultRadius = res.getDimension(R.dimen.enforced_rounded_corner_max_radius); return Math.min(defaultRadius, systemRadius); } Loading tests/multivalentTests/src/com/android/launcher3/widget/RoundedCornerEnforcementTest.kt +45 −2 Original line number Diff line number Diff line Loading @@ -19,14 +19,19 @@ package com.android.launcher3.widget import android.content.Context import android.content.res.Resources import android.graphics.Rect import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.SetFlagsRule import android.view.View import android.view.ViewGroup import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.launcher3.Flags import com.android.launcher3.R import org.junit.Assert.assertEquals import org.junit.Assert.assertSame import org.junit.Assert.assertTrue import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.mock Loading @@ -38,6 +43,8 @@ import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) class RoundedCornerEnforcementTest { @get:Rule val setFlagsRule: SetFlagsRule = SetFlagsRule() @Test fun `Widget view has one background`() { val mockWidgetView = mock(LauncherAppWidgetHostView::class.java) Loading Loading @@ -72,14 +79,15 @@ class RoundedCornerEnforcementTest { RoundedCornerEnforcement.computeRoundedRectangle( mockWidgetView, mockBackgroundView, testRect testRect, ) assertEquals(Rect(50, 75, 250, 275), testRect) } @Test fun `Compute system radius`() { @DisableFlags(Flags.FLAG_ENFORCE_SYSTEM_RADIUS_FOR_APP_WIDGETS) fun `Compute system radius when smaller`() { val mockContext = mock(Context::class.java) val mockRes = mock(Resources::class.java) Loading @@ -94,6 +102,41 @@ class RoundedCornerEnforcementTest { assertEquals(RADIUS, RoundedCornerEnforcement.computeEnforcedRadius(mockContext)) } @Test @DisableFlags(Flags.FLAG_ENFORCE_SYSTEM_RADIUS_FOR_APP_WIDGETS) fun `Compute launcher radius when smaller`() { val mockContext = mock(Context::class.java) val mockRes = mock(Resources::class.java) doReturn(mockRes).whenever(mockContext).resources doReturn(LAUNCHER_RADIUS + 8f) .whenever(mockRes) .getDimension(eq(android.R.dimen.system_app_widget_background_radius)) doReturn(LAUNCHER_RADIUS) .whenever(mockRes) .getDimension(eq(R.dimen.enforced_rounded_corner_max_radius)) assertEquals(LAUNCHER_RADIUS, RoundedCornerEnforcement.computeEnforcedRadius(mockContext)) } @Test @EnableFlags(Flags.FLAG_ENFORCE_SYSTEM_RADIUS_FOR_APP_WIDGETS) fun `Compute system radius ignoring launcher radius`() { val mockContext = mock(Context::class.java) val mockRes = mock(Resources::class.java) doReturn(mockRes).whenever(mockContext).resources val systemRadius = LAUNCHER_RADIUS + 8f doReturn(systemRadius) .whenever(mockRes) .getDimension(eq(android.R.dimen.system_app_widget_background_radius)) doReturn(LAUNCHER_RADIUS) .whenever(mockRes) .getDimension(eq(R.dimen.enforced_rounded_corner_max_radius)) assertEquals(systemRadius, RoundedCornerEnforcement.computeEnforcedRadius(mockContext)) } companion object { const val WIDTH = 200 const val HEIGHT = 200 Loading Loading
aconfig/launcher.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -485,3 +485,10 @@ flag { description: "Enables launcher recents opening inside of a window instead of being hosted in launcher activity." bug: "292269949" } flag { name: "enforce_system_radius_for_app_widgets" namespace: "launcher" description: "Enforce system radius for widget corners instead of a separate 16.dp value" bug: "370950552" }
src/com/android/launcher3/widget/RoundedCornerEnforcement.java +6 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.launcher3.widget; import static com.android.launcher3.Flags.enforceSystemRadiusForAppWidgets; import android.appwidget.AppWidgetHostView; import android.content.Context; import android.content.res.Resources; Loading Loading @@ -97,6 +99,10 @@ public class RoundedCornerEnforcement { public static float computeEnforcedRadius(@NonNull Context context) { Resources res = context.getResources(); float systemRadius = res.getDimension(android.R.dimen.system_app_widget_background_radius); if (enforceSystemRadiusForAppWidgets()) { return systemRadius; } float defaultRadius = res.getDimension(R.dimen.enforced_rounded_corner_max_radius); return Math.min(defaultRadius, systemRadius); } Loading
tests/multivalentTests/src/com/android/launcher3/widget/RoundedCornerEnforcementTest.kt +45 −2 Original line number Diff line number Diff line Loading @@ -19,14 +19,19 @@ package com.android.launcher3.widget import android.content.Context import android.content.res.Resources import android.graphics.Rect import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.SetFlagsRule import android.view.View import android.view.ViewGroup import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.launcher3.Flags import com.android.launcher3.R import org.junit.Assert.assertEquals import org.junit.Assert.assertSame import org.junit.Assert.assertTrue import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.mock Loading @@ -38,6 +43,8 @@ import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) class RoundedCornerEnforcementTest { @get:Rule val setFlagsRule: SetFlagsRule = SetFlagsRule() @Test fun `Widget view has one background`() { val mockWidgetView = mock(LauncherAppWidgetHostView::class.java) Loading Loading @@ -72,14 +79,15 @@ class RoundedCornerEnforcementTest { RoundedCornerEnforcement.computeRoundedRectangle( mockWidgetView, mockBackgroundView, testRect testRect, ) assertEquals(Rect(50, 75, 250, 275), testRect) } @Test fun `Compute system radius`() { @DisableFlags(Flags.FLAG_ENFORCE_SYSTEM_RADIUS_FOR_APP_WIDGETS) fun `Compute system radius when smaller`() { val mockContext = mock(Context::class.java) val mockRes = mock(Resources::class.java) Loading @@ -94,6 +102,41 @@ class RoundedCornerEnforcementTest { assertEquals(RADIUS, RoundedCornerEnforcement.computeEnforcedRadius(mockContext)) } @Test @DisableFlags(Flags.FLAG_ENFORCE_SYSTEM_RADIUS_FOR_APP_WIDGETS) fun `Compute launcher radius when smaller`() { val mockContext = mock(Context::class.java) val mockRes = mock(Resources::class.java) doReturn(mockRes).whenever(mockContext).resources doReturn(LAUNCHER_RADIUS + 8f) .whenever(mockRes) .getDimension(eq(android.R.dimen.system_app_widget_background_radius)) doReturn(LAUNCHER_RADIUS) .whenever(mockRes) .getDimension(eq(R.dimen.enforced_rounded_corner_max_radius)) assertEquals(LAUNCHER_RADIUS, RoundedCornerEnforcement.computeEnforcedRadius(mockContext)) } @Test @EnableFlags(Flags.FLAG_ENFORCE_SYSTEM_RADIUS_FOR_APP_WIDGETS) fun `Compute system radius ignoring launcher radius`() { val mockContext = mock(Context::class.java) val mockRes = mock(Resources::class.java) doReturn(mockRes).whenever(mockContext).resources val systemRadius = LAUNCHER_RADIUS + 8f doReturn(systemRadius) .whenever(mockRes) .getDimension(eq(android.R.dimen.system_app_widget_background_radius)) doReturn(LAUNCHER_RADIUS) .whenever(mockRes) .getDimension(eq(R.dimen.enforced_rounded_corner_max_radius)) assertEquals(systemRadius, RoundedCornerEnforcement.computeEnforcedRadius(mockContext)) } companion object { const val WIDTH = 200 const val HEIGHT = 200 Loading