Use TransformationException for error listener parameter.

PiperOrigin-RevId: 416307600
This commit is contained in:
hschlueter 2021-12-14 16:11:55 +00:00 committed by tonihei
parent 039b9154e9
commit cdc0e2e618
4 changed files with 25 additions and 15 deletions

View File

@ -24,6 +24,7 @@ import android.net.Uri;
import android.os.Build;
import androidx.annotation.Nullable;
import androidx.media3.common.MediaItem;
import androidx.media3.transformer.TransformationException;
import androidx.media3.transformer.Transformer;
import androidx.test.platform.app.InstrumentationRegistry;
import java.io.File;
@ -79,7 +80,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
}
@Override
public void onTransformationError(MediaItem inputMediaItem, Exception exception) {
public void onTransformationError(
MediaItem inputMediaItem, TransformationException exception) {
exceptionReference.set(exception);
countDownLatch.countDown();
}

View File

@ -468,19 +468,26 @@ public final class Transformer {
public interface Listener {
/**
* Called when the transformation is completed.
* Called when the transformation is completed successfully.
*
* @param inputMediaItem The {@link MediaItem} for which the transformation is completed.
*/
default void onTransformationCompleted(MediaItem inputMediaItem) {}
/** @deprecated Use {@link #onTransformationError(MediaItem, TransformationException)}. */
@Deprecated
default void onTransformationError(MediaItem inputMediaItem, Exception exception) {
onTransformationError(inputMediaItem, (TransformationException) exception);
}
/**
* Called if an error occurs during the transformation.
* Called if an exception occurs during the transformation.
*
* @param inputMediaItem The {@link MediaItem} for which the error occurs.
* @param exception The exception describing the error.
* @param inputMediaItem The {@link MediaItem} for which the exception occurs.
* @param exception The {@link TransformationException} describing the exception.
*/
default void onTransformationError(MediaItem inputMediaItem, Exception exception) {}
default void onTransformationError(
MediaItem inputMediaItem, TransformationException exception) {}
}
/** Provider for views to show diagnostic information during transformation, for debugging. */

View File

@ -238,9 +238,8 @@ public final class TransformerTest {
MediaItem mediaItem = MediaItem.fromUri("asset:///non-existing-path.mp4");
transformer.startTransformation(mediaItem, outputPath);
Exception exception = TransformerTestRunner.runUntilError(transformer);
TransformationException exception = TransformerTestRunner.runUntilError(transformer);
assertThat(exception).isInstanceOf(TransformationException.class);
assertThat(exception).hasCauseThat().isInstanceOf(ExoPlaybackException.class);
assertThat(exception).hasCauseThat().hasCauseThat().isInstanceOf(IOException.class);
}
@ -252,9 +251,8 @@ public final class TransformerTest {
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_WITH_ALL_SAMPLE_FORMATS_UNSUPPORTED);
transformer.startTransformation(mediaItem, outputPath);
Exception exception = TransformerTestRunner.runUntilError(transformer);
TransformationException exception = TransformerTestRunner.runUntilError(transformer);
assertThat(exception).isInstanceOf(TransformationException.class);
assertThat(exception).hasCauseThat().isInstanceOf(IllegalStateException.class);
}

View File

@ -56,8 +56,9 @@ public final class TransformerTestRunner {
* @throws IllegalStateException If the method is not called from the main thread, or if the
* transformation completes without error.
*/
public static Exception runUntilError(Transformer transformer) throws TimeoutException {
@Nullable Exception exception = runUntilListenerCalled(transformer);
public static TransformationException runUntilError(Transformer transformer)
throws TimeoutException {
@Nullable TransformationException exception = runUntilListenerCalled(transformer);
if (exception == null) {
throw new IllegalStateException("The transformation completed without error.");
}
@ -65,7 +66,8 @@ public final class TransformerTestRunner {
}
@Nullable
private static Exception runUntilListenerCalled(Transformer transformer) throws TimeoutException {
private static TransformationException runUntilListenerCalled(Transformer transformer)
throws TimeoutException {
TransformationResult transformationResult = new TransformationResult();
Transformer.Listener listener =
new Transformer.Listener() {
@ -75,7 +77,8 @@ public final class TransformerTestRunner {
}
@Override
public void onTransformationError(MediaItem inputMediaItem, Exception exception) {
public void onTransformationError(
MediaItem inputMediaItem, TransformationException exception) {
transformationResult.exception = exception;
}
};
@ -88,6 +91,6 @@ public final class TransformerTestRunner {
private static class TransformationResult {
public boolean isCompleted;
@Nullable public Exception exception;
@Nullable public TransformationException exception;
}
}