aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Klinker <jklinker@google.com>2022-04-27 20:36:07 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-04-27 20:36:07 +0000
commitc51c783a466a53fd99412799f972b023bcb0a337 (patch)
tree578d7efd681f5c1f080cc31bc9919f37f2e11de6
parent1049de0c95398bc62bf8f1401bf15f6d1821d8d6 (diff)
parenta707a5cd8d0484e46a4850a017bfa6a11aa081dc (diff)
downloadMessaging-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.java36
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) {