blob: ea7c1fa590fcd5f1f691d28b6e21a5cdb0c197be [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module mojo_base.mojom;
// Value represents a value that can be serialized to/from JSON.
//
// One notable caveat is that Value supports arbitrary binary data, which JSON
// does not support natively.
union Value {
// Null type placeholder. This field is never used.
uint8 null_value;
// Primitive types.
bool bool_value;
int32 int_value;
double double_value;
// Unicode string.
string string_value;
// Binary blob with arbitrary bytes. Not supported for JSON.
array<uint8> binary_value;
// Basic container support for lists and maps.
DictionaryValue dictionary_value;
ListValue list_value;
};
// Interfaces that only want to handle a value of dictionary or list type
// should use base.mojom.DictionaryValue or base.mojom.ListValue in the method
// declaration. Though both of these types are mapped to base::Value in C++,
// the generated deserialization will guarantee that the method is only invoked
// with a base::Value of the correct subtype.
struct DictionaryValue {
map<string, Value> storage;
};
struct ListValue {
array<Value> storage;
};