diff options
author | Jake Klinker <jklinker@google.com> | 2022-04-27 20:36:07 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-27 20:36:07 +0000 |
commit | c51c783a466a53fd99412799f972b023bcb0a337 (patch) | |
tree | 578d7efd681f5c1f080cc31bc9919f37f2e11de6 | |
parent | 1049de0c95398bc62bf8f1401bf15f6d1821d8d6 (diff) | |
parent | a707a5cd8d0484e46a4850a017bfa6a11aa081dc (diff) | |
download | Messaging-c51c783a466a53fd99412799f972b023bcb0a337.tar.gz |
Fix url:file:// style URIs from not being detected in UriUtil. am: c8e4ab2b22 am: a707a5cd8dandroid-13.0.0_r83android-13.0.0_r82android-13.0.0_r81android-13.0.0_r80android-13.0.0_r79android-13.0.0_r78android-13.0.0_r77android-13.0.0_r76android-13.0.0_r75android-13.0.0_r74android-13.0.0_r73android-13.0.0_r72android-13.0.0_r71android-13.0.0_r70android-13.0.0_r69android-13.0.0_r68android-13.0.0_r67android-13.0.0_r66android-13.0.0_r65android-13.0.0_r64android-13.0.0_r63android-13.0.0_r62android-13.0.0_r61android-13.0.0_r60android-13.0.0_r59android-13.0.0_r58android-13.0.0_r56android-13.0.0_r54android-13.0.0_r53android-13.0.0_r52android-13.0.0_r51android-13.0.0_r50android-13.0.0_r49android-13.0.0_r48android-13.0.0_r47android-13.0.0_r46android-13.0.0_r45android-13.0.0_r44android-13.0.0_r43android-13.0.0_r42android-13.0.0_r41android-13.0.0_r40android-13.0.0_r39android-13.0.0_r38android-13.0.0_r37android-13.0.0_r36android-13.0.0_r35android-13.0.0_r34android-13.0.0_r33android-13.0.0_r32android13-qpr3-s9-releaseandroid13-qpr3-s8-releaseandroid13-qpr3-s7-releaseandroid13-qpr3-s6-releaseandroid13-qpr3-s5-releaseandroid13-qpr3-s4-releaseandroid13-qpr3-s3-releaseandroid13-qpr3-s2-releaseandroid13-qpr3-s14-releaseandroid13-qpr3-s13-releaseandroid13-qpr3-s12-releaseandroid13-qpr3-s11-releaseandroid13-qpr3-s10-releaseandroid13-qpr3-s1-releaseandroid13-qpr3-releaseandroid13-qpr3-c-s8-releaseandroid13-qpr3-c-s7-releaseandroid13-qpr3-c-s6-releaseandroid13-qpr3-c-s5-releaseandroid13-qpr3-c-s4-releaseandroid13-qpr3-c-s3-releaseandroid13-qpr3-c-s2-releaseandroid13-qpr3-c-s12-releaseandroid13-qpr3-c-s11-releaseandroid13-qpr3-c-s10-releaseandroid13-qpr3-c-s1-releaseandroid13-qpr2-s9-releaseandroid13-qpr2-s8-releaseandroid13-qpr2-s7-releaseandroid13-qpr2-s6-releaseandroid13-qpr2-s5-releaseandroid13-qpr2-s3-releaseandroid13-qpr2-s2-releaseandroid13-qpr2-s12-releaseandroid13-qpr2-s11-releaseandroid13-qpr2-s10-releaseandroid13-qpr2-s1-releaseandroid13-qpr2-releaseandroid13-qpr2-b-s1-releaseandroid13-d4-s2-releaseandroid13-d4-s1-releaseandroid13-d4-release
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Messaging/+/17957509
Change-Id: I10742143b1c7e1f81a4c8f7a25ca1f949889cf8d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | src/com/android/messaging/util/UriUtil.java | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/src/com/android/messaging/util/UriUtil.java b/src/com/android/messaging/util/UriUtil.java index 6e39749..f92155f 100644 --- a/src/com/android/messaging/util/UriUtil.java +++ b/src/com/android/messaging/util/UriUtil.java @@ -49,6 +49,8 @@ public class UriUtil { private static final String SCHEME_MMSTO = "smsto"; public static final HashSet<String> SMS_MMS_SCHEMES = new HashSet<String>( Arrays.asList(SCHEME_SMS, SCHEME_MMS, SCHEME_SMSTO, SCHEME_MMSTO)); + private static final String SCHEME_HTTP = "http"; + private static final String SCHEME_HTTPS = "https"; public static final String SCHEME_BUGLE = "bugle"; public static final HashSet<String> SUPPORTED_SCHEME = new HashSet<String>( @@ -98,8 +100,7 @@ public class UriUtil { public static boolean isFileUri(final Uri uri) { return uri != null && uri.getScheme() != null && - TextUtils.equals(uri.getScheme().trim().toLowerCase(), - ContentResolver.SCHEME_FILE); + uri.getScheme().trim().toLowerCase().contains(ContentResolver.SCHEME_FILE); } /** @@ -216,9 +217,10 @@ public class UriUtil { inputStream = context.getContentResolver().openInputStream(sourceUri); } else { // The content is remote. Download it. - final URL url = new URL(sourceUri.toString()); - final URLConnection ucon = url.openConnection(); - inputStream = new BufferedInputStream(ucon.getInputStream()); + inputStream = getInputStreamFromRemoteUri(sourceUri); + if (inputStream == null) { + return null; + } } return persistContentToScratchSpace(inputStream); } catch (final Exception ex) { @@ -235,6 +237,23 @@ public class UriUtil { } } + @DoesNotRunOnMainThread + private static InputStream getInputStreamFromRemoteUri(final Uri sourceUri) + throws IOException { + if (isRemoteUri(sourceUri)) { + final URL url = new URL(sourceUri.toString()); + final URLConnection ucon = url.openConnection(); + return new BufferedInputStream(ucon.getInputStream()); + } else { + return null; + } + } + + private static boolean isRemoteUri(final Uri sourceUri) { + return sourceUri.getScheme().equals(SCHEME_HTTP) + || sourceUri.getScheme().equals(SCHEME_HTTPS); + } + /** * Persist a piece of content from the given input stream, byte by byte to the specified * directory. @@ -273,9 +292,10 @@ public class UriUtil { inputStream = context.getContentResolver().openInputStream(sourceUri); } else { // The content is remote. Download it. - final URL url = new URL(sourceUri.toString()); - final URLConnection ucon = url.openConnection(); - inputStream = new BufferedInputStream(ucon.getInputStream()); + inputStream = getInputStreamFromRemoteUri(sourceUri); + if (inputStream == null) { + return null; + } } return persistContent(inputStream, outputDir, contentType); } catch (final Exception ex) { |