1// Copyright 2018 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 5module mojo_base.mojom; 6 7// Value represents a value that can be serialized to/from JSON. 8// 9// One notable caveat is that Value supports arbitrary binary data, which JSON 10// does not support natively. 11union Value { 12 // Null type placeholder. This field is never used. 13 uint8 null_value; 14 // Primitive types. 15 bool bool_value; 16 int32 int_value; 17 double double_value; 18 // Unicode string. 19 string string_value; 20 // Binary blob with arbitrary bytes. Not supported for JSON. 21 array<uint8> binary_value; 22 // Basic container support for lists and maps. 23 DictionaryValue dictionary_value; 24 ListValue list_value; 25}; 26 27// Interfaces that only want to handle a value of dictionary or list type 28// should use base.mojom.DictionaryValue or base.mojom.ListValue in the method 29// declaration. Though both of these types are mapped to base::Value in C++, 30// the generated deserialization will guarantee that the method is only invoked 31// with a base::Value of the correct subtype. 32struct DictionaryValue { 33 map<string, Value> storage; 34}; 35 36struct ListValue { 37 array<Value> storage; 38}; 39