summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sungsoo <sungsoo@google.com> 2016-09-09 22:46:55 +0000
committer android-build-merger <android-build-merger@google.com> 2016-09-09 22:46:55 +0000
commit4c3668d7aafa8215a136fa095175b0d3b2893eec (patch)
tree29552a5f1bf14e8ba759a749c3c9ac98d23a89a5
parent983f30a5a4a55ce9b537ade684d0856a7e2f5704 (diff)
parent56ea7b490107e4531ab4db6f74671c34b5c59fd3 (diff)
DO NOT MERGE) ExifInterface: Make saveAttributes throw an exception before change
am: 56ea7b4901 Change-Id: If8497c9ad514037ce4c1f72dee6f77426d3ecd50
-rw-r--r--media/java/android/media/ExifInterface.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index 0e7f995af6e8..4afa4e32575d 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -679,14 +679,14 @@ public class ExifInterface {
if (value instanceof long[]) {
long[] array = (long[]) value;
if (array.length == 1) {
- return (double) array[0];
+ return array[0];
}
throw new NumberFormatException("There are more than one component");
}
if (value instanceof int[]) {
int[] array = (int[]) value;
if (array.length == 1) {
- return (double) array[0];
+ return array[0];
}
throw new NumberFormatException("There are more than one component");
}
@@ -1083,6 +1083,7 @@ public class ExifInterface {
private int mThumbnailOffset;
private int mThumbnailLength;
private byte[] mThumbnailBytes;
+ private boolean mIsSupportedFile;
// Pattern to check non zero timestamp
private static final Pattern sNonZeroTimePattern = Pattern.compile(".*[1-9].*");
@@ -1472,9 +1473,11 @@ public class ExifInterface {
// Process JPEG input stream
getJpegAttributes(in);
+ mIsSupportedFile = true;
} catch (IOException e) {
// Ignore exceptions in order to keep the compatibility with the old versions of
// ExifInterface.
+ mIsSupportedFile = false;
Log.w(TAG, "Invalid image: ExifInterface got an unsupported image format file"
+ "(ExifInterface supports JPEG and some RAW image formats only) "
+ "or a corrupted JPEG file to ExifInterface.", e);
@@ -1553,9 +1556,9 @@ public class ExifInterface {
* and make a single call rather than multiple calls for each attribute.
*/
public void saveAttributes() throws IOException {
- if (mIsRaw) {
+ if (!mIsSupportedFile || mIsRaw) {
throw new UnsupportedOperationException(
- "ExifInterface does not support saving attributes on RAW formats.");
+ "ExifInterface only supports saving attributes on JPEG formats.");
}
if (mIsInputStream || (mSeekableFileDescriptor == null && mFilename == null)) {
throw new UnsupportedOperationException(
@@ -2352,7 +2355,7 @@ public class ExifInterface {
for (int i = 0; i < EXIF_TAGS.length; ++i) {
int sum = 0;
for (Map.Entry entry : (Set<Map.Entry>) mAttributes[i].entrySet()) {
- final ExifAttribute exifAttribute = (ExifAttribute) ((Map.Entry) entry).getValue();
+ final ExifAttribute exifAttribute = (ExifAttribute) entry.getValue();
final int size = exifAttribute.size();
if (size > 4) {
sum += size;