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

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

Issue 2676443005: Add interface versioning. Methods queryVersion and requireVersion. (Closed)
Patch Set: Add interface_control_messages.mojom.js to build resources 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
Index: mojo/public/js/router.js
diff --git a/mojo/public/js/router.js b/mojo/public/js/router.js
index 9db122052196331adbad56f15bf60792d8c8e8ed..c823ed4875c636c84a909ab68d09e05ff43a89c2 100644
--- a/mojo/public/js/router.js
+++ b/mojo/public/js/router.js
@@ -8,13 +8,15 @@ define("mojo/public/js/router", [
"mojo/public/js/core",
"mojo/public/js/connector",
"mojo/public/js/validator",
-], function(console, codec, core, connector, validator) {
+ "mojo/public/js/lib/control_message_handler",
+], function(console, codec, core, connector, validator, controlMessageHandler) {
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.controlMsgHandler_ = new ControlMessageHandler(this,
yzshen1 2017/02/11 01:11:29 It is preferred to use full name: Msg -> Message.
wangjimmy 2017/02/13 20:43:07 Done.
+ interface_version);
yzshen1 2017/02/11 01:11:29 4 spaces. Please see: https://google.github.io/sty
wangjimmy 2017/02/13 20:43:07 Done.
+ }
+
this.connector_.setIncomingReceiver({
accept: this.handleIncomingMessage_.bind(this),
});
@@ -107,7 +114,10 @@ define("mojo/public/js/router", [
return;
if (message.expectsResponse()) {
- if (this.incomingReceiver_) {
+ if (this.controlMsgHandler_ &&
+ controlMessageHandler.isControlMessage(message)) {
yzshen1 2017/02/11 01:11:29 if the message is a control message but we don't h
wangjimmy 2017/02/13 20:43:07 Done.
+ this.controlMsgHandler_.acceptWithResponder(message, this);
+ } 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 +135,15 @@ define("mojo/public/js/router", [
console.log("Unexpected response with request ID: " + requestID);
}
} else {
- if (this.incomingReceiver_)
+ if (this.controlMsgHandler_ &&
+ controlMessageHandler.isControlMessage(message)) {
+ var ok = this.controlMsgHandler_.accept(message);
+ if (!ok) {
+ this.close();
+ }
+ } else if (this.incomingReceiver_) {
this.incomingReceiver_.accept(message);
+ }
}
};

Powered by Google App Engine
This is Rietveld 408576698