| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module mojo_base.mojom; |
| |
| import "mojo/public/mojom/base/big_buffer.mojom"; |
| |
| // Corresponds to a wrapped binary protobuf. |
| // |
| // When used via the mojo_base::ProtoWrapper class this adds basic type safety |
| // and a documented wrapper type for protobuf bytes that are sent over mojo. |
| // |
| // !!! DO NOT USE WRAPPED PROTOBUFS IN PLACE OF MOJOM IN CHROMIUM IPC !!! |
| // |
| // This wrapper exists to help people that have to interact with other systems |
| // that talk protobuf and allows the bytes to be moved into an appropriate |
| // process over mojom in a more appropriate type than `string`. |
| // |
| // Do not use or manipulate this struct directly - instead use the typemapped |
| // class mojo_base::ProtoWrapper. This class may only be used with approval from |
| // an IPC security reviewer, and must not be used to simply replace mojom |
| // serialization with protobuf serialization. |
| struct ProtoWrapper { |
| // Security Note: do not access this directly. |
| // Contains the name of the proto message class that was serialized into this |
| // wrapper. |
| string proto_name; |
| // Security Note: do not access this directly. |
| // Contains the byte stream produced by the protobuf implementation. As it is |
| // a BigBuffer it may be implemented using shared memory. |
| mojo_base.mojom.BigBuffer smuggled; |
| }; |