diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationException.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationException.java index 51778f2095..56afb442d0 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationException.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformationException.java @@ -286,17 +286,18 @@ public final class TransformationException extends Exception { } /** - * Converts a {@link PlaybackException} to a {@code TransformationException}. + * Creates an instance for a {@link PlaybackException}. * - *

If no corresponding error code exists, the created instance will have {@link - * #ERROR_CODE_UNSPECIFIED}. + *

If there is a corresponding {@link TransformationException.ErrorCode} for the {@link + * PlaybackException.ErrorCode}, this error code and the same message are used for the created + * instance. Otherwise, this is equivalent to {@link #createForUnexpected(Exception)}. */ /* package */ static TransformationException createForPlaybackException( PlaybackException exception) { - return new TransformationException( - exception.getMessage(), - exception.getCause(), - getErrorCodeForName(exception.getErrorCodeName())); + @ErrorCode int errorCode = getErrorCodeForName(exception.getErrorCodeName()); + return errorCode == ERROR_CODE_UNSPECIFIED + ? createForUnexpected(exception) + : new TransformationException(exception.getMessage(), exception, errorCode); } /** An error code which identifies the cause of the transformation failure. */ diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerTest.java index 0c562ff31e..4e3a5139ea 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerTest.java @@ -340,7 +340,8 @@ public final class TransformerTest { transformer.startTransformation(mediaItem, outputPath); TransformationException exception = TransformerTestRunner.runUntilError(transformer); - assertThat(exception).hasCauseThat().isInstanceOf(IOException.class); + assertThat(exception).hasCauseThat().hasCauseThat().isInstanceOf(IOException.class); + assertThat(exception.errorCode).isEqualTo(TransformationException.ERROR_CODE_IO_FILE_NOT_FOUND); } @Test