diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-08-15 04:42:15 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-08-15 04:42:15 +0000 |
commit | 495202ca471613cefd62b793ef69e13bfccc85df (patch) | |
tree | b92ed5095ebaafb59e9005bec05d935818c1a167 | |
parent | e02e7e3fe339d2a92d81b1a2b2f14d78757f4dba (diff) | |
parent | 0f3bf10aba2a76e026d11165f072ad998a7feaa0 (diff) | |
download | MediaProvider-android10-mainline-a-release.tar.gz |
Snap for 5803298 from 0f3bf10aba2a76e026d11165f072ad998a7feaa0 to qt-aml-releaseandroid-mainline-10.0.0_r2android10-mainline-a-release
Change-Id: If1709e153db93a4c6b4eecf7a9b07bb4064b5798
-rw-r--r-- | res/values-fr/strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/providers/media/MediaProvider.java | 37 |
2 files changed, 28 insertions, 11 deletions
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index c73e53a6f..7aed3cc77 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -21,7 +21,7 @@ <string name="app_label" msgid="9035307001052716210">"Stockage multimédia"</string> <string name="artist_label" msgid="8105600993099120273">"Artiste"</string> <string name="ringtone_default" msgid="1744846699922263043">"Sonnerie par défaut"</string> - <string name="notification_sound_default" msgid="6541609166469990135">"Son notif. par défaut"</string> + <string name="notification_sound_default" msgid="6541609166469990135">"Son des notifications par défaut"</string> <string name="alarm_sound_default" msgid="5488847775252870314">"Son de l\'alarme par défaut"</string> <string name="root_images" msgid="5861633549189045666">"Images"</string> <string name="root_videos" msgid="8792703517064649453">"Vidéos"</string> diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java index bbfc212c6..89289998e 100644 --- a/src/com/android/providers/media/MediaProvider.java +++ b/src/com/android/providers/media/MediaProvider.java @@ -5366,7 +5366,8 @@ public class MediaProvider extends ContentProvider { // Figure out if we need to redact contents final boolean redactionNeeded = callerIsOwner ? false : isRedactionNeeded(uri); - final long[] redactionRanges = redactionNeeded ? getRedactionRanges(file) : EmptyArray.LONG; + final RedactionInfo redactionInfo = redactionNeeded ? getRedactionRanges(file) + : new RedactionInfo(EmptyArray.LONG, EmptyArray.LONG); // Yell if caller requires original, since we can't give it to them // unless they have access granted above @@ -5402,8 +5403,13 @@ public class MediaProvider extends ContentProvider { try { // First, handle any redaction that is needed for caller final ParcelFileDescriptor pfd; - if (redactionRanges.length > 0) { - pfd = RedactingFileDescriptor.open(getContext(), file, modeBits, redactionRanges); + if (redactionInfo.redactionRanges.length > 0) { + pfd = RedactingFileDescriptor.open( + getContext(), + file, + modeBits, + redactionInfo.redactionRanges, + redactionInfo.freeOffsets); } else { pfd = ParcelFileDescriptor.open(file, modeBits); } @@ -5503,13 +5509,19 @@ public class MediaProvider extends ContentProvider { IsoInterface.BOX_GPS0, }; - /** - * Find the set of ranges that should be redacted from the given file, ready - * to pass to {@link RedactingFileDescriptor}. - */ - private long[] getRedactionRanges(File file) { + private static final class RedactionInfo { + public final long[] redactionRanges; + public final long[] freeOffsets; + public RedactionInfo(long[] redactionRanges, long[] freeOffsets) { + this.redactionRanges = redactionRanges; + this.freeOffsets = freeOffsets; + } + } + + private RedactionInfo getRedactionRanges(File file) { Trace.traceBegin(TRACE_TAG_DATABASE, "getRedactionRanges"); final LongArray res = new LongArray(); + final LongArray freeOffsets = new LongArray(); try (FileInputStream is = new FileInputStream(file)) { final ExifInterface exif = new ExifInterface(is.getFD()); for (String tag : REDACTED_EXIF_TAGS) { @@ -5523,7 +5535,12 @@ public class MediaProvider extends ContentProvider { final IsoInterface iso = IsoInterface.fromFileDescriptor(is.getFD()); for (int box : REDACTED_ISO_BOXES) { final long[] ranges = iso.getBoxRanges(box); - res.addAll(LongArray.wrap(ranges)); + for (int i = 0; i < ranges.length; i += 2) { + long boxTypeOffset = ranges[i] - 4; + freeOffsets.add(boxTypeOffset); + res.add(boxTypeOffset); + res.add(ranges[i + 1]); + } } // Redact xmp where present @@ -5536,7 +5553,7 @@ public class MediaProvider extends ContentProvider { Log.w(TAG, "Failed to redact " + file + ": " + e); } Trace.traceEnd(TRACE_TAG_DATABASE); - return res.toArray(); + return new RedactionInfo(res.toArray(), freeOffsets.toArray()); } private boolean checkCallingPermissionGlobal(Uri uri, boolean forWrite) { |