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

Commit 590dc710 authored by Android Build Prod User's avatar Android Build Prod User Committed by Android (Google) Code Review
Browse files

Merge "Mutate the drawable when updating QS icon." into sc-qpr1-dev

parents b082cf64 b9f2751f
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;
            }
        };
    }
}