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

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

Issue 2844133003: Add associated binding set. Add associated_binding.html layout test. (Closed)
Patch Set: Make bindingType private and passed it into BindingSetEntry Created 3 years, 7 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
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", 6 "mojo/public/js/core",
7 "mojo/public/js/interface_types", 7 "mojo/public/js/interface_types",
8 "mojo/public/js/lib/interface_endpoint_client", 8 "mojo/public/js/lib/interface_endpoint_client",
9 "mojo/public/js/router", 9 "mojo/public/js/router",
10 ], function(core, types, interfaceEndpointClient, router) { 10 ], function(core, types, interfaceEndpointClient, router) {
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 this.close(); 252 this.close();
253 return result; 253 return result;
254 }; 254 };
255 255
256 Binding.prototype.waitForNextMessageForTesting = function() { 256 Binding.prototype.waitForNextMessageForTesting = function() {
257 this.router_.waitForNextMessageForTesting(); 257 this.router_.waitForNextMessageForTesting();
258 }; 258 };
259 259
260 // --------------------------------------------------------------------------- 260 // ---------------------------------------------------------------------------
261 261
262 function BindingSetEntry(bindingSet, interfaceType, impl, requestOrHandle, 262 function BindingSetEntry(bindingSet, interfaceType, bindingType, impl,
263 bindingId) { 263 requestOrHandle, bindingId) {
264 this.bindingSet_ = bindingSet; 264 this.bindingSet_ = bindingSet;
265 this.bindingId_ = bindingId; 265 this.bindingId_ = bindingId;
266 this.binding_ = new Binding(interfaceType, impl, requestOrHandle); 266 this.binding_ = new bindingType(interfaceType, impl,
267 requestOrHandle);
267 268
268 this.binding_.setConnectionErrorHandler(function() { 269 this.binding_.setConnectionErrorHandler(function(reason) {
269 this.bindingSet_.onConnectionError(bindingId); 270 this.bindingSet_.onConnectionError(bindingId, reason);
270 }.bind(this)); 271 }.bind(this));
271 } 272 }
272 273
273 BindingSetEntry.prototype.close = function() { 274 BindingSetEntry.prototype.close = function() {
274 this.binding_.close(); 275 this.binding_.close();
275 }; 276 };
276 277
277 function BindingSet(interfaceType) { 278 function BindingSet(interfaceType) {
278 this.interfaceType_ = interfaceType; 279 this.interfaceType_ = interfaceType;
279 this.nextBindingId_ = 0; 280 this.nextBindingId_ = 0;
280 this.bindings_ = new Map(); 281 this.bindings_ = new Map();
281 this.errorHandler_ = null; 282 this.errorHandler_ = null;
283 this.bindingType_ = Binding;
282 } 284 }
283 285
284 BindingSet.prototype.isEmpty = function() { 286 BindingSet.prototype.isEmpty = function() {
285 return this.bindings_.size == 0; 287 return this.bindings_.size == 0;
286 }; 288 };
287 289
288 BindingSet.prototype.addBinding = function(impl, requestOrHandle) { 290 BindingSet.prototype.addBinding = function(impl, requestOrHandle) {
289 this.bindings_.set( 291 this.bindings_.set(
290 this.nextBindingId_, 292 this.nextBindingId_,
291 new BindingSetEntry(this, this.interfaceType_, impl, requestOrHandle, 293 new BindingSetEntry(this, this.interfaceType_, this.bindingType_, impl,
292 this.nextBindingId_)); 294 requestOrHandle, this.nextBindingId_));
293 ++this.nextBindingId_; 295 ++this.nextBindingId_;
294 }; 296 };
295 297
296 BindingSet.prototype.closeAllBindings = function() { 298 BindingSet.prototype.closeAllBindings = function() {
297 for (var entry of this.bindings_.values()) 299 for (var entry of this.bindings_.values())
298 entry.close(); 300 entry.close();
299 this.bindings_.clear(); 301 this.bindings_.clear();
300 }; 302 };
301 303
302 BindingSet.prototype.setConnectionErrorHandler = function(callback) { 304 BindingSet.prototype.setConnectionErrorHandler = function(callback) {
303 this.errorHandler_ = callback; 305 this.errorHandler_ = callback;
304 }; 306 };
305 307
306 BindingSet.prototype.onConnectionError = function(bindingId) { 308 BindingSet.prototype.onConnectionError = function(bindingId, reason) {
307 this.bindings_.delete(bindingId); 309 this.bindings_.delete(bindingId);
308 310
309 if (this.errorHandler_) 311 if (this.errorHandler_)
310 this.errorHandler_(); 312 this.errorHandler_(reason);
311 }; 313 };
312 314
313 var exports = {}; 315 var exports = {};
314 exports.InterfacePtrInfo = types.InterfacePtrInfo; 316 exports.InterfacePtrInfo = types.InterfacePtrInfo;
315 exports.InterfaceRequest = types.InterfaceRequest; 317 exports.InterfaceRequest = types.InterfaceRequest;
316 exports.makeRequest = makeRequest; 318 exports.makeRequest = makeRequest;
317 exports.InterfacePtrController = InterfacePtrController; 319 exports.InterfacePtrController = InterfacePtrController;
318 exports.Binding = Binding; 320 exports.Binding = Binding;
319 exports.BindingSet = BindingSet; 321 exports.BindingSet = BindingSet;
320 322
321 return exports; 323 return exports;
322 }); 324 });
OLDNEW
« no previous file with comments | « mojo/public/js/associated_bindings.js ('k') | third_party/WebKit/LayoutTests/mojo/associated_binding.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698