| 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 // This contains unprivileged javascript APIs for extensions and apps. It | 5 // This contains unprivileged javascript APIs for extensions and apps. It |
| 6 // can be loaded by any extension-related context, such as content scripts or | 6 // can be loaded by any extension-related context, such as content scripts or |
| 7 // background pages. See user_script_slave.cc for script that is loaded by | 7 // background pages. See user_script_slave.cc for script that is loaded by |
| 8 // content scripts only. | 8 // content scripts only. |
| 9 | 9 |
| 10 require('json_schema'); | 10 require('json_schema'); |
| 11 require('event_bindings'); | |
| 12 var json = require('json'); | 11 var json = require('json'); |
| 13 var lastError = require('lastError'); | 12 var lastError = require('lastError'); |
| 14 var miscNatives = requireNative('miscellaneous_bindings'); | 13 var miscNatives = requireNative('miscellaneous_bindings'); |
| 14 var chrome = requireNative('chrome').GetChrome(); |
| 15 var CloseChannel = miscNatives.CloseChannel; | 15 var CloseChannel = miscNatives.CloseChannel; |
| 16 var PortAddRef = miscNatives.PortAddRef; | 16 var PortAddRef = miscNatives.PortAddRef; |
| 17 var PortRelease = miscNatives.PortRelease; | 17 var PortRelease = miscNatives.PortRelease; |
| 18 var PostMessage = miscNatives.PostMessage; | 18 var PostMessage = miscNatives.PostMessage; |
| 19 var BindToGC = miscNatives.BindToGC; | 19 var BindToGC = miscNatives.BindToGC; |
| 20 | 20 |
| 21 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 21 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); |
| 22 | 22 |
| 23 var processNatives = requireNative('process'); | 23 var processNatives = requireNative('process'); |
| 24 var manifestVersion = processNatives.GetManifestVersion(); | 24 var manifestVersion = processNatives.GetManifestVersion(); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 " send a response after the listener returns "; | 114 " send a response after the listener returns "; |
| 115 } else { | 115 } else { |
| 116 errorMsg = | 116 errorMsg = |
| 117 "Cannot send a response more than once per " + eventName + | 117 "Cannot send a response more than once per " + eventName + |
| 118 " listener per document"; | 118 " listener per document"; |
| 119 } | 119 } |
| 120 errorMsg += " (message was sent by extension " + sourceExtensionId; | 120 errorMsg += " (message was sent by extension " + sourceExtensionId; |
| 121 if (sourceExtensionId != targetExtensionId) | 121 if (sourceExtensionId != targetExtensionId) |
| 122 errorMsg += " for extension " + targetExtensionId; | 122 errorMsg += " for extension " + targetExtensionId; |
| 123 errorMsg += ")."; | 123 errorMsg += ")."; |
| 124 lastError.set(errorMsg); | 124 lastError.set(errorMsg, chrome); |
| 125 console.error("Could not send response: " + errorMsg); | 125 console.error("Could not send response: " + errorMsg); |
| 126 } | 126 } |
| 127 | 127 |
| 128 // Helper function for dispatchOnConnect | 128 // Helper function for dispatchOnConnect |
| 129 function dispatchOnRequest(portId, channelName, sender, | 129 function dispatchOnRequest(portId, channelName, sender, |
| 130 sourceExtensionId, targetExtensionId, | 130 sourceExtensionId, targetExtensionId, |
| 131 isExternal) { | 131 isExternal) { |
| 132 var isSendMessage = channelName == chromeHidden.kMessageChannel; | 132 var isSendMessage = channelName == chromeHidden.kMessageChannel; |
| 133 var requestEvent = (isSendMessage ? | 133 var requestEvent = (isSendMessage ? |
| 134 (isExternal ? | 134 (isExternal ? |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 }; | 224 }; |
| 225 | 225 |
| 226 // Called by native code when a channel has been closed. | 226 // Called by native code when a channel has been closed. |
| 227 chromeHidden.Port.dispatchOnDisconnect = function( | 227 chromeHidden.Port.dispatchOnDisconnect = function( |
| 228 portId, errorMessage) { | 228 portId, errorMessage) { |
| 229 var port = ports[portId]; | 229 var port = ports[portId]; |
| 230 if (port) { | 230 if (port) { |
| 231 // Update the renderer's port bookkeeping, without notifying the browser. | 231 // Update the renderer's port bookkeeping, without notifying the browser. |
| 232 CloseChannel(portId, false); | 232 CloseChannel(portId, false); |
| 233 if (errorMessage) { | 233 if (errorMessage) { |
| 234 lastError.set(errorMessage); | 234 lastError.set(errorMessage, chrome); |
| 235 console.error("Port error: " + errorMessage); | 235 console.error("Port error: " + errorMessage); |
| 236 } | 236 } |
| 237 try { | 237 try { |
| 238 port.onDisconnect.dispatch(port); | 238 port.onDisconnect.dispatch(port); |
| 239 } finally { | 239 } finally { |
| 240 port.destroy_(); | 240 port.destroy_(); |
| 241 lastError.clear(); | 241 lastError.clear(chrome); |
| 242 } | 242 } |
| 243 } | 243 } |
| 244 }; | 244 }; |
| 245 | 245 |
| 246 // Called by native code when a message has been sent to the given port. | 246 // Called by native code when a message has been sent to the given port. |
| 247 chromeHidden.Port.dispatchOnMessage = function(msg, portId) { | 247 chromeHidden.Port.dispatchOnMessage = function(msg, portId) { |
| 248 var port = ports[portId]; | 248 var port = ports[portId]; |
| 249 if (port) { | 249 if (port) { |
| 250 if (msg) { | 250 if (msg) { |
| 251 msg = json.parse(msg); | 251 msg = json.parse(msg); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 var targetId = null; | 312 var targetId = null; |
| 313 if (lastArg >= 0) | 313 if (lastArg >= 0) |
| 314 targetId = args[lastArg--]; | 314 targetId = args[lastArg--]; |
| 315 | 315 |
| 316 if (lastArg != -1) | 316 if (lastArg != -1) |
| 317 throw new Error('Invalid arguments to ' + functionName + '.'); | 317 throw new Error('Invalid arguments to ' + functionName + '.'); |
| 318 return [targetId, request, responseCallback]; | 318 return [targetId, request, responseCallback]; |
| 319 } | 319 } |
| 320 | 320 |
| 321 exports.sendMessageUpdateArguments = sendMessageUpdateArguments; | 321 exports.sendMessageUpdateArguments = sendMessageUpdateArguments; |
| OLD | NEW |