Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(459)

Side by Side Diff: mojo/public/js/lib/control_message_proxy.js

Issue 2676443005: Add interface versioning. Methods queryVersion and requireVersion. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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/control_message_proxy", [
6 "mojo/public/interfaces/bindings/interface_control_messages.mojom",
7 "mojo/public/js/validator",
8 "mojo/public/js/codec",
9 ], function(interfaceCtrlMsgs, validator, codec) {
10
11 function sendRunOrClosePipeMessage(receiver, runOrClosePipeMsgParams) {
12 var messageName = interfaceCtrlMsgs.kRunOrClosePipeMessageId;
13 var payloadSize = interfaceCtrlMsgs.RunOrClosePipeMessageParams
14 .encodedSize;
15 var builder = new codec.MessageBuilder(messageName, payloadSize);
16 builder.encodeStruct(interfaceCtrlMsgs.RunOrClosePipeMessageParams,
17 runOrClosePipeMsgParams);
18 var message = builder.finish();
19 receiver.accept(message);
20 }
21
22 function validateControlResponse(message){
23 var error = validator.validateMessageIsResponse(message);
24 if (error != validator.validationError.None) {
25 throw error;
26 }
27
28 if (!message.getName() &&
29 message.getName() != interfaceCtrlMsgs.kRunMessageId) {
30 throw new Error(`Control message name is not
31 interfaceCtrlMsgs.kRunMessageId`);
32 }
33 }
34
35 function runResponseForwardAccept(message) {
36 validateControlResponse(message);
37
38 var reader = new codec.MessageReader(message);
39 var runResponseMessageParams = reader.decodeStruct(
40 interfaceCtrlMsgs.RunResponseMessageParams);
41
42 return Promise.resolve(runResponseMessageParams);
43 }
44
45 /**
46 * Sends the given run message through the receiver.
47 * @param {Router} receiver.
48 * @param {RunMessageParams} runMessageParams.
49 * @return {Promise}
50 */
51 function sendRunMessage(receiver, runMessageParams) {
52 var messageName = interfaceCtrlMsgs.kRunMessageId;
53 var payloadSize = interfaceCtrlMsgs.RunMessageParams.encodedSize;
54 var builder = new codec.MessageBuilder(messageName, payloadSize);
55 builder.encodeStruct(interfaceCtrlMsgs.RunMessageParams,
56 runMessageParams);
57 var message = builder.finish();
58
59 return receiver.acceptAndExpectResponse(message).then(
wangjimmy 2017/02/04 01:32:42 Router.js 's acceptAndExpectResponse never resolve
60 runResponseForwardAccept);
61 }
62
63 function runVersion(runResponseMessageParams) {
64 if (runResponseMessageParams.output &&
65 runResponseMessageParams.output.tag ==
66 interfaceCtrlMsgs.RunOutput.Tags.query_version_result) {
67 var version = runResponseMessageParams.output
68 .query_version_result
69 .version;
70 return version;
71 }
72 }
73
74 function ControlMessageProxy() {
75 this.receiver = null;
76 }
77
78 ControlMessageProxy.prototype.queryVersion = function queryVersion() {
79 var runMessageParams = new interfaceCtrlMsgs.RunMessageParams();
80 runMessageParams.input = new interfaceCtrlMsgs.RunInput();
81 runMessageParams.input.query_version = new
82 interfaceCtrlMsgs.QueryVersion();
83
84 return sendRunMessage(this.receiver, runMessageParams).then(runVersion);
85 };
86
87 ControlMessageProxy.prototype.requireVersion = function
88 requireVersion(version) {
89
90 var runOrClosePipeMsgParams = new
91 interfaceCtrlMsgs.RunOrClosePipeMessageParams();
92 runOrClosePipeMsgParams.input = new interfaceCtrlMsgs.RunOrClosePipeInput();
93 runOrClosePipeMsgParams.input.require_version = new
94 interfaceCtrlMsgs.RequireVersion({'version': version});
95 sendRunOrClosePipeMessage(this.receiver, runOrClosePipeMsgParams);
96 };
97
98 var exports = {};
99 exports.ControlMessageProxy = ControlMessageProxy;
100
101 return exports;
102 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698