aboutsummaryrefslogtreecommitdiffstats
path: root/background_page.html
diff options
context:
space:
mode:
authorPhil Crosby2012-04-25 22:39:10 -0700
committerPhil Crosby2012-04-25 22:39:10 -0700
commita26a2bfdcf5c0fd21fb501ed2ace3c2aa6476d8e (patch)
tree38da417bbbcd2e0e1b5f2930fa76309f3de134e5 /background_page.html
parent6b56ff3390a25fc2d5673aacd4ffd4ba44b9a39c (diff)
parentcbe44163f741b3b20ad06464f9dda80ed271bd15 (diff)
downloadvimium-a26a2bfdcf5c0fd21fb501ed2ace3c2aa6476d8e.tar.bz2
Merge pull request #459 from niklasb/fuzzy
Vimium Omnibox implementation, with fuzzy completion
Diffstat (limited to 'background_page.html')
-rw-r--r--background_page.html60
1 files changed, 57 insertions, 3 deletions
diff --git a/background_page.html b/background_page.html
index d8d3f75b..9ce9fe22 100644
--- a/background_page.html
+++ b/background_page.html
@@ -4,6 +4,7 @@
<script type="text/javascript" src="lib/clipboard.js"></script>
<script type="text/javascript" src="lib/utils.js"></script>
<script type="text/javascript" src="background/settings.js"></script>
+<script type="text/javascript" src="lib/completion.js"></script>
<script type="text/javascript" charset="utf-8">
var currentVersion = utils.getCurrentVersion();
@@ -26,7 +27,8 @@
returnScrollPosition: handleReturnScrollPosition,
getCurrentTabUrl: getCurrentTabUrl,
settings: handleSettings,
- getBookmarks: getBookmarks
+ getBookmarks: getBookmarks,
+ filterCompleter: filterCompleter,
};
var sendRequestHandlers = {
@@ -41,7 +43,9 @@
updateScrollPosition: handleUpdateScrollPosition,
copyToClipboard: copyToClipboard,
isEnabledForUrl: isEnabledForUrl,
- saveHelpDialogSettings: saveHelpDialogSettings
+ saveHelpDialogSettings: saveHelpDialogSettings,
+ selectSpecificTab: selectSpecificTab,
+ refreshCompleter: refreshCompleter,
};
// Event handlers
@@ -49,6 +53,29 @@
var getScrollPositionHandlers = {}; // tabId -> function(tab, scrollX, scrollY);
var tabLoadedHandlers = {}; // tabId -> function()
+ var completionSources = {
+ smart: new completion.SmartCompletionSource({
+ 'wiki ': [ 'Wikipedia (en)', 'http://en.wikipedia.org/wiki/%s' ],
+ 'luck ': [ 'Google Lucky (en)', 'http://www.google.com/search?q=%s&btnI=I%27m+Feeling+Lucky' ],
+ 'cc ' : [ 'dict.cc', 'http://www.dict.cc/?s=%s' ],
+ ';' : [ 'goto', '%s' ],
+ '?' : [ 'search', function(query) { return utils.createSearchUrl(query) } ],
+ }),
+ domain: new completion.DomainCompletionSource(),
+ bookmarks: new completion.FuzzyBookmarkCompletionSource(),
+ history: new completion.FuzzyHistoryCompletionSource(20000),
+ tabs: new completion.FuzzyTabCompletionSource(),
+ }
+ var completers = {
+ omni: new completion.MultiCompleter([
+ completionSources.domain,
+ completionSources.smart,
+ completionSources.bookmarks,
+ completionSources.history,
+ ], 1),
+ tabs: new completion.MultiCompleter([ completionSources.tabs ], 0),
+ };
+
chrome.extension.onConnect.addListener(function(port, name) {
var senderTabId = port.sender.tab ? port.sender.tab.id : null;
// If this is a tab we've been waiting to open, execute any "tab loaded" handlers, e.g. to restore
@@ -70,7 +97,6 @@
if (portHandlers[port.name])
port.onMessage.addListener(portHandlers[port.name]);
-
});
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
@@ -257,6 +283,13 @@
Clipboard.copy(request.data);
}
+ /**
+ * Selects the tab with the ID specified in request.id
+ */
+ function selectSpecificTab(request) {
+ chrome.tabs.update(request.id, { selected: true });
+ }
+
/*
* Used by the content scripts to get settings from the local storage.
*/
@@ -276,6 +309,27 @@
})
}
+ function refreshCompleter(request) {
+ completers[request.name].refresh();
+ }
+
+ function filterCompleter(args, port) {
+ completers[args.name].filter(args.query, args.maxResults, function(results) {
+ port.postMessage({ id: args.id, results: results });
+ });
+ }
+
+ /*
+ * Used by everyone to get settings from local storage.
+ */
+ function getSettingFromLocalStorage(setting) {
+ if (localStorage[setting] != "" && !localStorage[setting]) {
+ return defaultSettings[setting];
+ } else {
+ return localStorage[setting];
+ }
+ }
+
function getCurrentTimeInSeconds() { Math.floor((new Date()).getTime() / 1000); }
chrome.tabs.onSelectionChanged.addListener(function(tabId, selectionInfo) {