| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 // chrome.runtime.messaging API implementation. | 5 // chrome.runtime.messaging API implementation. |
| 6 | 6 |
| 7 // TODO(kalman): factor requiring chrome out of here. | 7 // TODO(kalman): factor requiring chrome out of here. |
| 8 var chrome = requireNative('chrome').GetChrome(); | 8 var chrome = requireNative('chrome').GetChrome(); |
| 9 var Event = require('event_bindings').Event; | 9 var Event = require('event_bindings').Event; |
| 10 var lastError = require('lastError'); | 10 var lastError = require('lastError'); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 PortImpl.prototype.disconnect = function() { | 69 PortImpl.prototype.disconnect = function() { |
| 70 messagingNatives.CloseChannel(this.portId_, true); | 70 messagingNatives.CloseChannel(this.portId_, true); |
| 71 this.destroy_(); | 71 this.destroy_(); |
| 72 }; | 72 }; |
| 73 | 73 |
| 74 PortImpl.prototype.destroy_ = function() { | 74 PortImpl.prototype.destroy_ = function() { |
| 75 if (this.onDestroy_) | 75 if (this.onDestroy_) |
| 76 this.onDestroy_(); | 76 this.onDestroy_(); |
| 77 privates(this.onDisconnect).impl.destroy_(); | 77 privates(this.onDisconnect).impl.destroy_(); |
| 78 privates(this.onMessage).impl.destroy_(); | 78 privates(this.onMessage).impl.destroy_(); |
| 79 // TODO(robwu): Remove port lifetime management because it is completely |
| 80 // handled in the browser. The renderer's only roles are |
| 81 // 1) rejecting ports so that the browser knows that the renderer is not |
| 82 // interested in the port (this is merely an optimization) |
| 83 // 2) acknowledging port creations, so that the browser knows that the port |
| 84 // was successfully created (from the perspective of the extension), but |
| 85 // then closed for some non-fatal reason. |
| 86 // 3) notifying the browser of explicit port closure via .disconnect(). |
| 87 // In other cases (navigations), the browser automatically cleans up the |
| 88 // port. |
| 79 messagingNatives.PortRelease(this.portId_); | 89 messagingNatives.PortRelease(this.portId_); |
| 80 delete ports[this.portId_]; | 90 delete ports[this.portId_]; |
| 81 }; | 91 }; |
| 82 | 92 |
| 83 // Returns true if the specified port id is in this context. This is used by | 93 // Returns true if the specified port id is in this context. This is used by |
| 84 // the C++ to avoid creating the javascript message for all the contexts that | 94 // the C++ to avoid creating the javascript message for all the contexts that |
| 85 // don't care about a particular message. | 95 // don't care about a particular message. |
| 86 function hasPort(portId) { | 96 function hasPort(portId) { |
| 87 return portId in ports; | 97 return portId in ports; |
| 88 }; | 98 }; |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 exports.$set('Port', Port); | 393 exports.$set('Port', Port); |
| 384 exports.$set('createPort', createPort); | 394 exports.$set('createPort', createPort); |
| 385 exports.$set('sendMessageImpl', sendMessageImpl); | 395 exports.$set('sendMessageImpl', sendMessageImpl); |
| 386 exports.$set('sendMessageUpdateArguments', sendMessageUpdateArguments); | 396 exports.$set('sendMessageUpdateArguments', sendMessageUpdateArguments); |
| 387 | 397 |
| 388 // For C++ code to call. | 398 // For C++ code to call. |
| 389 exports.$set('hasPort', hasPort); | 399 exports.$set('hasPort', hasPort); |
| 390 exports.$set('dispatchOnConnect', dispatchOnConnect); | 400 exports.$set('dispatchOnConnect', dispatchOnConnect); |
| 391 exports.$set('dispatchOnDisconnect', dispatchOnDisconnect); | 401 exports.$set('dispatchOnDisconnect', dispatchOnDisconnect); |
| 392 exports.$set('dispatchOnMessage', dispatchOnMessage); | 402 exports.$set('dispatchOnMessage', dispatchOnMessage); |
| OLD | NEW |