| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 define("mojo/public/js/bindings", [ | |
| 6 "mojo/public/js/router", | |
| 7 ], function(router) { | |
| 8 | |
| 9 var Router = router.Router; | |
| 10 | |
| 11 var kProxyProperties = Symbol("proxyProperties"); | |
| 12 var kStubProperties = Symbol("stubProperties"); | |
| 13 | |
| 14 // Public proxy class properties that are managed at runtime by the JS | |
| 15 // bindings. See ProxyBindings below. | |
| 16 function ProxyProperties(receiver) { | |
| 17 this.receiver = receiver; | |
| 18 } | |
| 19 | |
| 20 ProxyProperties.prototype.getLocalDelegate = function() { | |
| 21 return this.local && StubBindings(this.local).delegate; | |
| 22 } | |
| 23 | |
| 24 ProxyProperties.prototype.setLocalDelegate = function(impl) { | |
| 25 if (this.local) | |
| 26 StubBindings(this.local).delegate = impl; | |
| 27 else | |
| 28 throw new Error("no stub object"); | |
| 29 } | |
| 30 | |
| 31 // Public stub class properties that are managed at runtime by the JS | |
| 32 // bindings. See StubBindings below. | |
| 33 function StubProperties(delegate) { | |
| 34 this.delegate = delegate; | |
| 35 } | |
| 36 | |
| 37 // The base class for generated proxy classes. | |
| 38 function ProxyBase(receiver) { | |
| 39 this[kProxyProperties] = new ProxyProperties(receiver); | |
| 40 | |
| 41 // TODO(hansmuller): Temporary, for Chrome backwards compatibility. | |
| 42 if (receiver instanceof Router) | |
| 43 this.receiver_ = receiver; | |
| 44 } | |
| 45 | |
| 46 // The base class for generated stub classes. | |
| 47 function StubBase(delegate) { | |
| 48 this[kStubProperties] = new StubProperties(delegate); | |
| 49 } | |
| 50 | |
| 51 // Provides access to properties added to a proxy object without risking | |
| 52 // Mojo interface name collisions. Unless otherwise specified, the initial | |
| 53 // value of all properties is undefined. | |
| 54 // | |
| 55 // ProxyBindings(proxy).connection - The Connection object that links the | |
| 56 // proxy for a remote Mojo service to an optional local stub for a local | |
| 57 // service. The value of ProxyBindings(proxy).connection.remote == proxy. | |
| 58 // | |
| 59 // ProxyBindings(proxy).local - The "local" stub object whose delegate | |
| 60 // implements the proxy's Mojo client interface. | |
| 61 // | |
| 62 // ProxyBindings(proxy).setLocalDelegate(impl) - Sets the implementation | |
| 63 // delegate of the proxy's client stub object. This is just shorthand | |
| 64 // for |StubBindings(ProxyBindings(proxy).local).delegate = impl|. | |
| 65 // | |
| 66 // ProxyBindings(proxy).getLocalDelegate() - Returns the implementation | |
| 67 // delegate of the proxy's client stub object. This is just shorthand | |
| 68 // for |StubBindings(ProxyBindings(proxy).local).delegate|. | |
| 69 | |
| 70 function ProxyBindings(proxy) { | |
| 71 return (proxy instanceof ProxyBase) ? proxy[kProxyProperties] : proxy; | |
| 72 } | |
| 73 | |
| 74 // Provides access to properties added to a stub object without risking | |
| 75 // Mojo interface name collisions. Unless otherwise specified, the initial | |
| 76 // value of all properties is undefined. | |
| 77 // | |
| 78 // StubBindings(stub).delegate - The optional implementation delegate for | |
| 79 // the Mojo interface stub. | |
| 80 // | |
| 81 // StubBindings(stub).connection - The Connection object that links an | |
| 82 // optional proxy for a remote service to this stub. The value of | |
| 83 // StubBindings(stub).connection.local == stub. | |
| 84 // | |
| 85 // StubBindings(stub).remote - A proxy for the the stub's Mojo client | |
| 86 // service. | |
| 87 | |
| 88 function StubBindings(stub) { | |
| 89 return stub instanceof StubBase ? stub[kStubProperties] : stub; | |
| 90 } | |
| 91 | |
| 92 var exports = {}; | |
| 93 exports.EmptyProxy = ProxyBase; | |
| 94 exports.EmptyStub = StubBase; | |
| 95 exports.ProxyBase = ProxyBase; | |
| 96 exports.ProxyBindings = ProxyBindings; | |
| 97 exports.StubBase = StubBase; | |
| 98 exports.StubBindings = StubBindings; | |
| 99 return exports; | |
| 100 }); | |
| OLD | NEW |