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 10991044: Revert 158830 - Revert 156678 - Native messaging now uses the MessageService back-end. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
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 | Annotate | Revision Log
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;
10 11
11 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); 12 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
12 13
13 var inIncognitoContext = requireNative('process').InIncognitoContext(); 14 var inIncognitoContext = requireNative('process').InIncognitoContext();
14 15
15 chrome.extension = chrome.extension || {}; 16 chrome.extension = chrome.extension || {};
16 17
17 var manifestVersion = requireNative('process').GetManifestVersion(); 18 var manifestVersion = requireNative('process').GetManifestVersion();
18 if (manifestVersion < 2) { 19 if (manifestVersion < 2) {
19 chrome.self = chrome.extension; 20 chrome.self = chrome.extension;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 targetId = args[lastArg--]; 87 targetId = args[lastArg--];
87 88
88 if (lastArg != -1) 89 if (lastArg != -1)
89 throw new Error('Invalid arguments to ' + functionName + '.'); 90 throw new Error('Invalid arguments to ' + functionName + '.');
90 return [targetId, request, responseCallback]; 91 return [targetId, request, responseCallback];
91 } 92 }
92 apiFunctions.setUpdateArgumentsPreValidate('sendRequest', 93 apiFunctions.setUpdateArgumentsPreValidate('sendRequest',
93 sendMessageUpdateArguments.bind(null, 'sendRequest')); 94 sendMessageUpdateArguments.bind(null, 'sendRequest'));
94 apiFunctions.setUpdateArgumentsPreValidate('sendMessage', 95 apiFunctions.setUpdateArgumentsPreValidate('sendMessage',
95 sendMessageUpdateArguments.bind(null, 'sendMessage')); 96 sendMessageUpdateArguments.bind(null, 'sendMessage'));
97 apiFunctions.setUpdateArgumentsPreValidate('sendNativeMessage',
98 sendMessageUpdateArguments.bind(null, 'sendNativeMessage'));
96 99
97 apiFunctions.setHandleRequest('sendRequest', 100 apiFunctions.setHandleRequest('sendRequest',
98 function(targetId, request, responseCallback) { 101 function(targetId, request, responseCallback) {
99 var port = chrome.extension.connect(targetId || extensionId, 102 var port = chrome.extension.connect(targetId || extensionId,
100 {name: chromeHidden.kRequestChannel}); 103 {name: chromeHidden.kRequestChannel});
101 chromeHidden.Port.sendMessageImpl(port, request, responseCallback); 104 chromeHidden.Port.sendMessageImpl(port, request, responseCallback);
102 }); 105 });
103 106
104 apiFunctions.setHandleRequest('sendMessage', 107 apiFunctions.setHandleRequest('sendMessage',
105 function(targetId, message, responseCallback) { 108 function(targetId, message, responseCallback) {
106 var port = chrome.extension.connect(targetId || extensionId, 109 var port = chrome.extension.connect(targetId || extensionId,
107 {name: chromeHidden.kMessageChannel}); 110 {name: chromeHidden.kMessageChannel});
108 chromeHidden.Port.sendMessageImpl(port, message, responseCallback); 111 chromeHidden.Port.sendMessageImpl(port, message, responseCallback);
109 }); 112 });
110 113
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
111 apiFunctions.setUpdateArgumentsPreValidate('connect', function() { 121 apiFunctions.setUpdateArgumentsPreValidate('connect', function() {
112 // Align missing (optional) function arguments with the arguments that 122 // Align missing (optional) function arguments with the arguments that
113 // schema validation is expecting, e.g. 123 // schema validation is expecting, e.g.
114 // extension.connect() -> extension.connect(null, null) 124 // extension.connect() -> extension.connect(null, null)
115 // extension.connect({}) -> extension.connect(null, {}) 125 // extension.connect({}) -> extension.connect(null, {})
116 var nextArg = 0; 126 var nextArg = 0;
117 127
118 // targetId (first argument) is optional. 128 // targetId (first argument) is optional.
119 var targetId = null; 129 var targetId = null;
120 if (typeof(arguments[nextArg]) == 'string') 130 if (typeof(arguments[nextArg]) == 'string')
121 targetId = arguments[nextArg++]; 131 targetId = arguments[nextArg++];
122 132
123 // connectInfo (second argument) is optional. 133 // connectInfo (second argument) is optional.
124 var connectInfo = null; 134 var connectInfo = null;
125 if (typeof(arguments[nextArg]) == 'object') 135 if (typeof(arguments[nextArg]) == 'object')
126 connectInfo = arguments[nextArg++]; 136 connectInfo = arguments[nextArg++];
127 137
128 if (nextArg != arguments.length) 138 if (nextArg != arguments.length)
129 throw new Error('Invalid arguments to connect'); 139 throw new Error('Invalid arguments to connect.');
130 return [targetId, connectInfo]; 140 return [targetId, connectInfo];
131 }); 141 });
132 142
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
133 apiFunctions.setHandleRequest('connect', function(targetId, connectInfo) { 162 apiFunctions.setHandleRequest('connect', function(targetId, connectInfo) {
134 if (!targetId) 163 if (!targetId)
135 targetId = extensionId; 164 targetId = extensionId;
136 var name = ''; 165 var name = '';
137 if (connectInfo && connectInfo.name) 166 if (connectInfo && connectInfo.name)
138 name = connectInfo.name; 167 name = connectInfo.name;
139 168
140 var portId = OpenChannelToExtension(extensionId, targetId, name); 169 var portId = OpenChannelToExtension(extensionId, targetId, name);
141 if (portId >= 0) 170 if (portId >= 0)
142 return chromeHidden.Port.createPort(portId, name); 171 return chromeHidden.Port.createPort(portId, name);
143 throw new Error('Error connecting to extension ' + targetId); 172 throw new Error('Error connecting to extension ' + targetId);
144 }); 173 });
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 });
145 }); 187 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698