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 {
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 {
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);
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);
}
}
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();
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);
}
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));
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);
}
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);
break;
case SkCodec::kErrorInInput:
if (!jexception) {
- onPartialImageError = ImageDecoder::kSourceError;
+ onPartialImageError = ImageDecoder::kSourceMalformedData;
}
break;
default:
// 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.
};
- /**
- * 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;
/**
* 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>
*/
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 "";
* 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