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

Commit 4caf8c48 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: 9b06442d

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

Change-Id: Ia95cacc8b3bd7a6822f9667f5ab043f2092ab456
parents 79be9ec0 9b06442d
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());
    }
}