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