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

Commit b01b5b08 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 am: 513e53d8

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

Change-Id: I847f54f4cbe3b608a54e65356ff044cfb7a720db
parents caba29c8 513e53d8
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;
            }
        };
    }
}