Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1114)

Side by Side Diff: mojo/public/js/connection.js

Issue 814543006: Move //mojo/{public, edk} underneath //third_party (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/js/codec_unittests.js ('k') | mojo/public/js/connector.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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/connection", [
6 "mojo/public/js/bindings",
7 "mojo/public/js/connector",
8 "mojo/public/js/core",
9 "mojo/public/js/router",
10 ], function(bindings, connector, core, router) {
11
12 var Router = router.Router;
13 var EmptyProxy = bindings.EmptyProxy;
14 var EmptyStub = bindings.EmptyStub;
15 var ProxyBindings = bindings.ProxyBindings;
16 var StubBindings = bindings.StubBindings;
17 var TestConnector = connector.TestConnector;
18 var TestRouter = router.TestRouter;
19
20 // TODO(hansmuller): the proxy receiver_ property should be receiver$
21
22 function BaseConnection(localStub, remoteProxy, router) {
23 this.router_ = router;
24 this.local = localStub;
25 this.remote = remoteProxy;
26
27 this.router_.setIncomingReceiver(localStub);
28 if (this.remote)
29 this.remote.receiver_ = router;
30
31 // Validate incoming messages: remote responses and local requests.
32 var validateRequest = localStub && localStub.validator;
33 var validateResponse = remoteProxy && remoteProxy.validator;
34 var payloadValidators = [];
35 if (validateRequest)
36 payloadValidators.push(validateRequest);
37 if (validateResponse)
38 payloadValidators.push(validateResponse);
39 this.router_.setPayloadValidators(payloadValidators);
40 }
41
42 BaseConnection.prototype.close = function() {
43 this.router_.close();
44 this.router_ = null;
45 this.local = null;
46 this.remote = null;
47 };
48
49 BaseConnection.prototype.encounteredError = function() {
50 return this.router_.encounteredError();
51 };
52
53 function Connection(
54 handle, localFactory, remoteFactory, routerFactory, connectorFactory) {
55 var routerClass = routerFactory || Router;
56 var router = new routerClass(handle, connectorFactory);
57 var remoteProxy = remoteFactory && new remoteFactory(router);
58 var localStub = localFactory && new localFactory(remoteProxy);
59 BaseConnection.call(this, localStub, remoteProxy, router);
60 }
61
62 Connection.prototype = Object.create(BaseConnection.prototype);
63
64 // The TestConnection subclass is only intended to be used in unit tests.
65 function TestConnection(handle, localFactory, remoteFactory) {
66 Connection.call(this,
67 handle,
68 localFactory,
69 remoteFactory,
70 TestRouter,
71 TestConnector);
72 }
73
74 TestConnection.prototype = Object.create(Connection.prototype);
75
76 function createOpenConnection(
77 messagePipeHandle, client, localInterface, remoteInterface) {
78 var stubClass = (localInterface && localInterface.stubClass) || EmptyStub;
79 var proxyClass =
80 (remoteInterface && remoteInterface.proxyClass) || EmptyProxy;
81 var proxy = new proxyClass;
82 var stub = new stubClass;
83 var router = new Router(messagePipeHandle);
84 var connection = new BaseConnection(stub, proxy, router);
85
86 ProxyBindings(proxy).connection = connection;
87 ProxyBindings(proxy).local = connection.local;
88 StubBindings(stub).connection = connection;
89 StubBindings(proxy).remote = connection.remote;
90
91 var clientImpl = client instanceof Function ? client(proxy) : client;
92 if (clientImpl)
93 StubBindings(stub).delegate = clientImpl;
94
95 return connection;
96 }
97
98 // Return a message pipe handle.
99 function bindProxyClient(clientImpl, localInterface, remoteInterface) {
100 var messagePipe = core.createMessagePipe();
101 if (messagePipe.result != core.RESULT_OK)
102 throw new Error("createMessagePipe failed " + messagePipe.result);
103
104 createOpenConnection(
105 messagePipe.handle0, clientImpl, localInterface, remoteInterface);
106 return messagePipe.handle1;
107 }
108
109 // Return a proxy.
110 function bindProxyHandle(proxyHandle, localInterface, remoteInterface) {
111 if (!core.isHandle(proxyHandle))
112 throw new Error("Not a handle " + proxyHandle);
113
114 var connection = createOpenConnection(
115 proxyHandle, undefined, localInterface, remoteInterface);
116 return connection.remote;
117 }
118
119 var exports = {};
120 exports.Connection = Connection;
121 exports.TestConnection = TestConnection;
122 exports.bindProxyHandle = bindProxyHandle;
123 exports.bindProxyClient = bindProxyClient;
124 return exports;
125 });
OLDNEW
« no previous file with comments | « mojo/public/js/codec_unittests.js ('k') | mojo/public/js/connector.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698