diff options
author | 2018-03-22 09:21:29 -0400 | |
---|---|---|
committer | 2018-03-22 13:09:02 -0400 | |
commit | cf7294fda671a39e6aa21da30be0dac261d71638 (patch) | |
tree | 5022640f87b3d5e48d889f69aafdf8f39a72250e | |
parent | 1dd88daf920a111fcf3f8744bd55e6828acd0fce (diff) |
Rename ImageDecoder.ERRORs
Bug: 73788969
Test: I501e8b76aacd785cb994165ab01dc1b39fea3a1c
Move them into ImageDecoder.DecodeException, which is where they are
actually used. This also provides some more context, so that the prefix
"ERROR_" is no longer necessary, fixing the redundancy/awkwardness in
ERROR_SOURCE_ERROR. Further rename that to SOURCE_MALFORMED_DATA, which
is more descriptive, and does not imply a Java Error.
Change-Id: Ied17ad343650f9c33d9a35b0f9d00ccc22264bd6
-rw-r--r-- | api/current.txt | 6 | ||||
-rw-r--r-- | api/removed.txt | 3 | ||||
-rw-r--r-- | core/jni/android/graphics/ImageDecoder.cpp | 20 | ||||
-rw-r--r-- | core/jni/android/graphics/ImageDecoder.h | 6 | ||||
-rw-r--r-- | graphics/java/android/graphics/ImageDecoder.java | 52 |
5 files changed, 54 insertions, 33 deletions
diff --git a/api/current.txt b/api/current.txt index 854df47d5cd3..de27da01679e 100644 --- a/api/current.txt +++ b/api/current.txt @@ -13650,14 +13650,14 @@ package android.graphics { field public static final int ALLOCATOR_HARDWARE = 3; // 0x3 field public static final int ALLOCATOR_SHARED_MEMORY = 2; // 0x2 field public static final int ALLOCATOR_SOFTWARE = 1; // 0x1 - field public static final int ERROR_SOURCE_ERROR = 3; // 0x3 - field public static final int ERROR_SOURCE_EXCEPTION = 1; // 0x1 - field public static final int ERROR_SOURCE_INCOMPLETE = 2; // 0x2 } public static final class ImageDecoder.DecodeException extends java.io.IOException { method public int getError(); method public android.graphics.ImageDecoder.Source getSource(); + field public static final int SOURCE_EXCEPTION = 1; // 0x1 + field public static final int SOURCE_INCOMPLETE = 2; // 0x2 + field public static final int SOURCE_MALFORMED_DATA = 3; // 0x3 } public static class ImageDecoder.ImageInfo { diff --git a/api/removed.txt b/api/removed.txt index 7bbf376cd530..1228fd18c71a 100644 --- a/api/removed.txt +++ b/api/removed.txt @@ -155,6 +155,9 @@ package android.graphics { public final class ImageDecoder implements java.lang.AutoCloseable { method public deprecated boolean getAsAlphaMask(); method public deprecated android.graphics.ImageDecoder setAsAlphaMask(boolean); + field public static final deprecated int ERROR_SOURCE_ERROR = 3; // 0x3 + field public static final deprecated int ERROR_SOURCE_EXCEPTION = 1; // 0x1 + field public static final deprecated int ERROR_SOURCE_INCOMPLETE = 2; // 0x2 } public static deprecated class ImageDecoder.IncompleteException extends java.io.IOException { diff --git a/core/jni/android/graphics/ImageDecoder.cpp b/core/jni/android/graphics/ImageDecoder.cpp index f4fec76561e6..726c450a4af2 100644 --- a/core/jni/android/graphics/ImageDecoder.cpp +++ b/core/jni/android/graphics/ImageDecoder.cpp @@ -79,7 +79,7 @@ static jobject throw_exception(JNIEnv* env, ImageDecoder::Error error, const cha static jobject native_create(JNIEnv* env, std::unique_ptr<SkStream> stream, jobject source) { if (!stream.get()) { - return throw_exception(env, ImageDecoder::kSourceError, "Failed to create a stream", + return throw_exception(env, ImageDecoder::kSourceMalformedData, "Failed to create a stream", nullptr, source); } std::unique_ptr<ImageDecoder> decoder(new ImageDecoder); @@ -96,8 +96,8 @@ static jobject native_create(JNIEnv* env, std::unique_ptr<SkStream> stream, jobj SkString msg; msg.printf("Failed to create image decoder with message '%s'", SkCodec::ResultToString(result)); - return throw_exception(env, ImageDecoder::kSourceError, msg.c_str(), nullptr, - source); + return throw_exception(env, ImageDecoder::kSourceMalformedData, msg.c_str(), + nullptr, source); } } @@ -110,7 +110,7 @@ static jobject native_create(JNIEnv* env, std::unique_ptr<SkStream> stream, jobj decoder->mCodec = SkAndroidCodec::MakeFromCodec(std::move(codec), SkAndroidCodec::ExifOrientationBehavior::kRespect); if (!decoder->mCodec.get()) { - return throw_exception(env, ImageDecoder::kSourceError, "", nullptr, source); + return throw_exception(env, ImageDecoder::kSourceMalformedData, "", nullptr, source); } const auto& info = decoder->mCodec->getInfo(); @@ -127,7 +127,7 @@ static jobject ImageDecoder_nCreateFd(JNIEnv* env, jobject /*clazz*/, struct stat fdStat; if (fstat(descriptor, &fdStat) == -1) { - return throw_exception(env, ImageDecoder::kSourceError, + return throw_exception(env, ImageDecoder::kSourceMalformedData, "broken file descriptor; fstat returned -1", nullptr, source); } @@ -135,8 +135,8 @@ static jobject ImageDecoder_nCreateFd(JNIEnv* env, jobject /*clazz*/, FILE* file = fdopen(dupDescriptor, "r"); if (file == NULL) { close(dupDescriptor); - return throw_exception(env, ImageDecoder::kSourceError, "Could not open file", nullptr, - source); + return throw_exception(env, ImageDecoder::kSourceMalformedData, "Could not open file", + nullptr, source); } std::unique_ptr<SkFILEStream> fileStream(new SkFILEStream(file)); @@ -157,7 +157,7 @@ static jobject ImageDecoder_nCreateInputStream(JNIEnv* env, jobject /*clazz*/, std::unique_ptr<SkStream> stream(CreateJavaInputStreamAdaptor(env, is, storage, false)); if (!stream.get()) { - return throw_exception(env, ImageDecoder::kSourceError, "Failed to create a stream", + return throw_exception(env, ImageDecoder::kSourceMalformedData, "Failed to create a stream", nullptr, source); } @@ -179,7 +179,7 @@ static jobject ImageDecoder_nCreateByteBuffer(JNIEnv* env, jobject /*clazz*/, jo std::unique_ptr<SkStream> stream = CreateByteBufferStreamAdaptor(env, jbyteBuffer, initialPosition, limit); if (!stream) { - return throw_exception(env, ImageDecoder::kSourceError, "Failed to read ByteBuffer", + return throw_exception(env, ImageDecoder::kSourceMalformedData, "Failed to read ByteBuffer", nullptr, source); } return native_create(env, std::move(stream), source); @@ -313,7 +313,7 @@ static jobject ImageDecoder_nDecodeBitmap(JNIEnv* env, jobject /*clazz*/, jlong break; case SkCodec::kErrorInInput: if (!jexception) { - onPartialImageError = ImageDecoder::kSourceError; + onPartialImageError = ImageDecoder::kSourceMalformedData; } break; default: diff --git a/core/jni/android/graphics/ImageDecoder.h b/core/jni/android/graphics/ImageDecoder.h index e6e4920afc83..fd9827bd74ca 100644 --- a/core/jni/android/graphics/ImageDecoder.h +++ b/core/jni/android/graphics/ImageDecoder.h @@ -35,9 +35,9 @@ struct ImageDecoder { // These need to stay in sync with ImageDecoder.java's Error constants. enum Error { - kSourceException = 1, - kSourceIncomplete = 2, - kSourceError = 3, + kSourceException = 1, + kSourceIncomplete = 2, + kSourceMalformedData = 3, }; // These need to stay in sync with PixelFormat.java's Format constants. diff --git a/graphics/java/android/graphics/ImageDecoder.java b/graphics/java/android/graphics/ImageDecoder.java index fa26ffdd61f1..5ca0ad63159f 100644 --- a/graphics/java/android/graphics/ImageDecoder.java +++ b/graphics/java/android/graphics/ImageDecoder.java @@ -457,31 +457,49 @@ public final class ImageDecoder implements AutoCloseable { }; - /** - * An Exception was thrown reading the {@link Source}. + /** @removed + * @deprecated Replaced by {@link #DecodeException#SOURCE_EXCEPTION}. */ + @java.lang.Deprecated public static final int ERROR_SOURCE_EXCEPTION = 1; - /** - * The encoded data was incomplete. + /** @removed + * @deprecated Replaced by {@link #DecodeException#SOURCE_INCOMPLETE}. */ + @java.lang.Deprecated public static final int ERROR_SOURCE_INCOMPLETE = 2; - /** - * The encoded data contained an error. + /** @removed + * @deprecated Replaced by {@link #DecodeException#SOURCE_MALFORMED_DATA}. */ + @java.lang.Deprecated public static final int ERROR_SOURCE_ERROR = 3; - /** @hide **/ - @Retention(SOURCE) - @IntDef(value = { ERROR_SOURCE_EXCEPTION, ERROR_SOURCE_INCOMPLETE, ERROR_SOURCE_ERROR }, - prefix = {"ERROR_"}) - public @interface Error {}; - /** * Information about an interrupted decode. */ public static final class DecodeException extends IOException { + /** + * An Exception was thrown reading the {@link Source}. + */ + public static final int SOURCE_EXCEPTION = 1; + + /** + * The encoded data was incomplete. + */ + public static final int SOURCE_INCOMPLETE = 2; + + /** + * The encoded data contained an error. + */ + public static final int SOURCE_MALFORMED_DATA = 3; + + /** @hide **/ + @Retention(SOURCE) + @IntDef(value = { SOURCE_EXCEPTION, SOURCE_INCOMPLETE, SOURCE_MALFORMED_DATA }, + prefix = {"SOURCE_"}) + public @interface Error {}; + @Error final int mError; @NonNull final Source mSource; @@ -505,7 +523,7 @@ public final class ImageDecoder implements AutoCloseable { /** * Retrieve the reason that decoding was interrupted. * - * <p>If the error is {@link #ERROR_SOURCE_EXCEPTION}, the underlying + * <p>If the error is {@link #SOURCE_EXCEPTION}, the underlying * {@link java.lang.Throwable} can be retrieved with * {@link java.lang.Throwable#getCause}.</p> */ @@ -524,11 +542,11 @@ public final class ImageDecoder implements AutoCloseable { private static String errorMessage(@Error int error, @Nullable Throwable cause) { switch (error) { - case ERROR_SOURCE_EXCEPTION: + case SOURCE_EXCEPTION: return "Exception in input: " + cause; - case ERROR_SOURCE_INCOMPLETE: + case SOURCE_INCOMPLETE: return "Input was incomplete."; - case ERROR_SOURCE_ERROR: + case SOURCE_MALFORMED_DATA: return "Input contained an error."; default: return ""; @@ -1368,7 +1386,7 @@ public final class ImageDecoder implements AutoCloseable { * Private method called by JNI. */ @SuppressWarnings("unused") - private void onPartialImage(@Error int error, @Nullable Throwable cause) + private void onPartialImage(@DecodeException.Error int error, @Nullable Throwable cause) throws DecodeException { DecodeException exception = new DecodeException(error, cause, mSource); if (mOnPartialImageListener == null |