From 8ecb35eefd980f526acf9494a1d7e4df8c1a4442 Mon Sep 17 00:00:00 2001 From: Colin White Date: Sun, 18 Sep 2022 16:40:05 -0700 Subject: [PATCH 1/2] Fix parsing paths containing # in FileUriMapper. --- .../src/androidTest/java/coil/map/FileUriMapperTest.kt | 7 +++++++ coil-base/src/main/java/coil/map/FileUriMapper.kt | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt b/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt index 2a5440916b..34f7ca72fe 100644 --- a/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt +++ b/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt @@ -46,4 +46,11 @@ class FileUriMapperTest { val uri = "generic_string".toUri() assertNull(mapper.map(uri, Options(context))) } + + @Test + fun parsesEncodedCharactersCorrectly() { + val path = "/sdcard/fi#le.jpg" + assertEquals(File(path), mapper.map(path.toUri(), Options(context))) + assertEquals(File(path), mapper.map("file://$path".toUri(), Options(context))) + } } diff --git a/coil-base/src/main/java/coil/map/FileUriMapper.kt b/coil-base/src/main/java/coil/map/FileUriMapper.kt index f8a32570bc..26da82bc12 100644 --- a/coil-base/src/main/java/coil/map/FileUriMapper.kt +++ b/coil-base/src/main/java/coil/map/FileUriMapper.kt @@ -11,7 +11,8 @@ internal class FileUriMapper : Mapper { override fun map(data: Uri, options: Options): File? { if (!isApplicable(data)) return null - return File(data.path!!) + val uri = if (data.scheme == null) data else data.buildUpon().scheme(null).build() + return File(uri.toString()) } private fun isApplicable(data: Uri): Boolean { From c8258eb1d8aad6b516708c351b5117d88dcb55c7 Mon Sep 17 00:00:00 2001 From: Colin White Date: Sun, 18 Sep 2022 16:50:40 -0700 Subject: [PATCH 2/2] Rename test. --- coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt b/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt index 34f7ca72fe..da735363d2 100644 --- a/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt +++ b/coil-base/src/androidTest/java/coil/map/FileUriMapperTest.kt @@ -48,7 +48,7 @@ class FileUriMapperTest { } @Test - fun parsesEncodedCharactersCorrectly() { + fun parsesPoundCharacterCorrectly() { val path = "/sdcard/fi#le.jpg" assertEquals(File(path), mapper.map(path.toUri(), Options(context))) assertEquals(File(path), mapper.map("file://$path".toUri(), Options(context)))