diff options
| -rw-r--r-- | background_scripts/completion.coffee | 8 | ||||
| -rw-r--r-- | lib/utils.coffee | 6 |
2 files changed, 4 insertions, 10 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee index 11c63cf0..56740efd 100644 --- a/background_scripts/completion.coffee +++ b/background_scripts/completion.coffee @@ -131,13 +131,7 @@ class Suggestion shortenUrl: () -> return @shortUrl if @shortUrl? # We get easier-to-read shortened URLs if we URI-decode them. - url = - try - # decodeURI can raise an exception. - url = decodeURI @url - catch - @url - url = url.toLowerCase() + url = (Utils.decodeURIByParts(@url) || @url).toLowerCase() for [ filter, replacements ] in @stripPatterns if new RegExp(filter).test url for replace in replacements diff --git a/lib/utils.coffee b/lib/utils.coffee index cbc937b6..9a5661de 100644 --- a/lib/utils.coffee +++ b/lib/utils.coffee @@ -39,10 +39,10 @@ Utils = urlPrefix = new RegExp "^[a-z]{3,}://." (url) -> urlPrefix.test url - # Decode valid escape sequences in a Javascript URI. This is intended to mimic the best-effort decoding + # Decode valid escape sequences in a URI. This is intended to mimic the best-effort decoding # Chrome itself seems to apply when a Javascript URI is enetered into the omnibox (or clicked). # See https://code.google.com/p/chromium/issues/detail?id=483000, #1611 and #1636. - decodeJavascriptURI: (uri) -> + decodeURIByParts: (uri) -> uri.split(/(?=%)/).map((uriComponent) -> try decodeURIComponent uriComponent @@ -123,7 +123,7 @@ Utils = if Utils.hasChromePrefix string string else if Utils.hasJavascriptPrefix string - Utils.decodeJavascriptURI string + Utils.decodeURIByParts string else if Utils.isUrl string Utils.createFullUrl string else |
