OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Custom bindings for the omnibox API. Only injected into the v8 contexts | 5 // Custom binding for the omnibox API. Only injected into the v8 contexts |
6 // for extensions which have permission for the omnibox API. | 6 // for extensions which have permission for the omnibox API. |
7 | 7 |
| 8 var binding = require('binding').Binding.create('omnibox'); |
| 9 |
8 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 10 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); |
9 var sendRequest = require('sendRequest').sendRequest; | 11 var sendRequest = require('sendRequest').sendRequest; |
10 | 12 |
11 // Remove invalid characters from |text| so that it is suitable to use | 13 // Remove invalid characters from |text| so that it is suitable to use |
12 // for |AutocompleteMatch::contents|. | 14 // for |AutocompleteMatch::contents|. |
13 function sanitizeString(text, shouldTrim) { | 15 function sanitizeString(text, shouldTrim) { |
14 // NOTE: This logic mirrors |AutocompleteMatch::SanitizeString()|. | 16 // NOTE: This logic mirrors |AutocompleteMatch::SanitizeString()|. |
15 // 0x2028 = line separator; 0x2029 = paragraph separator. | 17 // 0x2028 = line separator; 0x2029 = paragraph separator. |
16 var kRemoveChars = /(\r|\n|\t|\u2028|\u2029)/gm; | 18 var kRemoveChars = /(\r|\n|\t|\u2028|\u2029)/gm; |
17 if (shouldTrim) | 19 if (shouldTrim) |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 // Descend into all other nodes, even if they are unrecognized, for | 74 // Descend into all other nodes, even if they are unrecognized, for |
73 // forward compat. | 75 // forward compat. |
74 walk(child); | 76 walk(child); |
75 } | 77 } |
76 }; | 78 }; |
77 walk(root); | 79 walk(root); |
78 | 80 |
79 return result; | 81 return result; |
80 } | 82 } |
81 | 83 |
82 chromeHidden.registerCustomHook('omnibox', function(bindingsAPI) { | 84 binding.registerCustomHook(function(bindingsAPI) { |
83 var apiFunctions = bindingsAPI.apiFunctions; | 85 var apiFunctions = bindingsAPI.apiFunctions; |
84 | 86 |
85 apiFunctions.setHandleRequest('setDefaultSuggestion', function(details) { | 87 apiFunctions.setHandleRequest('setDefaultSuggestion', function(details) { |
86 var parseResult = parseOmniboxDescription(details.description); | 88 var parseResult = parseOmniboxDescription(details.description); |
87 sendRequest(this.name, [parseResult], this.definition.parameters); | 89 sendRequest(this.name, [parseResult], this.definition.parameters); |
88 }); | 90 }); |
89 | 91 |
90 apiFunctions.setUpdateArgumentsPostValidate( | 92 apiFunctions.setUpdateArgumentsPostValidate( |
91 'sendSuggestions', function(requestId, userSuggestions) { | 93 'sendSuggestions', function(requestId, userSuggestions) { |
92 var suggestions = []; | 94 var suggestions = []; |
93 for (var i = 0; i < userSuggestions.length; i++) { | 95 for (var i = 0; i < userSuggestions.length; i++) { |
94 var parseResult = parseOmniboxDescription( | 96 var parseResult = parseOmniboxDescription( |
95 userSuggestions[i].description); | 97 userSuggestions[i].description); |
96 parseResult.content = userSuggestions[i].content; | 98 parseResult.content = userSuggestions[i].content; |
97 suggestions.push(parseResult); | 99 suggestions.push(parseResult); |
98 } | 100 } |
99 return [requestId, suggestions]; | 101 return [requestId, suggestions]; |
100 }); | 102 }); |
101 }); | 103 }); |
102 | 104 |
103 chromeHidden.Event.registerArgumentMassager('omnibox.onInputChanged', | 105 chromeHidden.Event.registerArgumentMassager('omnibox.onInputChanged', |
104 function(args, dispatch) { | 106 function(args, dispatch) { |
105 var text = args[0]; | 107 var text = args[0]; |
106 var requestId = args[1]; | 108 var requestId = args[1]; |
107 var suggestCallback = function(suggestions) { | 109 var suggestCallback = function(suggestions) { |
108 chrome.omnibox.sendSuggestions(requestId, suggestions); | 110 chrome.omnibox.sendSuggestions(requestId, suggestions); |
109 }; | 111 }; |
110 dispatch([text, suggestCallback]); | 112 dispatch([text, suggestCallback]); |
111 }); | 113 }); |
| 114 |
| 115 exports.binding = binding.generate(); |
OLD | NEW |