From 4e96caa623d1ceed484d06e049bc8c27c1e9aea7 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 19 Sep 2014 18:31:17 +0100 Subject: [PATCH] Resolve reference Uris correctly. Ignore the path of the base Uri if the reference starts with "/". Spec - http://tools.ietf.org/html/rfc3986#section-5.2.2 --- .../google/android/exoplayer/util/Util.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/util/Util.java b/library/src/main/java/com/google/android/exoplayer/util/Util.java index b4277f471a..e7984ef72b 100644 --- a/library/src/main/java/com/google/android/exoplayer/util/Util.java +++ b/library/src/main/java/com/google/android/exoplayer/util/Util.java @@ -163,11 +163,21 @@ public final class Util { if (stringUri == null) { return baseUri; } - Uri uri = Uri.parse(stringUri); - if (!uri.isAbsolute() && baseUri != null) { - uri = Uri.withAppendedPath(baseUri, stringUri); + if (baseUri == null) { + return Uri.parse(stringUri); } - return uri; + if (stringUri.startsWith("/")) { + return new Uri.Builder() + .scheme(baseUri.getScheme()) + .authority(baseUri.getAuthority()) + .appendEncodedPath(stringUri) + .build(); + } + Uri uri = Uri.parse(stringUri); + if (uri.isAbsolute()) { + return uri; + } + return Uri.withAppendedPath(baseUri, stringUri); } /**