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

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

Change-Id: I0b7d11ff47fdbc3b027f315a11e28cab07447a4c
This commit is contained in:
PETER LIANG
2021-07-23 07:36:07 +00:00
committed by Automerger Merge Worker
2 changed files with 37 additions and 16 deletions

View File

@@ -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.setAnimation(inputStream, /* cacheKey= */ null);
illustrationView.setRepeatCount(LottieDrawable.INFINITE);
illustrationView.playAnimation();
} catch (IllegalStateException e) {
Log.w(TAG, "Invalid illustration image uri: " + imageUri, e);
}
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();
}
private static void startLottieAnimationWith(LottieAnimationView illustrationView,
@RawRes int rawRes) {
try {
illustrationView.setAnimation(rawRes);
illustrationView.setRepeatCount(LottieDrawable.INFINITE);
illustrationView.playAnimation();
} catch (IllegalStateException e) {
Log.w(TAG, "Invalid illustration resource id: " + rawRes, e);
}
illustrationView.setFailureListener(
result -> Log.w(TAG, "Invalid illustration resource id: " + rawRes, result));
illustrationView.setAnimation(rawRes);
illustrationView.setRepeatCount(LottieDrawable.INFINITE);
illustrationView.playAnimation();
}
private static void resetAnimations(LottieAnimationView illustrationView) {

View File

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