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

Commit 5c1807b7 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: Ief0e9f889c158e3e3e0cde3bb96cf46d8fc8bd43
parents ffac1385 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());
    }
}