| Index: mojo/public/js/bindings/router.js
|
| diff --git a/mojo/public/js/bindings/router.js b/mojo/public/js/bindings/router.js
|
| index efb5eb0e6ab211abce254e213d1cdc8599e347ae..36823921ae84a8669fce511bc46a3108a81ced34 100644
|
| --- a/mojo/public/js/bindings/router.js
|
| +++ b/mojo/public/js/bindings/router.js
|
| @@ -8,8 +8,10 @@ define("mojo/public/js/bindings/router", [
|
| "mojo/public/js/bindings/validator",
|
| ], function(codec, connector, validator) {
|
|
|
| - function Router(handle) {
|
| - this.connector_ = new connector.Connector(handle);
|
| + function Router(handle, connectorFactory) {
|
| + if (connectorFactory === undefined)
|
| + connectorFactory = connector.Connector;
|
| + this.connector_ = new connectorFactory(handle);
|
| this.incomingReceiver_ = null;
|
| this.nextRequestID_ = 0;
|
| this.responders_ = {};
|
| @@ -71,9 +73,14 @@ define("mojo/public/js/bindings/router", [
|
| var err = messageValidator.validateMessageHeader();
|
| for (var i = 0; err === noError && i < this.payloadValidators_.length; ++i)
|
| err = this.payloadValidators_[i](messageValidator);
|
| - if (err !== noError)
|
| - this.close();
|
|
|
| + if (err == noError)
|
| + this.handleValidIncomingMessage_(message);
|
| + else
|
| + this.handleInvalidIncomingMessage_(message, err);
|
| + };
|
| +
|
| + Router.prototype.handleValidIncomingMessage_ = function(message) {
|
| if (message.expectsResponse()) {
|
| if (this.incomingReceiver_) {
|
| this.incomingReceiver_.acceptWithResponder(message, this);
|
| @@ -92,7 +99,11 @@ define("mojo/public/js/bindings/router", [
|
| if (this.incomingReceiver_)
|
| this.incomingReceiver_.accept(message);
|
| }
|
| - };
|
| + }
|
| +
|
| + Router.prototype.handleInvalidIncomingMessage_ = function(message, error) {
|
| + this.close();
|
| + }
|
|
|
| Router.prototype.handleConnectionError_ = function(result) {
|
| for (var each in this.responders_)
|
| @@ -100,7 +111,25 @@ define("mojo/public/js/bindings/router", [
|
| this.close();
|
| };
|
|
|
| + // The TestRouter subclass is only intended to be used in unit tests.
|
| + // It defeats valid message handling and delgates invalid message handling.
|
| +
|
| + function TestRouter(handle, connectorFactory) {
|
| + Router.call(this, handle, connectorFactory);
|
| + }
|
| +
|
| + TestRouter.prototype = Object.create(Router.prototype);
|
| +
|
| + TestRouter.prototype.handleValidIncomingMessage_ = function() {
|
| + };
|
| +
|
| + TestRouter.prototype.handleInvalidIncomingMessage_ =
|
| + function(message, error) {
|
| + this.validationErrorHandler(error);
|
| + };
|
| +
|
| var exports = {};
|
| exports.Router = Router;
|
| + exports.TestRouter = TestRouter;
|
| return exports;
|
| });
|
|
|