Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: chrome/renderer/resources/extensions/extension_custom_bindings.js

Issue 10990064: Revert 156678 - Native messaging now uses the MessageService back-end. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 extension API. 5 // Custom bindings for the extension API.
6 6
7 var extensionNatives = requireNative('extension'); 7 var extensionNatives = requireNative('extension');
8 var GetExtensionViews = extensionNatives.GetExtensionViews; 8 var GetExtensionViews = extensionNatives.GetExtensionViews;
9 var OpenChannelToExtension = extensionNatives.OpenChannelToExtension; 9 var OpenChannelToExtension = extensionNatives.OpenChannelToExtension;
10 var OpenChannelToNativeApp = extensionNatives.OpenChannelToNativeApp;
11 10
12 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); 11 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
13 12
14 var inIncognitoContext = requireNative('process').InIncognitoContext(); 13 var inIncognitoContext = requireNative('process').InIncognitoContext();
15 14
16 chrome.extension = chrome.extension || {}; 15 chrome.extension = chrome.extension || {};
17 16
18 var manifestVersion = requireNative('process').GetManifestVersion(); 17 var manifestVersion = requireNative('process').GetManifestVersion();
19 if (manifestVersion < 2) { 18 if (manifestVersion < 2) {
20 chrome.self = chrome.extension; 19 chrome.self = chrome.extension;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 targetId = args[lastArg--]; 86 targetId = args[lastArg--];
88 87
89 if (lastArg != -1) 88 if (lastArg != -1)
90 throw new Error('Invalid arguments to ' + functionName + '.'); 89 throw new Error('Invalid arguments to ' + functionName + '.');
91 return [targetId, request, responseCallback]; 90 return [targetId, request, responseCallback];
92 } 91 }
93 apiFunctions.setUpdateArgumentsPreValidate('sendRequest', 92 apiFunctions.setUpdateArgumentsPreValidate('sendRequest',
94 sendMessageUpdateArguments.bind(null, 'sendRequest')); 93 sendMessageUpdateArguments.bind(null, 'sendRequest'));
95 apiFunctions.setUpdateArgumentsPreValidate('sendMessage', 94 apiFunctions.setUpdateArgumentsPreValidate('sendMessage',
96 sendMessageUpdateArguments.bind(null, 'sendMessage')); 95 sendMessageUpdateArguments.bind(null, 'sendMessage'));
97 apiFunctions.setUpdateArgumentsPreValidate('sendNativeMessage',
98 sendMessageUpdateArguments.bind(null, 'sendNativeMessage'));
99 96
100 apiFunctions.setHandleRequest('sendRequest', 97 apiFunctions.setHandleRequest('sendRequest',
101 function(targetId, request, responseCallback) { 98 function(targetId, request, responseCallback) {
102 var port = chrome.extension.connect(targetId || extensionId, 99 var port = chrome.extension.connect(targetId || extensionId,
103 {name: chromeHidden.kRequestChannel}); 100 {name: chromeHidden.kRequestChannel});
104 chromeHidden.Port.sendMessageImpl(port, request, responseCallback); 101 chromeHidden.Port.sendMessageImpl(port, request, responseCallback);
105 }); 102 });
106 103
107 apiFunctions.setHandleRequest('sendMessage', 104 apiFunctions.setHandleRequest('sendMessage',
108 function(targetId, message, responseCallback) { 105 function(targetId, message, responseCallback) {
109 var port = chrome.extension.connect(targetId || extensionId, 106 var port = chrome.extension.connect(targetId || extensionId,
110 {name: chromeHidden.kMessageChannel}); 107 {name: chromeHidden.kMessageChannel});
111 chromeHidden.Port.sendMessageImpl(port, message, responseCallback); 108 chromeHidden.Port.sendMessageImpl(port, message, responseCallback);
112 }); 109 });
113 110
114 apiFunctions.setHandleRequest('sendNativeMessage',
115 function(targetId, message, responseCallback) {
116 var port = chrome.extension.connectNative(
117 targetId, message, chromeHidden.kNativeMessageChannel);
118 chromeHidden.Port.sendMessageImpl(port, '', responseCallback);
119 });
120
121 apiFunctions.setUpdateArgumentsPreValidate('connect', function() { 111 apiFunctions.setUpdateArgumentsPreValidate('connect', function() {
122 // Align missing (optional) function arguments with the arguments that 112 // Align missing (optional) function arguments with the arguments that
123 // schema validation is expecting, e.g. 113 // schema validation is expecting, e.g.
124 // extension.connect() -> extension.connect(null, null) 114 // extension.connect() -> extension.connect(null, null)
125 // extension.connect({}) -> extension.connect(null, {}) 115 // extension.connect({}) -> extension.connect(null, {})
126 var nextArg = 0; 116 var nextArg = 0;
127 117
128 // targetId (first argument) is optional. 118 // targetId (first argument) is optional.
129 var targetId = null; 119 var targetId = null;
130 if (typeof(arguments[nextArg]) == 'string') 120 if (typeof(arguments[nextArg]) == 'string')
131 targetId = arguments[nextArg++]; 121 targetId = arguments[nextArg++];
132 122
133 // connectInfo (second argument) is optional. 123 // connectInfo (second argument) is optional.
134 var connectInfo = null; 124 var connectInfo = null;
135 if (typeof(arguments[nextArg]) == 'object') 125 if (typeof(arguments[nextArg]) == 'object')
136 connectInfo = arguments[nextArg++]; 126 connectInfo = arguments[nextArg++];
137 127
138 if (nextArg != arguments.length) 128 if (nextArg != arguments.length)
139 throw new Error('Invalid arguments to connect.'); 129 throw new Error('Invalid arguments to connect');
140 return [targetId, connectInfo]; 130 return [targetId, connectInfo];
141 }); 131 });
142 132
143 apiFunctions.setUpdateArgumentsPreValidate('connectNative', function() {
144 var nextArg = 0;
145
146 // appName is required.
147 var appName = arguments[nextArg++];
148
149 // connectionMessage is required.
150 var connectMessage = arguments[nextArg++];
151
152 // channelName is only passed by sendMessage
153 var channelName = 'connectNative';
154 if (typeof(arguments[nextArg]) == 'string')
155 channelName = arguments[nextArg++];
156
157 if (nextArg != arguments.length)
158 throw new Error('Invalid arguments to connectNative.');
159 return [appName, {name: channelName, message: connectMessage}];
160 });
161
162 apiFunctions.setHandleRequest('connect', function(targetId, connectInfo) { 133 apiFunctions.setHandleRequest('connect', function(targetId, connectInfo) {
163 if (!targetId) 134 if (!targetId)
164 targetId = extensionId; 135 targetId = extensionId;
165 var name = ''; 136 var name = '';
166 if (connectInfo && connectInfo.name) 137 if (connectInfo && connectInfo.name)
167 name = connectInfo.name; 138 name = connectInfo.name;
168 139
169 var portId = OpenChannelToExtension(extensionId, targetId, name); 140 var portId = OpenChannelToExtension(extensionId, targetId, name);
170 if (portId >= 0) 141 if (portId >= 0)
171 return chromeHidden.Port.createPort(portId, name); 142 return chromeHidden.Port.createPort(portId, name);
172 throw new Error('Error connecting to extension ' + targetId); 143 throw new Error('Error connecting to extension ' + targetId);
173 }); 144 });
174
175 apiFunctions.setHandleRequest('connectNative',
176 function(nativeAppName, connectInfo) {
177 // Turn the object into a string here, because it eventually will be.
178 var portId = OpenChannelToNativeApp(extensionId,
179 nativeAppName,
180 connectInfo.name,
181 JSON.stringify(connectInfo.message));
182 if (portId >= 0) {
183 return chromeHidden.Port.createPort(portId, connectInfo.name);
184 }
185 throw new Error('Error connecting to native app: ' + nativeAppName);
186 });
187 }); 145 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698