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: Ief0e9f889c158e3e3e0cde3bb96cf46d8fc8bd43
This commit is contained in:
PETER LIANG
2021-07-28 14:49:00 +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, 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(
illustrationView.setAnimation(inputStream, /* cacheKey= */ null); result -> Log.w(TAG, "Invalid illustration image uri: " + imageUri, result));
illustrationView.setRepeatCount(LottieDrawable.INFINITE); illustrationView.setAnimation(inputStream, /* cacheKey= */ null);
illustrationView.playAnimation(); illustrationView.setRepeatCount(LottieDrawable.INFINITE);
} catch (IllegalStateException e) { illustrationView.playAnimation();
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(
illustrationView.setAnimation(rawRes); result -> Log.w(TAG, "Invalid illustration resource id: " + rawRes, result));
illustrationView.setRepeatCount(LottieDrawable.INFINITE); illustrationView.setAnimation(rawRes);
illustrationView.playAnimation(); illustrationView.setRepeatCount(LottieDrawable.INFINITE);
} catch (IllegalStateException e) { illustrationView.playAnimation();
Log.w(TAG, "Invalid illustration resource id: " + rawRes, e);
}
} }
private static void resetAnimations(LottieAnimationView illustrationView) { 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 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());
}
} }