| 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 // TODO(kalman): factor requiring chrome out of here. | 10 // TODO(kalman): factor requiring chrome out of here. |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 | 94 |
| 95 // Helper function for dispatchOnRequest. | 95 // Helper function for dispatchOnRequest. |
| 96 function handleSendRequestError(isSendMessage, | 96 function handleSendRequestError(isSendMessage, |
| 97 responseCallbackPreserved, | 97 responseCallbackPreserved, |
| 98 sourceExtensionId, | 98 sourceExtensionId, |
| 99 targetExtensionId, | 99 targetExtensionId, |
| 100 sourceUrl) { | 100 sourceUrl) { |
| 101 var errorMsg = []; | 101 var errorMsg = []; |
| 102 var eventName = isSendMessage ? "runtime.onMessage" : "extension.onRequest"; | 102 var eventName = isSendMessage ? "runtime.onMessage" : "extension.onRequest"; |
| 103 if (isSendMessage && !responseCallbackPreserved) { | 103 if (isSendMessage && !responseCallbackPreserved) { |
| 104 errorMsg.push( | 104 $Array.push(errorMsg, |
| 105 "The chrome." + eventName + " listener must return true if you " + | 105 "The chrome." + eventName + " listener must return true if you " + |
| 106 "want to send a response after the listener returns"); | 106 "want to send a response after the listener returns"); |
| 107 } else { | 107 } else { |
| 108 errorMsg.push( | 108 $Array.push(errorMsg, |
| 109 "Cannot send a response more than once per chrome." + eventName + | 109 "Cannot send a response more than once per chrome." + eventName + |
| 110 " listener per document"); | 110 " listener per document"); |
| 111 } | 111 } |
| 112 errorMsg.push("(message was sent by extension" + sourceExtensionId); | 112 $Array.push(errorMsg, "(message was sent by extension" + sourceExtensionId); |
| 113 if (sourceExtensionId != "" && sourceExtensionId != targetExtensionId) | 113 if (sourceExtensionId != "" && sourceExtensionId != targetExtensionId) |
| 114 errorMsg.push("for extension " + targetExtensionId); | 114 $Array.push(errorMsg, "for extension " + targetExtensionId); |
| 115 if (sourceUrl != "") | 115 if (sourceUrl != "") |
| 116 errorMsg.push("for URL " + sourceUrl); | 116 $Array.push(errorMsg, "for URL " + sourceUrl); |
| 117 lastError.set(eventName, errorMsg.join(" ") + ").", null, chrome); | 117 lastError.set(eventName, errorMsg.join(" ") + ").", null, chrome); |
| 118 } | 118 } |
| 119 | 119 |
| 120 // Helper function for dispatchOnConnect | 120 // Helper function for dispatchOnConnect |
| 121 function dispatchOnRequest(portId, channelName, sender, | 121 function dispatchOnRequest(portId, channelName, sender, |
| 122 sourceExtensionId, targetExtensionId, sourceUrl, | 122 sourceExtensionId, targetExtensionId, sourceUrl, |
| 123 isExternal) { | 123 isExternal) { |
| 124 var isSendMessage = channelName == kMessageChannel; | 124 var isSendMessage = channelName == kMessageChannel; |
| 125 var requestEvent = null; | 125 var requestEvent = null; |
| 126 if (isSendMessage) { | 126 if (isSendMessage) { |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 port = null; | 311 port = null; |
| 312 } | 312 } |
| 313 }); | 313 }); |
| 314 }; | 314 }; |
| 315 | 315 |
| 316 function sendMessageUpdateArguments(functionName) { | 316 function sendMessageUpdateArguments(functionName) { |
| 317 // Align missing (optional) function arguments with the arguments that | 317 // Align missing (optional) function arguments with the arguments that |
| 318 // schema validation is expecting, e.g. | 318 // schema validation is expecting, e.g. |
| 319 // extension.sendRequest(req) -> extension.sendRequest(null, req) | 319 // extension.sendRequest(req) -> extension.sendRequest(null, req) |
| 320 // extension.sendRequest(req, cb) -> extension.sendRequest(null, req, cb) | 320 // extension.sendRequest(req, cb) -> extension.sendRequest(null, req, cb) |
| 321 var args = Array.prototype.splice.call(arguments, 1); // skip functionName | 321 var args = $Array.splice(arguments, 1); // skip functionName |
| 322 var lastArg = args.length - 1; | 322 var lastArg = args.length - 1; |
| 323 | 323 |
| 324 // responseCallback (last argument) is optional. | 324 // responseCallback (last argument) is optional. |
| 325 var responseCallback = null; | 325 var responseCallback = null; |
| 326 if (typeof(args[lastArg]) == 'function') | 326 if (typeof(args[lastArg]) == 'function') |
| 327 responseCallback = args[lastArg--]; | 327 responseCallback = args[lastArg--]; |
| 328 | 328 |
| 329 // request (second argument) is required. | 329 // request (second argument) is required. |
| 330 var request = args[lastArg--]; | 330 var request = args[lastArg--]; |
| 331 | 331 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 345 exports.Port = Port; | 345 exports.Port = Port; |
| 346 exports.createPort = createPort; | 346 exports.createPort = createPort; |
| 347 exports.sendMessageImpl = sendMessageImpl; | 347 exports.sendMessageImpl = sendMessageImpl; |
| 348 exports.sendMessageUpdateArguments = sendMessageUpdateArguments; | 348 exports.sendMessageUpdateArguments = sendMessageUpdateArguments; |
| 349 | 349 |
| 350 // For C++ code to call. | 350 // For C++ code to call. |
| 351 exports.hasPort = hasPort; | 351 exports.hasPort = hasPort; |
| 352 exports.dispatchOnConnect = dispatchOnConnect; | 352 exports.dispatchOnConnect = dispatchOnConnect; |
| 353 exports.dispatchOnDisconnect = dispatchOnDisconnect; | 353 exports.dispatchOnDisconnect = dispatchOnDisconnect; |
| 354 exports.dispatchOnMessage = dispatchOnMessage; | 354 exports.dispatchOnMessage = dispatchOnMessage; |
| OLD | NEW |