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 bindings 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 Bindings = require('schema_binding_generator').Bindings; |
| 9 var bindings = new Bindings('omnibox'); |
| 10 |
8 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 11 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); |
9 var sendRequest = require('sendRequest').sendRequest; | 12 var sendRequest = require('sendRequest').sendRequest; |
10 | 13 |
11 // Remove invalid characters from |text| so that it is suitable to use | 14 // Remove invalid characters from |text| so that it is suitable to use |
12 // for |AutocompleteMatch::contents|. | 15 // for |AutocompleteMatch::contents|. |
13 function sanitizeString(text, shouldTrim) { | 16 function sanitizeString(text, shouldTrim) { |
14 // NOTE: This logic mirrors |AutocompleteMatch::SanitizeString()|. | 17 // NOTE: This logic mirrors |AutocompleteMatch::SanitizeString()|. |
15 // 0x2028 = line separator; 0x2029 = paragraph separator. | 18 // 0x2028 = line separator; 0x2029 = paragraph separator. |
16 var kRemoveChars = /(\r|\n|\t|\u2028|\u2029)/gm; | 19 var kRemoveChars = /(\r|\n|\t|\u2028|\u2029)/gm; |
17 if (shouldTrim) | 20 if (shouldTrim) |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 | 74 |
72 // Descend into all other nodes, even if they are unrecognized, for | 75 // Descend into all other nodes, even if they are unrecognized, for |
73 // forward compat. | 76 // forward compat. |
74 arguments.callee(child); | 77 arguments.callee(child); |
75 } | 78 } |
76 })(root); | 79 })(root); |
77 | 80 |
78 return result; | 81 return result; |
79 } | 82 } |
80 | 83 |
81 chromeHidden.registerCustomHook('omnibox', function(bindingsAPI) { | 84 bindings.registerCustomHook(function(bindingsAPI) { |
82 var apiFunctions = bindingsAPI.apiFunctions; | 85 var apiFunctions = bindingsAPI.apiFunctions; |
83 | 86 |
84 apiFunctions.setHandleRequest('setDefaultSuggestion', function(details) { | 87 apiFunctions.setHandleRequest('setDefaultSuggestion', function(details) { |
85 var parseResult = parseOmniboxDescription(details.description); | 88 var parseResult = parseOmniboxDescription(details.description); |
86 sendRequest(this.name, [parseResult], this.definition.parameters); | 89 sendRequest(this.name, [parseResult], this.definition.parameters); |
87 }); | 90 }); |
88 | 91 |
89 apiFunctions.setUpdateArgumentsPostValidate( | 92 apiFunctions.setUpdateArgumentsPostValidate( |
90 'sendSuggestions', function(requestId, userSuggestions) { | 93 'sendSuggestions', function(requestId, userSuggestions) { |
91 var suggestions = []; | 94 var suggestions = []; |
92 for (var i = 0; i < userSuggestions.length; i++) { | 95 for (var i = 0; i < userSuggestions.length; i++) { |
93 var parseResult = parseOmniboxDescription( | 96 var parseResult = parseOmniboxDescription( |
94 userSuggestions[i].description); | 97 userSuggestions[i].description); |
95 parseResult.content = userSuggestions[i].content; | 98 parseResult.content = userSuggestions[i].content; |
96 suggestions.push(parseResult); | 99 suggestions.push(parseResult); |
97 } | 100 } |
98 return [requestId, suggestions]; | 101 return [requestId, suggestions]; |
99 }); | 102 }); |
100 }); | 103 }); |
101 | 104 |
102 chromeHidden.Event.registerArgumentMassager('omnibox.onInputChanged', | 105 chromeHidden.Event.registerArgumentMassager('omnibox.onInputChanged', |
103 function(args, dispatch) { | 106 function(args, dispatch) { |
104 var text = args[0]; | 107 var text = args[0]; |
105 var requestId = args[1]; | 108 var requestId = args[1]; |
106 var suggestCallback = function(suggestions) { | 109 var suggestCallback = function(suggestions) { |
107 chrome.omnibox.sendSuggestions(requestId, suggestions); | 110 chrome.omnibox.sendSuggestions(requestId, suggestions); |
108 }; | 111 }; |
109 dispatch([text, suggestCallback]); | 112 dispatch([text, suggestCallback]); |
110 }); | 113 }); |
| 114 |
| 115 exports.bindings = bindings.generate(); |
OLD | NEW |