| OLD | NEW |
| (Empty) |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 define("mojo/public/js/lib/pipe_control_message_handler", [ | |
| 6 "mojo/public/interfaces/bindings/pipe_control_messages.mojom", | |
| 7 "mojo/public/js/codec", | |
| 8 "mojo/public/js/interface_types", | |
| 9 "mojo/public/js/validator", | |
| 10 ], function(pipeControlMessages, codec, types, validator) { | |
| 11 | |
| 12 var Validator = validator.Validator; | |
| 13 | |
| 14 function validateControlRequestWithoutResponse(message) { | |
| 15 var messageValidator = new Validator(message); | |
| 16 var error = messageValidator.validateMessageIsRequestWithoutResponse(); | |
| 17 if (error != validator.validationError.NONE) { | |
| 18 throw error; | |
| 19 } | |
| 20 | |
| 21 if (message.getName() != pipeControlMessages.kRunOrClosePipeMessageId) { | |
| 22 throw new Error("Control message name is not kRunOrClosePipeMessageId"); | |
| 23 } | |
| 24 | |
| 25 // Validate payload. | |
| 26 error = pipeControlMessages.RunOrClosePipeMessageParams.validate( | |
| 27 messageValidator, message.getHeaderNumBytes()); | |
| 28 if (error != validator.validationError.NONE) { | |
| 29 throw error; | |
| 30 } | |
| 31 } | |
| 32 | |
| 33 function runOrClosePipe(message, delegate) { | |
| 34 var reader = new codec.MessageReader(message); | |
| 35 var runOrClosePipeMessageParams = reader.decodeStruct( | |
| 36 pipeControlMessages.RunOrClosePipeMessageParams); | |
| 37 var event = runOrClosePipeMessageParams.input | |
| 38 .peer_associated_endpoint_closed_event; | |
| 39 return delegate.onPeerAssociatedEndpointClosed(event.id, | |
| 40 event.disconnect_reason); | |
| 41 } | |
| 42 | |
| 43 function isPipeControlMessage(message) { | |
| 44 return !types.isValidInterfaceId(message.getInterfaceId()); | |
| 45 } | |
| 46 | |
| 47 function PipeControlMessageHandler(delegate) { | |
| 48 this.delegate_ = delegate; | |
| 49 } | |
| 50 | |
| 51 PipeControlMessageHandler.prototype.accept = function(message) { | |
| 52 validateControlRequestWithoutResponse(message); | |
| 53 return runOrClosePipe(message, this.delegate_); | |
| 54 }; | |
| 55 | |
| 56 var exports = {}; | |
| 57 exports.PipeControlMessageHandler = PipeControlMessageHandler; | |
| 58 exports.isPipeControlMessage = isPipeControlMessage; | |
| 59 | |
| 60 return exports; | |
| 61 }); | |
| OLD | NEW |