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
diff --git a/api/current.txt b/api/current.txt
index 854df47..de27da0 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -13650,14 +13650,14 @@
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 7bbf376..1228fd1 100644
--- a/api/removed.txt
+++ b/api/removed.txt
@@ -155,6 +155,9 @@
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 f4fec76..726c450 100644
--- a/core/jni/android/graphics/ImageDecoder.cpp
+++ b/core/jni/android/graphics/ImageDecoder.cpp
@@ -79,7 +79,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 e6e4920..fd9827b 100644
--- a/core/jni/android/graphics/ImageDecoder.h
+++ b/core/jni/android/graphics/ImageDecoder.h
@@ -35,9 +35,9 @@
// 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 fa26ffd..5ca0ad6 100644
--- a/graphics/java/android/graphics/ImageDecoder.java
+++ b/graphics/java/android/graphics/ImageDecoder.java
@@ -457,31 +457,49 @@
};
- /**
- * 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 @@
/**
* 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 @@
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 @@
* 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