blob: ed4b24c32c3dabd4985f3e39754665306aeac2e8 [file] [log] [blame]
Mårten Kongstad867a3492023-04-25 15:06:30 +02001// Copyright (C) 2023 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License
14
Mårten Kongstadfa23d292023-05-11 14:47:02 +020015// This is the schema definition for aconfig files. Modifications need to be
16// either backwards compatible, or include updates to all aconfig files in the
Mårten Kongstadbb520722023-04-26 13:16:41 +020017// Android tree.
Mårten Kongstad867a3492023-04-25 15:06:30 +020018
Mårten Kongstadbb520722023-04-26 13:16:41 +020019syntax = "proto2";
Mårten Kongstad867a3492023-04-25 15:06:30 +020020
21package android.aconfig;
22
Mårten Kongstad30950782023-05-09 13:31:29 +020023// messages used in both aconfig input and output
24
Mårten Kongstadc68c4ea2023-05-05 16:20:09 +020025enum flag_state {
26 ENABLED = 1;
27 DISABLED = 2;
28}
29
Mårten Kongstad30950782023-05-09 13:31:29 +020030enum flag_permission {
Mårten Kongstad416330b2023-05-05 11:10:01 +020031 READ_ONLY = 1;
32 READ_WRITE = 2;
33}
34
Mårten Kongstadfa23d292023-05-11 14:47:02 +020035// aconfig input messages: flag declarations and values
Mårten Kongstad30950782023-05-09 13:31:29 +020036
Mårten Kongstadfa23d292023-05-11 14:47:02 +020037message flag_declaration {
Mårten Kongstada2e5ab82023-06-19 16:28:54 +020038 optional string name = 1;
39 optional string namespace = 2;
40 optional string description = 3;
Mårten Kongstad1b8636b2023-06-22 10:12:24 +020041 repeated string bug = 4;
Zhi Dou71f1b352023-08-21 22:49:46 +000042 optional bool is_fixed_read_only = 5;
Oriol Prieto Gasco0b9d2892023-11-20 16:23:51 +000043 optional bool is_exported = 6;
Micha Schwab1a1a08a2023-11-28 16:14:30 -050044 optional flag_metadata metadata = 7;
Mårten Kongstadbb520722023-04-26 13:16:41 +020045};
46
Micha Schwab1a1a08a2023-11-28 16:14:30 -050047// Optional metadata about the flag, such as its purpose and its intended form factors.
48// Can influence the applied policies and testing strategy.
49message flag_metadata {
50 enum flag_purpose {
51 PURPOSE_UNSPECIFIED = 0;
52 PURPOSE_FEATURE = 1;
53 PURPOSE_BUGFIX = 2;
54 }
55
56 optional flag_purpose purpose = 1;
57
58 // TODO(b/315025930): Add field to designate intended target device form factor(s), such as phone, watch or other.
59}
60
Mårten Kongstadfa23d292023-05-11 14:47:02 +020061message flag_declarations {
Mårten Kongstada2e5ab82023-06-19 16:28:54 +020062 optional string package = 1;
Mårten Kongstadfa23d292023-05-11 14:47:02 +020063 repeated flag_declaration flag = 2;
Oriol Prieto Gasco7afc7e72023-11-22 13:26:02 +000064 optional string container = 3;
Mårten Kongstadbb520722023-04-26 13:16:41 +020065};
66
Mårten Kongstadfa23d292023-05-11 14:47:02 +020067message flag_value {
Mårten Kongstada2e5ab82023-06-19 16:28:54 +020068 optional string package = 1;
69 optional string name = 2;
70 optional flag_state state = 3;
71 optional flag_permission permission = 4;
Mårten Kongstadbb520722023-04-26 13:16:41 +020072};
73
Mårten Kongstadfa23d292023-05-11 14:47:02 +020074message flag_values {
75 repeated flag_value flag_value = 1;
Mårten Kongstadbb520722023-04-26 13:16:41 +020076};
Mårten Kongstada1029092023-05-08 11:51:59 +020077
Mårten Kongstadfa23d292023-05-11 14:47:02 +020078// aconfig output messages: parsed and verified flag declarations and values
Mårten Kongstada1029092023-05-08 11:51:59 +020079
Mårten Kongstad30950782023-05-09 13:31:29 +020080message tracepoint {
Mårten Kongstadfa23d292023-05-11 14:47:02 +020081 // path to declaration or value file relative to $TOP
Mårten Kongstada2e5ab82023-06-19 16:28:54 +020082 optional string source = 1;
83 optional flag_state state = 2;
84 optional flag_permission permission = 3;
Mårten Kongstada1029092023-05-08 11:51:59 +020085}
86
Mårten Kongstad30950782023-05-09 13:31:29 +020087message parsed_flag {
Mårten Kongstada2e5ab82023-06-19 16:28:54 +020088 optional string package = 1;
89 optional string name = 2;
90 optional string namespace = 3;
91 optional string description = 4;
Mårten Kongstad1b8636b2023-06-22 10:12:24 +020092 repeated string bug = 5;
93 optional flag_state state = 6;
94 optional flag_permission permission = 7;
95 repeated tracepoint trace = 8;
Zhi Dou71f1b352023-08-21 22:49:46 +000096 optional bool is_fixed_read_only = 9;
Oriol Prieto Gasco0b9d2892023-11-20 16:23:51 +000097 optional bool is_exported = 10;
Oriol Prieto Gasco7afc7e72023-11-22 13:26:02 +000098 optional string container = 11;
Micha Schwab1a1a08a2023-11-28 16:14:30 -050099 optional flag_metadata metadata = 12;
Mårten Kongstad30950782023-05-09 13:31:29 +0200100}
101
102message parsed_flags {
103 repeated parsed_flag parsed_flag = 1;
Mårten Kongstada1029092023-05-08 11:51:59 +0200104}