aboutsummaryrefslogtreecommitdiffstats
path: root/lib/completion.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/completion.js')
-rw-r--r--lib/completion.js39
1 files changed, 28 insertions, 11 deletions
diff --git a/lib/completion.js b/lib/completion.js
index 8b63fab0..81ce2f04 100644
--- a/lib/completion.js
+++ b/lib/completion.js
@@ -499,29 +499,43 @@ var completion = (function() {
DomainCompletionSource.prototype.withDomains = function(callback) {
var self = this;
+ function buildResult() {
+ return Object.keys(self.domains).map(function(dom) {
+ return [dom, self.domains[dom]];
+ });
+ }
if (self.domains !== null)
- return callback(Object.keys(self.domains));
+ return callback(buildResult());
self.domains = {};
- function processDomain(domain) {
- self.domains[domain] = true;
+ function processDomain(domain, https) {
+ // non-www version is preferrable, so check if we have it already
+ if (domain.indexOf('www.') == 0 && self.domains.hasOwnProperty(domain.slice(4)))
+ domain = domain.slice(4);
+
+ // HTTPS is preferrable
+ https = https || self.domains[domain] || self.domains['www.' + domain];
+
+ self.domains[domain] = !!https;
delete self.domains['www.' + domain];
}
- function extractDomain(url) { return url.split('/')[2]; }
+ function processUrl(url) {
+ parts = url.split('/');
+ processDomain(parts[2], parts[0] == 'https:');
+ }
historyCache.use(function(history) {
history.forEach(function(item) {
- processDomain(extractDomain(item.url));
+ processUrl(item.url);
});
});
- // delete redundant www. domains
- Object.keys(self.domains).forEach(function(domain) { processDomain(domain); });
chrome.history.onVisited.addListener(function(item) {
- processDomain(extractDomain(item.url));
+ processUrl(item.url);
});
- callback(Object.keys(self.domains));
+
+ callback(buildResult());
}
DomainCompletionSource.prototype.refresh = function() { }
@@ -529,7 +543,10 @@ var completion = (function() {
var best = null;
this.withDomains(function(domains) {
var bestOffset = 1000;
- domains.forEach(function(domain) {
+ domains.forEach(function(result) {
+ var domain = result[0];
+ var protocol = result[1] ? 'https' : 'http';
+
var offset = domain.indexOf(query);
if (offset < 0 || offset >= bestOffset)
return;
@@ -539,7 +556,7 @@ var completion = (function() {
best = new LazyCompletion(-1.5, function() {
return {
html: createCompletionHtml('site', domain),
- action: {func: 'completion.createActionOpenUrl', args: [utils.createFullUrl(domain)]},
+ action: {func: 'completion.createActionOpenUrl', args: [protocol + '://' + domain]},
}});
});
});