Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d6f39e3f authored by Shamali Patwa's avatar Shamali Patwa Committed by Android (Google) Code Review
Browse files

Merge "Enforce system radius instead of separate value for widgets in launcher" into main

parents 08007068 2fc32dc2
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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"
}
+6 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);
    }
+45 −2
Original line number Diff line number Diff line
@@ -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
@@ -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)
@@ -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)

@@ -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