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

Unified Diff: mojo/public/js/router.js

Issue 703273002: Update mojo sdk to rev 04a510fb37db10642e156957f9b2c11c2f6442ac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix content/child -> mojo/common linking Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/js/core_unittests.js ('k') | mojo/public/js/struct_unittests.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/js/router.js
diff --git a/mojo/public/js/bindings/router.js b/mojo/public/js/router.js
similarity index 82%
rename from mojo/public/js/bindings/router.js
rename to mojo/public/js/router.js
index 36823921ae84a8669fce511bc46a3108a81ced34..1d9793bffdbe9fbf146141ca2e47b1eb1a71fb24 100644
--- a/mojo/public/js/bindings/router.js
+++ b/mojo/public/js/router.js
@@ -2,10 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-define("mojo/public/js/bindings/router", [
- "mojo/public/js/bindings/codec",
- "mojo/public/js/bindings/connector",
- "mojo/public/js/bindings/validator",
+define("mojo/public/js/router", [
+ "mojo/public/js/codec",
+ "mojo/public/js/connector",
+ "mojo/public/js/validator",
], function(codec, connector, validator) {
function Router(handle, connectorFactory) {
@@ -14,7 +14,7 @@ define("mojo/public/js/bindings/router", [
this.connector_ = new connectorFactory(handle);
this.incomingReceiver_ = null;
this.nextRequestID_ = 0;
- this.responders_ = {};
+ this.completers_ = new Map();
this.payloadValidators_ = [];
this.connector_.setIncomingReceiver({
@@ -26,7 +26,7 @@ define("mojo/public/js/bindings/router", [
}
Router.prototype.close = function() {
- this.responders_ = {}; // Drop any responders.
+ this.completers_.clear(); // Drop any responders.
this.connector_.close();
};
@@ -38,7 +38,7 @@ define("mojo/public/js/bindings/router", [
// TODO(mpcomplete): no way to trasmit errors over a Connection.
};
- Router.prototype.acceptWithResponder = function(message, responder) {
+ Router.prototype.acceptAndExpectResponse = function(message) {
// Reserve 0 in case we want it to convey special meaning in the future.
var requestID = this.nextRequestID_++;
if (requestID == 0)
@@ -46,13 +46,15 @@ define("mojo/public/js/bindings/router", [
message.setRequestID(requestID);
var result = this.connector_.accept(message);
-
- this.responders_[requestID] = responder;
-
- // TODO(mpcomplete): accept should return a Promise too, maybe?
- if (result)
- return Promise.resolve();
- return Promise.reject(Error("Connection error"));
+ if (!result)
+ return Promise.reject(Error("Connection error"));
+
+ var completer = {};
+ this.completers_.set(requestID, completer);
+ return new Promise(function(resolve, reject) {
+ completer.resolve = resolve;
+ completer.reject = reject;
+ });
};
Router.prototype.setIncomingReceiver = function(receiver) {
@@ -92,9 +94,9 @@ define("mojo/public/js/bindings/router", [
} else if (message.isResponse()) {
var reader = new codec.MessageReader(message);
var requestID = reader.requestID;
- var responder = this.responders_[requestID];
- delete this.responders_[requestID];
- responder.accept(message);
+ var completer = this.completers_.get(requestID);
+ this.completers_.delete(requestID);
+ completer.resolve(message);
} else {
if (this.incomingReceiver_)
this.incomingReceiver_.accept(message);
@@ -106,8 +108,9 @@ define("mojo/public/js/bindings/router", [
}
Router.prototype.handleConnectionError_ = function(result) {
- for (var each in this.responders_)
- this.responders_[each].reject(result);
+ this.completers_.forEach(function(value) {
+ value.reject(result);
+ });
this.close();
};
« no previous file with comments | « mojo/public/js/core_unittests.js ('k') | mojo/public/js/struct_unittests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698