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

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

Issue 2744963002: Introduce InterfaceEndpointClient(IEC), InterfaceEndpointHandle and (Closed)
Patch Set: Throw the error with the string being the stack trace needed to debug layouts which don't output an… Created 3 years, 8 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/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 });
OLDNEW
« no previous file with comments | « mojo/public/js/lib/interface_endpoint_handle.js ('k') | mojo/public/js/lib/pipe_control_message_proxy.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698