Chromium Code Reviews| 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); |
| + } |
| } |
| }; |