xref: /aosp_15_r20/external/cronet/testing/libfuzzer/proto/json.proto (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker// Copyright 2017 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker// found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker// The proto definition for JSON format has been written based on
6*6777b538SAndroid Build Coastguard Worker// http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
7*6777b538SAndroid Build Coastguard Worker
8*6777b538SAndroid Build Coastguard Workersyntax = "proto2";
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Workerpackage json_proto;
11*6777b538SAndroid Build Coastguard Worker
12*6777b538SAndroid Build Coastguard Workermessage JsonObjectField {
13*6777b538SAndroid Build Coastguard Worker  required string name = 1;
14*6777b538SAndroid Build Coastguard Worker  required JsonValue value = 2;
15*6777b538SAndroid Build Coastguard Worker}
16*6777b538SAndroid Build Coastguard Worker
17*6777b538SAndroid Build Coastguard Workermessage JsonObject {
18*6777b538SAndroid Build Coastguard Worker  repeated JsonObjectField field = 3;
19*6777b538SAndroid Build Coastguard Worker}
20*6777b538SAndroid Build Coastguard Worker
21*6777b538SAndroid Build Coastguard Workermessage JsonValue {
22*6777b538SAndroid Build Coastguard Worker  oneof value {
23*6777b538SAndroid Build Coastguard Worker    // Json value types:
24*6777b538SAndroid Build Coastguard Worker
25*6777b538SAndroid Build Coastguard Worker    // null: null, will be used when 'oneof' contains nothing
26*6777b538SAndroid Build Coastguard Worker
27*6777b538SAndroid Build Coastguard Worker    // object: another json object of any type
28*6777b538SAndroid Build Coastguard Worker    JsonObject object_value = 1;
29*6777b538SAndroid Build Coastguard Worker
30*6777b538SAndroid Build Coastguard Worker    // array: an array of values
31*6777b538SAndroid Build Coastguard Worker    ArrayValue array_value = 2;
32*6777b538SAndroid Build Coastguard Worker
33*6777b538SAndroid Build Coastguard Worker    // number: can be an integer, a float, an exponent
34*6777b538SAndroid Build Coastguard Worker    NumberValue number_value = 3;
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard Worker    // string: unicode string
37*6777b538SAndroid Build Coastguard Worker    StringValue string_value = 4;
38*6777b538SAndroid Build Coastguard Worker
39*6777b538SAndroid Build Coastguard Worker    // boolean: true or talse
40*6777b538SAndroid Build Coastguard Worker    BooleanValue boolean_value = 5;
41*6777b538SAndroid Build Coastguard Worker  }
42*6777b538SAndroid Build Coastguard Worker}
43*6777b538SAndroid Build Coastguard Worker
44*6777b538SAndroid Build Coastguard Workermessage ArrayValue {
45*6777b538SAndroid Build Coastguard Worker  repeated JsonValue value = 1;
46*6777b538SAndroid Build Coastguard Worker}
47*6777b538SAndroid Build Coastguard Worker
48*6777b538SAndroid Build Coastguard Workermessage NumberInteger {
49*6777b538SAndroid Build Coastguard Worker  required int64 value = 1;
50*6777b538SAndroid Build Coastguard Worker}
51*6777b538SAndroid Build Coastguard Worker
52*6777b538SAndroid Build Coastguard Workermessage NumberFloat {
53*6777b538SAndroid Build Coastguard Worker  required double value = 1;
54*6777b538SAndroid Build Coastguard Worker}
55*6777b538SAndroid Build Coastguard Worker
56*6777b538SAndroid Build Coastguard Workermessage NumberExponent {
57*6777b538SAndroid Build Coastguard Worker  required int32 base = 1;
58*6777b538SAndroid Build Coastguard Worker  required int32 exponent = 2;
59*6777b538SAndroid Build Coastguard Worker  required bool use_uppercase = 3;
60*6777b538SAndroid Build Coastguard Worker}
61*6777b538SAndroid Build Coastguard Worker
62*6777b538SAndroid Build Coastguard Workermessage NumberExponentFrac {
63*6777b538SAndroid Build Coastguard Worker  required float base = 1;
64*6777b538SAndroid Build Coastguard Worker  required int32 exponent = 2;
65*6777b538SAndroid Build Coastguard Worker  required bool use_uppercase = 3;
66*6777b538SAndroid Build Coastguard Worker}
67*6777b538SAndroid Build Coastguard Worker
68*6777b538SAndroid Build Coastguard Workermessage NumberValue {
69*6777b538SAndroid Build Coastguard Worker  required NumberInteger integer_value = 1;
70*6777b538SAndroid Build Coastguard Worker
71*6777b538SAndroid Build Coastguard Worker  // integer_value is used when oneof field below has nothing.
72*6777b538SAndroid Build Coastguard Worker  oneof value {
73*6777b538SAndroid Build Coastguard Worker    NumberFloat float_value = 2;
74*6777b538SAndroid Build Coastguard Worker    NumberExponent exponent_value = 3;
75*6777b538SAndroid Build Coastguard Worker    NumberExponentFrac exponent_frac_value = 4;
76*6777b538SAndroid Build Coastguard Worker  }
77*6777b538SAndroid Build Coastguard Worker}
78*6777b538SAndroid Build Coastguard Worker
79*6777b538SAndroid Build Coastguard Workermessage StringValue {
80*6777b538SAndroid Build Coastguard Worker  required string value = 1;
81*6777b538SAndroid Build Coastguard Worker}
82*6777b538SAndroid Build Coastguard Worker
83*6777b538SAndroid Build Coastguard Workermessage BooleanValue {
84*6777b538SAndroid Build Coastguard Worker  required bool value = 1;
85*6777b538SAndroid Build Coastguard Worker}
86