| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 script contains unprivileged javascript APIs related to chrome | 5 // This script contains unprivileged javascript APIs related to chrome |
| 6 // extensions. It is loaded by any extension-related context, such as content | 6 // extensions. It is loaded by any extension-related context, such as content |
| 7 // scripts or toolstrips. | 7 // scripts or toolstrips. |
| 8 // See user_script_slave.cc for script that is loaded by content scripts only. | 8 // See user_script_slave.cc for script that is loaded by content scripts only. |
| 9 // TODO(mpcomplete): we also load this in regular web pages, but don't need | 9 // TODO(mpcomplete): we also load this in regular web pages, but don't need |
| 10 // to. | 10 // to. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 // close both. | 66 // close both. |
| 67 if (targetExtensionId != chromeHidden.extensionId) | 67 if (targetExtensionId != chromeHidden.extensionId) |
| 68 return; // not for us | 68 return; // not for us |
| 69 if (ports[getOppositePortId(portId)]) | 69 if (ports[getOppositePortId(portId)]) |
| 70 return; // this channel was opened by us, so ignore it | 70 return; // this channel was opened by us, so ignore it |
| 71 | 71 |
| 72 // Determine whether this is coming from another extension, so we can use | 72 // Determine whether this is coming from another extension, so we can use |
| 73 // the right event. | 73 // the right event. |
| 74 var isExternal = sourceExtensionId != chromeHidden.extensionId; | 74 var isExternal = sourceExtensionId != chromeHidden.extensionId; |
| 75 | 75 |
| 76 if (tab) |
| 77 tab = JSON.parse(tab); |
| 78 var sender = {tab: tab, id: sourceExtensionId}; |
| 79 |
| 76 // Special case for sendRequest/onRequest. | 80 // Special case for sendRequest/onRequest. |
| 77 if (channelName == chromeHidden.kRequestChannel) { | 81 if (channelName == chromeHidden.kRequestChannel) { |
| 78 var requestEvent = (isExternal ? | 82 var requestEvent = (isExternal ? |
| 79 chrome.extension.onRequestExternal : chrome.extension.onRequest); | 83 chrome.extension.onRequestExternal : chrome.extension.onRequest); |
| 80 if (requestEvent.hasListeners()) { | 84 if (requestEvent.hasListeners()) { |
| 81 var port = chromeHidden.Port.createPort(portId, channelName); | 85 var port = chromeHidden.Port.createPort(portId, channelName); |
| 82 port.onMessage.addListener(function(request) { | 86 port.onMessage.addListener(function(request) { |
| 83 requestEvent.dispatch(request, function(response) { | 87 requestEvent.dispatch(request, sender, function(response) { |
| 84 port.postMessage(response); | 88 port.postMessage(response); |
| 85 }); | 89 }); |
| 86 }); | 90 }); |
| 87 } | 91 } |
| 88 return; | 92 return; |
| 89 } | 93 } |
| 90 | 94 |
| 91 var connectEvent = (isExternal ? | 95 var connectEvent = (isExternal ? |
| 92 chrome.extension.onConnectExternal : chrome.extension.onConnect); | 96 chrome.extension.onConnectExternal : chrome.extension.onConnect); |
| 93 if (connectEvent.hasListeners()) { | 97 if (connectEvent.hasListeners()) { |
| 94 var port = chromeHidden.Port.createPort(portId, channelName); | 98 var port = chromeHidden.Port.createPort(portId, channelName); |
| 95 if (tab) { | 99 port.sender = sender; |
| 96 tab = JSON.parse(tab); | |
| 97 } | |
| 98 port.sender = {tab: tab, id: sourceExtensionId}; | |
| 99 // TODO(EXTENSIONS_DEPRECATED): port.tab is obsolete. | 100 // TODO(EXTENSIONS_DEPRECATED): port.tab is obsolete. |
| 100 port.tab = port.sender.tab; | 101 port.tab = port.sender.tab; |
| 101 | 102 |
| 102 connectEvent.dispatch(port); | 103 connectEvent.dispatch(port); |
| 103 } | 104 } |
| 104 }; | 105 }; |
| 105 | 106 |
| 106 // Called by native code when a channel has been closed. | 107 // Called by native code when a channel has been closed. |
| 107 chromeHidden.Port.dispatchOnDisconnect = function(portId) { | 108 chromeHidden.Port.dispatchOnDisconnect = function(portId) { |
| 108 var port = ports[portId]; | 109 var port = ports[portId]; |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 }); | 195 }); |
| 195 }; | 196 }; |
| 196 | 197 |
| 197 // Returns a resource URL that can be used to fetch a resource from this | 198 // Returns a resource URL that can be used to fetch a resource from this |
| 198 // extension. | 199 // extension. |
| 199 chrome.extension.getURL = function(path) { | 200 chrome.extension.getURL = function(path) { |
| 200 return "chrome-extension://" + extensionId + "/" + path; | 201 return "chrome-extension://" + extensionId + "/" + path; |
| 201 }; | 202 }; |
| 202 } | 203 } |
| 203 })(); | 204 })(); |
| OLD | NEW |