diff options
| author | Stephen Blott | 2015-05-06 05:18:59 +0100 |
|---|---|---|
| committer | Stephen Blott | 2015-05-06 05:46:20 +0100 |
| commit | 1f97221aef5cfe28200df81a68a139a3f2b07784 (patch) | |
| tree | 62b6031f5d384d69d353976b6eb5e3a246c4fd81 | |
| parent | 7d11b1699454366bf99e8e5033ba39b127687fcb (diff) | |
| download | vimium-1f97221aef5cfe28200df81a68a139a3f2b07784.tar.bz2 | |
Search completion; move all filter messages to a single port.
| -rw-r--r-- | background_scripts/completion.coffee | 2 | ||||
| -rw-r--r-- | background_scripts/main.coffee | 26 | ||||
| -rw-r--r-- | pages/vomnibar.coffee | 24 |
3 files changed, 23 insertions, 29 deletions
diff --git a/background_scripts/completion.coffee b/background_scripts/completion.coffee index c91825b5..8a69b645 100644 --- a/background_scripts/completion.coffee +++ b/background_scripts/completion.coffee @@ -331,7 +331,7 @@ class SearchEngineCompleter searchEngines: {} userIsTyping: -> - SearchEngines.userIsTyping() + CompletionEngines.userIsTyping() filter: (queryTerms, onComplete) -> { keyword: keyword, url: url, description: description } = @getSearchEngineMatches queryTerms diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 09a6b89f..066e4cb6 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -60,6 +60,17 @@ completers = bookmarks: new MultiCompleter([completionSources.bookmarks]) tabs: new MultiCompleter([completionSources.tabs]) +completionHandlers = + filter: (completer, args, port) -> + queryTerms = args.query.split(/\s+/).filter (s) -> 0 < s.length + completer.filter queryTerms, (results) -> port.postMessage id: args.id, results: results + + refreshCompleter: (completer) -> completer.refresh() + userIsTyping: (completer) -> completer.userIsTyping() + +handleCompletions = (args, port) -> + completionHandlers[args.handler] completers[args.name], args, port + chrome.runtime.onConnect.addListener (port, name) -> senderTabId = if port.sender.tab then port.sender.tab.id else null # If this is a tab we've been waiting to open, execute any "tab loaded" handlers, e.g. to restore @@ -217,18 +228,6 @@ handleSettings = (request, port) -> values[key] = Settings.get key for own key of values port.postMessage { values } -refreshCompleter = (request) -> completers[request.name].refresh() - -whitespaceRegexp = /\s+/ -filterCompleter = (args, port) -> - if args.name? and args.userIsTyping - completers[args.name].userIsTyping?() - - if args.id? and args.name? and args.query? - queryTerms = if (args.query == "") then [] else args.query.split(whitespaceRegexp) - completers[args.name].filter queryTerms, (results) -> - port.postMessage id: args.id, results: results - chrome.tabs.onSelectionChanged.addListener (tabId, selectionInfo) -> if (selectionChangedHandlers.length > 0) selectionChangedHandlers.pop().call() @@ -643,7 +642,7 @@ bgLog = (request, sender) -> portHandlers = keyDown: handleKeyDown, settings: handleSettings, - filterCompleter: filterCompleter + completions: handleCompletions sendRequestHandlers = getCompletionKeys: getCompletionKeysRequest @@ -661,7 +660,6 @@ sendRequestHandlers = pasteFromClipboard: pasteFromClipboard isEnabledForUrl: isEnabledForUrl selectSpecificTab: selectSpecificTab - refreshCompleter: refreshCompleter createMark: Marks.create.bind(Marks) gotoMark: Marks.goto.bind(Marks) setIcon: setIcon diff --git a/pages/vomnibar.coffee b/pages/vomnibar.coffee index d9a86a3f..a2d4df85 100644 --- a/pages/vomnibar.coffee +++ b/pages/vomnibar.coffee @@ -220,15 +220,14 @@ class VomnibarUI document.body.addEventListener "click", => @hide() # -# Sends filter and refresh requests to a Vomnibox completer on the background page. +# Sends requests to a Vomnibox completer on the background page. # class BackgroundCompleter - # - name: The background page completer that you want to interface with. Either "omni", "tabs", or - # "bookmarks". */ + # name is background-page completer to connect to: "omni", "tabs", or "bookmarks". constructor: (@name) -> @messageId = null - @filterPort = chrome.runtime.connect name: "filterCompleter" - @filterPort.onMessage.addListener handler = @messageHandler + @port = chrome.runtime.connect name: "completions" + @port.onMessage.addListener handler = @messageHandler messageHandler: (msg) => # We ignore messages which arrive too late. @@ -236,29 +235,26 @@ class BackgroundCompleter # The result objects coming from the background page will be of the form: # { html: "", type: "", url: "" } # type will be one of [tab, bookmark, history, domain]. - results = msg.results.map (result) -> + results = msg.results.map (result) => functionToCall = if result.type == "tab" - BackgroundCompleter.completionActions.switchToTab.curry result.tabId + @completionActions.switchToTab.curry result.tabId else - BackgroundCompleter.completionActions.navigateToUrl.curry result.url + @completionActions.navigateToUrl.curry result.url result.performAction = functionToCall result @mostRecentCallback results filter: (query, @mostRecentCallback) -> @messageId = Utils.createUniqueId() - @filterPort.postMessage id: @messageId, name: @name, query: query + @port.postMessage name: @name, handler: "filter", id: @messageId, query: query refresh: -> - chrome.runtime.sendMessage handler: "refreshCompleter", name: @name + @port.postMessage name: @name, handler: "refreshCompleter" userIsTyping: -> - @filterPort.postMessage name: @name, userIsTyping: true + @port.postMessage name: @name, handler: "userIsTyping" -extend BackgroundCompleter, - # # These are the actions we can perform when the user selects a result in the Vomnibox. - # completionActions: navigateToUrl: (url, openInNewTab) -> # If the URL is a bookmarklet prefixed with javascript:, we shouldn't open that in a new tab. |
