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

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

Issue 2405093003: [WIP] Mojo native bindings interface.
Patch Set: fixes webui tests Created 3 years, 9 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 | « extensions/test/data/api_test_base_unittest.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
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 define("mojo/public/js/bindings", [ 5 define("mojo/public/js/bindings", [
6 "mojo/public/js/core",
7 "mojo/public/js/lib/control_message_proxy", 6 "mojo/public/js/lib/control_message_proxy",
8 "mojo/public/js/interface_types", 7 "mojo/public/js/interface_types",
9 "mojo/public/js/router", 8 "mojo/public/js/router",
10 ], function(core, controlMessageProxy, types, router) { 9 ], function(controlMessageProxy, types, router) {
11 10
12 // --------------------------------------------------------------------------- 11 // ---------------------------------------------------------------------------
13 12
14 function makeRequest(interfacePtr) { 13 function makeRequest(interfacePtr) {
15 var pipe = core.createMessagePipe(); 14 var pipe = Mojo.createMessagePipe();
16 interfacePtr.ptr.bind(new types.InterfacePtrInfo(pipe.handle0, 0)); 15 interfacePtr.ptr.bind(new types.InterfacePtrInfo(pipe.handle0, 0));
17 return new types.InterfaceRequest(pipe.handle1); 16 return new types.InterfaceRequest(pipe.handle1);
18 } 17 }
19 18
20 // --------------------------------------------------------------------------- 19 // ---------------------------------------------------------------------------
21 20
22 // Operations used to setup/configure an interface pointer. Exposed as the 21 // Operations used to setup/configure an interface pointer. Exposed as the
23 // |ptr| field of generated interface pointer classes. 22 // |ptr| field of generated interface pointer classes.
24 // |ptrInfoOrHandle| could be omitted and passed into bind() later. 23 // |ptrInfoOrHandle| could be omitted and passed into bind() later.
25 function InterfacePtrController(interfaceType, ptrInfoOrHandle) { 24 function InterfacePtrController(interfaceType, ptrInfoOrHandle) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 // immediately. 56 // immediately.
58 InterfacePtrController.prototype.reset = function() { 57 InterfacePtrController.prototype.reset = function() {
59 this.version = 0; 58 this.version = 0;
60 if (this.router_) { 59 if (this.router_) {
61 this.router_.close(); 60 this.router_.close();
62 this.router_ = null; 61 this.router_ = null;
63 62
64 this.proxy_ = null; 63 this.proxy_ = null;
65 } 64 }
66 if (this.handle_) { 65 if (this.handle_) {
67 core.close(this.handle_); 66 this.handle_.close();
68 this.handle_ = null; 67 this.handle_ = null;
69 } 68 }
70 }; 69 };
71 70
72 InterfacePtrController.prototype.setConnectionErrorHandler 71 InterfacePtrController.prototype.setConnectionErrorHandler
73 = function(callback) { 72 = function(callback) {
74 if (!this.isBound()) 73 if (!this.isBound())
75 throw new Error("Cannot set connection error handler if not bound."); 74 throw new Error("Cannot set connection error handler if not bound.");
76 75
77 this.configureProxyIfNecessary_(); 76 this.configureProxyIfNecessary_();
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 // TODO(yzshen): Set the version of the interface pointer. 173 // TODO(yzshen): Set the version of the interface pointer.
175 this.bind(makeRequest(ptr)); 174 this.bind(makeRequest(ptr));
176 return ptr; 175 return ptr;
177 } 176 }
178 177
179 Binding.prototype.bind = function(requestOrHandle) { 178 Binding.prototype.bind = function(requestOrHandle) {
180 this.close(); 179 this.close();
181 180
182 var handle = requestOrHandle instanceof types.InterfaceRequest ? 181 var handle = requestOrHandle instanceof types.InterfaceRequest ?
183 requestOrHandle.handle : requestOrHandle; 182 requestOrHandle.handle : requestOrHandle;
184 if (!core.isHandle(handle)) 183 if (!(handle instanceof MojoHandle))
185 return; 184 return;
186 185
187 this.stub_ = new this.interfaceType_.stubClass(this.impl_); 186 this.stub_ = new this.interfaceType_.stubClass(this.impl_);
188 this.router_ = new router.Router(handle, this.interfaceType_.kVersion); 187 this.router_ = new router.Router(handle, this.interfaceType_.kVersion);
189 this.router_.setIncomingReceiver(this.stub_); 188 this.router_.setIncomingReceiver(this.stub_);
190 this.router_ .setPayloadValidators([this.interfaceType_.validateRequest]); 189 this.router_ .setPayloadValidators([this.interfaceType_.validateRequest]);
191 }; 190 };
192 191
193 Binding.prototype.close = function() { 192 Binding.prototype.close = function() {
194 if (!this.isBound()) 193 if (!this.isBound())
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 var exports = {}; 275 var exports = {};
277 exports.InterfacePtrInfo = types.InterfacePtrInfo; 276 exports.InterfacePtrInfo = types.InterfacePtrInfo;
278 exports.InterfaceRequest = types.InterfaceRequest; 277 exports.InterfaceRequest = types.InterfaceRequest;
279 exports.makeRequest = makeRequest; 278 exports.makeRequest = makeRequest;
280 exports.InterfacePtrController = InterfacePtrController; 279 exports.InterfacePtrController = InterfacePtrController;
281 exports.Binding = Binding; 280 exports.Binding = Binding;
282 exports.BindingSet = BindingSet; 281 exports.BindingSet = BindingSet;
283 282
284 return exports; 283 return exports;
285 }); 284 });
OLDNEW
« no previous file with comments | « extensions/test/data/api_test_base_unittest.js ('k') | mojo/public/js/connector.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698