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

Commit 513e53d8 authored by Android Build Prod User's avatar Android Build Prod User Committed by Automerger Merge Worker
Browse files

Merge "Mutate the drawable when updating QS icon." into sc-qpr1-dev am: 590dc710

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15668772

Change-Id: I2461d957e8b3a72278e07b0becb1d4f00cd29cb3
parents da610ed6 590dc710
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -116,6 +116,9 @@ public class QSIconViewImpl extends QSIconView {
                    : icon.getInvisibleDrawable(mContext) : null;
            int padding = icon != null ? icon.getPadding() : 0;
            if (d != null) {
                if (d.getConstantState() != null) {
                    d = d.getConstantState().newDrawable();
                }
                d.setAutoMirrored(false);
                d.setLayoutDirection(getLayoutDirection());
            }
+33 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -73,6 +74,24 @@ public class QSIconViewImplTest extends SysuiTestCase {
        verify(s.icon, never()).getInvisibleDrawable(any());
    }

    @Test
    public void testMutateIconDrawable() {
        SlashImageView iv = mock(SlashImageView.class);
        Drawable originalDrawable = mock(Drawable.class);
        Drawable otherDrawable = mock(Drawable.class);
        State s = new State();
        s.icon = mock(Icon.class);
        when(s.icon.getInvisibleDrawable(eq(mContext))).thenReturn(originalDrawable);
        when(s.icon.getDrawable(eq(mContext))).thenReturn(originalDrawable);
        when(iv.isShown()).thenReturn(true);
        when(originalDrawable.getConstantState()).thenReturn(fakeConstantState(otherDrawable));


        mIconView.updateIcon(iv, s, /* allowAnimations= */true);

        verify(iv).setState(any(), eq(otherDrawable));
    }

    @Test
    public void testNoFirstFade() {
        ImageView iv = mock(ImageView.class);
@@ -104,4 +123,18 @@ public class QSIconViewImplTest extends SysuiTestCase {
    public void testIconNotSet_toString() {
        assertFalse(mIconView.toString().contains("lastIcon"));
    }

    private static Drawable.ConstantState fakeConstantState(Drawable otherDrawable) {
        return new Drawable.ConstantState() {
            @Override
            public Drawable newDrawable() {
                return otherDrawable;
            }

            @Override
            public int getChangingConfigurations() {
                return 1;
            }
        };
    }
}