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

Commit 4d2f9c26 authored by PETER LIANG's avatar PETER LIANG Committed by Automerger Merge Worker
Browse files

Merge "Add the failure listener into the lottie animation view of...

Merge "Add the failure listener into the lottie animation view of IllustrationPreference." into sc-dev am: c97285ab am: 56d72d1e

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

Change-Id: Id318081e8f3930eec744ac3b472c3ec2eede7ec3
parents c0b1d2c9 56d72d1e
Loading
Loading
Loading
Loading
+12 −16
Original line number Original line Diff line number Diff line
@@ -267,26 +267,22 @@ public class IllustrationPreference extends Preference {


    private static void startLottieAnimationWith(LottieAnimationView illustrationView,
    private static void startLottieAnimationWith(LottieAnimationView illustrationView,
            Uri imageUri) {
            Uri imageUri) {
        try {
        final InputStream inputStream =
        final InputStream inputStream =
                getInputStreamFromUri(illustrationView.getContext(), imageUri);
                getInputStreamFromUri(illustrationView.getContext(), imageUri);
        illustrationView.setFailureListener(
                result -> Log.w(TAG, "Invalid illustration image uri: " + imageUri, result));
        illustrationView.setAnimation(inputStream, /* cacheKey= */ null);
        illustrationView.setAnimation(inputStream, /* cacheKey= */ null);
        illustrationView.setRepeatCount(LottieDrawable.INFINITE);
        illustrationView.setRepeatCount(LottieDrawable.INFINITE);
        illustrationView.playAnimation();
        illustrationView.playAnimation();
        } catch (IllegalStateException e) {
            Log.w(TAG, "Invalid illustration image uri: " + imageUri, e);
        }
    }
    }


    private static void startLottieAnimationWith(LottieAnimationView illustrationView,
    private static void startLottieAnimationWith(LottieAnimationView illustrationView,
            @RawRes int rawRes) {
            @RawRes int rawRes) {
        try {
        illustrationView.setFailureListener(
                result -> Log.w(TAG, "Invalid illustration resource id: " + rawRes, result));
        illustrationView.setAnimation(rawRes);
        illustrationView.setAnimation(rawRes);
        illustrationView.setRepeatCount(LottieDrawable.INFINITE);
        illustrationView.setRepeatCount(LottieDrawable.INFINITE);
        illustrationView.playAnimation();
        illustrationView.playAnimation();
        } catch (IllegalStateException e) {
            Log.w(TAG, "Invalid illustration resource id: " + rawRes, e);
        }
    }
    }


    private static void resetAnimations(LottieAnimationView illustrationView) {
    private static void resetAnimations(LottieAnimationView illustrationView) {
+25 −0
Original line number Original line Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.settingslib.widget;


import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.spy;
@@ -130,4 +132,27 @@ public class IllustrationPreferenceTest {


        verify(drawable).start();
        verify(drawable).start();
    }
    }

    @Test
    public void playLottieAnimationWithUri_verifyFailureListener() {
        doReturn(null).when(mAnimationView).getDrawable();

        mPreference.setImageUri(mImageUri);
        mPreference.onBindViewHolder(mViewHolder);

        verify(mAnimationView).setFailureListener(any());
    }

    @Test
    public void playLottieAnimationWithResource_verifyFailureListener() {
        // fake the valid lottie image
        final int fakeValidResId = 111;
        doNothing().when(mAnimationView).setImageResource(fakeValidResId);
        doReturn(null).when(mAnimationView).getDrawable();

        mPreference.setLottieAnimationResId(fakeValidResId);
        mPreference.onBindViewHolder(mViewHolder);

        verify(mAnimationView).setFailureListener(any());
    }
}
}