Commit 5bd22c3a by hschlueter Committed by Ian Baker

Use TransformationException for error listener parameter.

PiperOrigin-RevId: 416307600
parent 3dee8e49
...@@ -67,6 +67,8 @@ ...@@ -67,6 +67,8 @@
([#9765](https://github.com/google/ExoPlayer/issues/9765)). ([#9765](https://github.com/google/ExoPlayer/issues/9765)).
* Transformer: * Transformer:
* Increase required min API version to 21. * Increase required min API version to 21.
* `TransformationException` is now used to describe errors that occur
during a transformation.
* MediaSession extension: * MediaSession extension:
* Remove deprecated call to `onStop(/* reset= */ true)` and provide an * Remove deprecated call to `onStop(/* reset= */ true)` and provide an
opt-out flag for apps that don't want to clear the playlist on stop. opt-out flag for apps that don't want to clear the playlist on stop.
......
...@@ -70,7 +70,7 @@ Transformer.Listener transformerListener = ...@@ -70,7 +70,7 @@ Transformer.Listener transformerListener =
} }
@Override @Override
public void onTransformationError(MediaItem inputMediaItem, Exception e) { public void onTransformationError(MediaItem inputMediaItem, TransformationException e) {
displayError(e); displayError(e);
} }
}; };
......
...@@ -25,6 +25,7 @@ import android.os.Build; ...@@ -25,6 +25,7 @@ import android.os.Build;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.platform.app.InstrumentationRegistry;
import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.transformer.TransformationException;
import com.google.android.exoplayer2.transformer.Transformer; import com.google.android.exoplayer2.transformer.Transformer;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
...@@ -79,7 +80,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -79,7 +80,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
} }
@Override @Override
public void onTransformationError(MediaItem inputMediaItem, Exception exception) { public void onTransformationError(
MediaItem inputMediaItem, TransformationException exception) {
exceptionReference.set(exception); exceptionReference.set(exception);
countDownLatch.countDown(); countDownLatch.countDown();
} }
......
...@@ -466,19 +466,26 @@ public final class Transformer { ...@@ -466,19 +466,26 @@ public final class Transformer {
public interface Listener { 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. * @param inputMediaItem The {@link MediaItem} for which the transformation is completed.
*/ */
default void onTransformationCompleted(MediaItem inputMediaItem) {} 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 inputMediaItem The {@link MediaItem} for which the exception occurs.
* @param exception The exception describing the error. * @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. */ /** Provider for views to show diagnostic information during transformation, for debugging. */
......
...@@ -238,9 +238,8 @@ public final class TransformerTest { ...@@ -238,9 +238,8 @@ public final class TransformerTest {
MediaItem mediaItem = MediaItem.fromUri("asset:///non-existing-path.mp4"); MediaItem mediaItem = MediaItem.fromUri("asset:///non-existing-path.mp4");
transformer.startTransformation(mediaItem, outputPath); 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().isInstanceOf(ExoPlaybackException.class);
assertThat(exception).hasCauseThat().hasCauseThat().isInstanceOf(IOException.class); assertThat(exception).hasCauseThat().hasCauseThat().isInstanceOf(IOException.class);
} }
...@@ -252,9 +251,8 @@ public final class TransformerTest { ...@@ -252,9 +251,8 @@ public final class TransformerTest {
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_WITH_ALL_SAMPLE_FORMATS_UNSUPPORTED); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_WITH_ALL_SAMPLE_FORMATS_UNSUPPORTED);
transformer.startTransformation(mediaItem, outputPath); 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); assertThat(exception).hasCauseThat().isInstanceOf(IllegalStateException.class);
} }
......
...@@ -56,8 +56,9 @@ public final class TransformerTestRunner { ...@@ -56,8 +56,9 @@ public final class TransformerTestRunner {
* @throws IllegalStateException If the method is not called from the main thread, or if the * @throws IllegalStateException If the method is not called from the main thread, or if the
* transformation completes without error. * transformation completes without error.
*/ */
public static Exception runUntilError(Transformer transformer) throws TimeoutException { public static TransformationException runUntilError(Transformer transformer)
@Nullable Exception exception = runUntilListenerCalled(transformer); throws TimeoutException {
@Nullable TransformationException exception = runUntilListenerCalled(transformer);
if (exception == null) { if (exception == null) {
throw new IllegalStateException("The transformation completed without error."); throw new IllegalStateException("The transformation completed without error.");
} }
...@@ -65,7 +66,8 @@ public final class TransformerTestRunner { ...@@ -65,7 +66,8 @@ public final class TransformerTestRunner {
} }
@Nullable @Nullable
private static Exception runUntilListenerCalled(Transformer transformer) throws TimeoutException { private static TransformationException runUntilListenerCalled(Transformer transformer)
throws TimeoutException {
TransformationResult transformationResult = new TransformationResult(); TransformationResult transformationResult = new TransformationResult();
Transformer.Listener listener = Transformer.Listener listener =
new Transformer.Listener() { new Transformer.Listener() {
...@@ -75,7 +77,8 @@ public final class TransformerTestRunner { ...@@ -75,7 +77,8 @@ public final class TransformerTestRunner {
} }
@Override @Override
public void onTransformationError(MediaItem inputMediaItem, Exception exception) { public void onTransformationError(
MediaItem inputMediaItem, TransformationException exception) {
transformationResult.exception = exception; transformationResult.exception = exception;
} }
}; };
...@@ -88,6 +91,6 @@ public final class TransformerTestRunner { ...@@ -88,6 +91,6 @@ public final class TransformerTestRunner {
private static class TransformationResult { private static class TransformationResult {
public boolean isCompleted; public boolean isCompleted;
@Nullable public Exception exception; @Nullable public TransformationException exception;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment