ma1 pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android
Commits: 257aa5e5 by hackademix at 2024-09-30T21:41:21+02:00 Bug 1906024 - Format download file names better a=diannaS [BP131]
- - - - -
1 changed file:
- android-components/components/support/ktx/src/main/java/mozilla/components/support/ktx/kotlin/String.kt
Changes:
===================================== android-components/components/support/ktx/src/main/java/mozilla/components/support/ktx/kotlin/String.kt ===================================== @@ -49,6 +49,8 @@ const val MAX_URI_LENGTH = 25000
private const val FILE_PREFIX = "file://" private const val MAX_VALID_PORT = 65_535 +private const val SPACE = " " +private const val UNDERSCORE = "_"
/** * Shortens URLs to be more user friendly. @@ -303,7 +305,27 @@ fun String.sanitizeFileName(): String { file.name.replace("\.\.+".toRegex(), ".") } else { file.name.replace(".", "") - } + }.replaceContinuousSpaces() + .replaceEscapedCharacters() + .trim() +} + + +/** + * Replaces control characters from ASCII 0 to ASCII 19 with '_' so the file name is valid + * and is correctly displayed. + */ +private fun String.replaceEscapedCharacters(): String { + val escapedCharactersRegex = "[\x00-\x13*"?<>:|\\]".toRegex() + return replace(escapedCharactersRegex, UNDERSCORE) +} + +/** + * Replaces continuous spaces with a single space. + */ +private fun String.replaceContinuousSpaces(): String { + val escapedCharactersRegex = "[\p{Z}\s]+".toRegex() + return replace(escapedCharactersRegex, SPACE) }
/**
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/257a...
tor-commits@lists.torproject.org