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

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

Issue 2676443005: Add interface versioning. Methods queryVersion and requireVersion. (Closed)
Patch Set: Expect the result inside the error handler for test. Code formatting and address codereview comment… Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/public/js/lib/control_message_proxy.js ('k') | mojo/public/js/tests/interface_ptr_unittest.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/router.js b/mojo/public/js/router.js
index 9db122052196331adbad56f15bf60792d8c8e8ed..e94c5eb50f1ef281580a3d468373ff2abbdedd35 100644
--- a/mojo/public/js/router.js
+++ b/mojo/public/js/router.js
@@ -7,14 +7,16 @@ define("mojo/public/js/router", [
"mojo/public/js/codec",
"mojo/public/js/core",
"mojo/public/js/connector",
+ "mojo/public/js/lib/control_message_handler",
"mojo/public/js/validator",
-], function(console, codec, core, connector, validator) {
+], function(console, codec, core, connector, controlMessageHandler, validator) {
var Connector = connector.Connector;
var MessageReader = codec.MessageReader;
var Validator = validator.Validator;
+ var ControlMessageHandler = controlMessageHandler.ControlMessageHandler;
- function Router(handle, connectorFactory) {
+ function Router(handle, interface_version, connectorFactory) {
if (!core.isHandle(handle))
throw new Error("Router constructor: Not a handle");
if (connectorFactory === undefined)
@@ -27,6 +29,11 @@ define("mojo/public/js/router", [
this.payloadValidators_ = [];
this.testingController_ = null;
+ if (interface_version !== undefined) {
+ this.controlMessageHandler_ = new
+ ControlMessageHandler(interface_version);
+ }
+
this.connector_.setIncomingReceiver({
accept: this.handleIncomingMessage_.bind(this),
});
@@ -107,7 +114,13 @@ define("mojo/public/js/router", [
return;
if (message.expectsResponse()) {
- if (this.incomingReceiver_) {
+ if (controlMessageHandler.isControlMessage(message)) {
+ if (this.controlMessageHandler_) {
+ this.controlMessageHandler_.acceptWithResponder(message, this);
+ } else {
+ this.close();
+ }
+ } else if (this.incomingReceiver_) {
this.incomingReceiver_.acceptWithResponder(message, this);
} else {
// If we receive a request expecting a response when the client is not
@@ -125,8 +138,15 @@ define("mojo/public/js/router", [
console.log("Unexpected response with request ID: " + requestID);
}
} else {
- if (this.incomingReceiver_)
+ if (controlMessageHandler.isControlMessage(message)) {
+ if (this.controlMessageHandler_) {
+ var ok = this.controlMessageHandler_.accept(message);
+ if (ok) return;
+ }
+ this.close();
+ } else if (this.incomingReceiver_) {
this.incomingReceiver_.accept(message);
+ }
}
};
« no previous file with comments | « mojo/public/js/lib/control_message_proxy.js ('k') | mojo/public/js/tests/interface_ptr_unittest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698