aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLyall Hamilton2013-10-09 18:12:05 +1300
committerLyall Hamilton2013-10-09 18:12:05 +1300
commit7c2f6c56000b5af5e86d97b535d02e24a7d1b322 (patch)
treed12017d4a5e534b9d69bdad6b9d5700f71b1b0b4
parent6708ddac3655c92f0ef385562c46d6b5e0d047a8 (diff)
downloadvimium-7c2f6c56000b5af5e86d97b535d02e24a7d1b322.tar.bz2
Add favicons to vomnibar completions
Favicons are displayed as a background-image style next to urls in similar style to chrome's history page. For tabs the icon is fetched from the url specified by chrome tab's favIconUrl property. Unfortunately extensions to not have access to chrome://favicons/ to get bookmark favicons but fortunately most sites serve a favicon from protocol://hostname/favicon.ico (e.g. http://example.com/favicon.ico) so this url is tried for non-tab types.
-rw-r--r--background_scripts/completion.coffee11
-rw-r--r--content_scripts/vimium.css7
2 files changed, 17 insertions, 1 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee
index fd41cdc8..a03a3006 100644
--- a/background_scripts/completion.coffee
+++ b/background_scripts/completion.coffee
@@ -26,6 +26,7 @@ class Suggestion
generateHtml: ->
return @html if @html
+ favIconUrl = @tabFavIconUrl or "#{@getUrlRoot(@url)}/favicon.ico"
relevancyHtml = if @showRelevancy then "<span class='relevancy'>#{@computeRelevancy()}</span>" else ""
# NOTE(philc): We're using these vimium-specific class names so we don't collide with the page's CSS.
@html =
@@ -34,12 +35,19 @@ class Suggestion
<span class="vimiumReset vomnibarSource">#{@type}</span>
<span class="vimiumReset vomnibarTitle">#{@highlightTerms(Utils.escapeHtml(@title))}</span>
</div>
- <div class="vimiumReset vomnibarBottomHalf">
+ <div class="vimiumReset vomnibarBottomHalf vomnibarIcon"
+ style="background-image: url(#{favIconUrl});">
<span class="vimiumReset vomnibarUrl">#{@shortenUrl(@highlightTerms(@url))}</span>
#{relevancyHtml}
</div>
"""
+ # use neat trick to snatch a domain (http://stackoverflow.com/a/8498668)
+ getUrlRoot: (url) ->
+ a = document.createElement 'a'
+ a.href = url
+ a.protocol + "//" + a.hostname
+
shortenUrl: (url) -> @stripTrailingSlash(url).replace(/^http:\/\//, "")
stripTrailingSlash: (url) ->
@@ -241,6 +249,7 @@ class TabCompleter
suggestions = results.map (tab) =>
suggestion = new Suggestion(queryTerms, "tab", tab.url, tab.title, @computeRelevancy)
suggestion.tabId = tab.id
+ suggestion.tabFavIconUrl = tab.favIconUrl
suggestion
onComplete(suggestions)
diff --git a/content_scripts/vimium.css b/content_scripts/vimium.css
index ccbcb339..a486c8ef 100644
--- a/content_scripts/vimium.css
+++ b/content_scripts/vimium.css
@@ -349,6 +349,13 @@ body.vimiumFindMode ::selection {
padding: 2px 0;
}
+#vomnibar li .vomnibarIcon {
+ background-position-y: center;
+ background-size: 16px;
+ background-repeat: no-repeat;
+ padding-left: 20px;
+}
+
#vomnibar li .vomnibarSource {
color: #777;
margin-right: 4px;