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

Commit 9b06442d 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

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

Change-Id: I6e6b283ce776a8630a7b0584c821056240e1e527
parents 73f443ab c97285ab
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -267,26 +267,22 @@ public class IllustrationPreference extends Preference {

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

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

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

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.mock;
import static org.mockito.Mockito.spy;
@@ -130,4 +132,27 @@ public class IllustrationPreferenceTest {

        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());
    }
}