OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 (function() { | 5 define("mojo/public/js/lib/control_message_proxy", [ |
6 var internal = mojoBindings.internal; | 6 "mojo/public/interfaces/bindings/interface_control_messages.mojom", |
| 7 "mojo/public/js/codec", |
| 8 "mojo/public/js/validator", |
| 9 ], function(controlMessages, codec, validator) { |
| 10 |
| 11 var Validator = validator.Validator; |
7 | 12 |
8 function sendRunOrClosePipeMessage(receiver, runOrClosePipeMessageParams) { | 13 function sendRunOrClosePipeMessage(receiver, runOrClosePipeMessageParams) { |
9 var messageName = mojo.interface_control2.kRunOrClosePipeMessageId; | 14 var messageName = controlMessages.kRunOrClosePipeMessageId; |
10 var payloadSize = | 15 var payloadSize = controlMessages.RunOrClosePipeMessageParams.encodedSize; |
11 mojo.interface_control2.RunOrClosePipeMessageParams.encodedSize; | 16 var builder = new codec.MessageBuilder(messageName, payloadSize); |
12 var builder = new internal.MessageBuilder(messageName, payloadSize); | 17 builder.encodeStruct(controlMessages.RunOrClosePipeMessageParams, |
13 builder.encodeStruct(mojo.interface_control2.RunOrClosePipeMessageParams, | |
14 runOrClosePipeMessageParams); | 18 runOrClosePipeMessageParams); |
15 var message = builder.finish(); | 19 var message = builder.finish(); |
16 receiver.accept(message); | 20 receiver.accept(message); |
17 } | 21 } |
18 | 22 |
19 function validateControlResponse(message) { | 23 function validateControlResponse(message) { |
20 var messageValidator = new internal.Validator(message); | 24 var messageValidator = new Validator(message); |
21 var error = messageValidator.validateMessageIsResponse(); | 25 var error = messageValidator.validateMessageIsResponse(); |
22 if (error != internal.validationError.NONE) { | 26 if (error != validator.validationError.NONE) { |
23 throw error; | 27 throw error; |
24 } | 28 } |
25 | 29 |
26 if (message.getName() != mojo.interface_control2.kRunMessageId) { | 30 if (message.getName() != controlMessages.kRunMessageId) { |
27 throw new Error("Control message name is not kRunMessageId"); | 31 throw new Error("Control message name is not kRunMessageId"); |
28 } | 32 } |
29 | 33 |
30 // Validate payload. | 34 // Validate payload. |
31 error = mojo.interface_control2.RunResponseMessageParams.validate( | 35 error = controlMessages.RunResponseMessageParams.validate( |
32 messageValidator, message.getHeaderNumBytes()); | 36 messageValidator, message.getHeaderNumBytes()); |
33 if (error != internal.validationError.NONE) { | 37 if (error != validator.validationError.NONE) { |
34 throw error; | 38 throw error; |
35 } | 39 } |
36 } | 40 } |
37 | 41 |
38 function acceptRunResponse(message) { | 42 function acceptRunResponse(message) { |
39 validateControlResponse(message); | 43 validateControlResponse(message); |
40 | 44 |
41 var reader = new internal.MessageReader(message); | 45 var reader = new codec.MessageReader(message); |
42 var runResponseMessageParams = reader.decodeStruct( | 46 var runResponseMessageParams = reader.decodeStruct( |
43 mojo.interface_control2.RunResponseMessageParams); | 47 controlMessages.RunResponseMessageParams); |
44 | 48 |
45 return Promise.resolve(runResponseMessageParams); | 49 return Promise.resolve(runResponseMessageParams); |
46 } | 50 } |
47 | 51 |
48 /** | 52 /** |
49 * Sends the given run message through the receiver. | 53 * Sends the given run message through the receiver. |
50 * Accepts the response message from the receiver and decodes the message | 54 * Accepts the response message from the receiver and decodes the message |
51 * struct to RunResponseMessageParams. | 55 * struct to RunResponseMessageParams. |
52 * | 56 * |
53 * @param {Router} receiver. | 57 * @param {Router} receiver. |
54 * @param {RunMessageParams} runMessageParams to be sent via a message. | 58 * @param {RunMessageParams} runMessageParams to be sent via a message. |
55 * @return {Promise} that resolves to a RunResponseMessageParams. | 59 * @return {Promise} that resolves to a RunResponseMessageParams. |
56 */ | 60 */ |
57 function sendRunMessage(receiver, runMessageParams) { | 61 function sendRunMessage(receiver, runMessageParams) { |
58 var messageName = mojo.interface_control2.kRunMessageId; | 62 var messageName = controlMessages.kRunMessageId; |
59 var payloadSize = mojo.interface_control2.RunMessageParams.encodedSize; | 63 var payloadSize = controlMessages.RunMessageParams.encodedSize; |
60 // |requestID| is set to 0, but is later properly set by Router. | 64 // |requestID| is set to 0, but is later properly set by Router. |
61 var builder = new internal.MessageWithRequestIDBuilder(messageName, | 65 var builder = new codec.MessageWithRequestIDBuilder(messageName, |
62 payloadSize, internal.kMessageExpectsResponse, 0); | 66 payloadSize, codec.kMessageExpectsResponse, 0); |
63 builder.encodeStruct(mojo.interface_control2.RunMessageParams, | 67 builder.encodeStruct(controlMessages.RunMessageParams, runMessageParams); |
64 runMessageParams); | |
65 var message = builder.finish(); | 68 var message = builder.finish(); |
66 | 69 |
67 return receiver.acceptAndExpectResponse(message).then(acceptRunResponse); | 70 return receiver.acceptAndExpectResponse(message).then(acceptRunResponse); |
68 } | 71 } |
69 | 72 |
70 function ControlMessageProxy(receiver) { | 73 function ControlMessageProxy(receiver) { |
71 this.receiver = receiver; | 74 this.receiver = receiver; |
72 } | 75 } |
73 | 76 |
74 ControlMessageProxy.prototype.queryVersion = function() { | 77 ControlMessageProxy.prototype.queryVersion = function() { |
75 var runMessageParams = new mojo.interface_control2.RunMessageParams(); | 78 var runMessageParams = new controlMessages.RunMessageParams(); |
76 runMessageParams.input = new mojo.interface_control2.RunInput(); | 79 runMessageParams.input = new controlMessages.RunInput(); |
77 runMessageParams.input.query_version = | 80 runMessageParams.input.query_version = new controlMessages.QueryVersion(); |
78 new mojo.interface_control2.QueryVersion(); | |
79 | 81 |
80 return sendRunMessage(this.receiver, runMessageParams).then(function( | 82 return sendRunMessage(this.receiver, runMessageParams).then(function( |
81 runResponseMessageParams) { | 83 runResponseMessageParams) { |
82 return runResponseMessageParams.output.query_version_result.version; | 84 return runResponseMessageParams.output.query_version_result.version; |
83 }); | 85 }); |
84 }; | 86 }; |
85 | 87 |
86 ControlMessageProxy.prototype.requireVersion = function(version) { | 88 ControlMessageProxy.prototype.requireVersion = function(version) { |
87 var runOrClosePipeMessageParams = new | 89 var runOrClosePipeMessageParams = new |
88 mojo.interface_control2.RunOrClosePipeMessageParams(); | 90 controlMessages.RunOrClosePipeMessageParams(); |
89 runOrClosePipeMessageParams.input = new | 91 runOrClosePipeMessageParams.input = new |
90 mojo.interface_control2.RunOrClosePipeInput(); | 92 controlMessages.RunOrClosePipeInput(); |
91 runOrClosePipeMessageParams.input.require_version = new | 93 runOrClosePipeMessageParams.input.require_version = new |
92 mojo.interface_control2.RequireVersion({'version': version}); | 94 controlMessages.RequireVersion({'version': version}); |
93 sendRunOrClosePipeMessage(this.receiver, runOrClosePipeMessageParams); | 95 sendRunOrClosePipeMessage(this.receiver, runOrClosePipeMessageParams); |
94 }; | 96 }; |
95 | 97 |
96 internal.ControlMessageProxy = ControlMessageProxy; | 98 var exports = {}; |
97 })(); | 99 exports.ControlMessageProxy = ControlMessageProxy; |
| 100 |
| 101 return exports; |
| 102 }); |
OLD | NEW |