diff options
author | 2023-11-20 16:23:51 +0000 | |
---|---|---|
committer | 2023-11-20 21:30:18 +0000 | |
commit | 0b9d289e2a8fe6262421e9a5483558c2023679dd (patch) | |
tree | 4ae295c744f98a186eb9b33a3720d3529a15db1d | |
parent | 8faa4a588001cad91b98a7577373745752a29971 (diff) |
Add is_exported field to aconfig.proto
When a flag is exported, it can be read by code built in other containers. By
default flags are not exported. Set this to true if your flag is gating
a public API which may be called from other containers (typically, a
flag used in @FlaggedAPI annotations).
Test: atest aconfig.test
Bug: 311152500
Change-Id: I53e3ed18b96c1518f04172d5933ef96b41ccda7e
-rw-r--r-- | tools/aconfig/protos/aconfig.proto | 3 | ||||
-rw-r--r-- | tools/aconfig/src/commands.rs | 1 | ||||
-rw-r--r-- | tools/aconfig/src/protos.rs | 3 | ||||
-rw-r--r-- | tools/aconfig/src/test.rs | 6 | ||||
-rw-r--r-- | tools/aconfig/tests/test.aconfig | 1 |
5 files changed, 14 insertions, 0 deletions
diff --git a/tools/aconfig/protos/aconfig.proto b/tools/aconfig/protos/aconfig.proto index d5e286843d..9e193ecbbd 100644 --- a/tools/aconfig/protos/aconfig.proto +++ b/tools/aconfig/protos/aconfig.proto @@ -40,6 +40,7 @@ message flag_declaration { optional string description = 3; repeated string bug = 4; optional bool is_fixed_read_only = 5; + optional bool is_exported = 6; }; message flag_declarations { @@ -77,6 +78,8 @@ message parsed_flag { optional flag_permission permission = 7; repeated tracepoint trace = 8; optional bool is_fixed_read_only = 9; + optional bool is_exported = 10; + } message parsed_flags { diff --git a/tools/aconfig/src/commands.rs b/tools/aconfig/src/commands.rs index c8c79754ba..ff0df1f56d 100644 --- a/tools/aconfig/src/commands.rs +++ b/tools/aconfig/src/commands.rs @@ -98,6 +98,7 @@ pub fn parse_flags( }; parsed_flag.set_permission(flag_permission); parsed_flag.set_is_fixed_read_only(flag_declaration.is_fixed_read_only()); + parsed_flag.set_is_exported(flag_declaration.is_exported()); let mut tracepoint = ProtoTracepoint::new(); tracepoint.set_source(input.source.clone()); tracepoint.set_state(DEFAULT_FLAG_STATE); diff --git a/tools/aconfig/src/protos.rs b/tools/aconfig/src/protos.rs index d3b5b378b2..a5a53425cf 100644 --- a/tools/aconfig/src/protos.rs +++ b/tools/aconfig/src/protos.rs @@ -308,6 +308,7 @@ flag { namespace: "first_ns" description: "This is the description of the first flag." bug: "123" + is_exported: true } flag { name: "second" @@ -326,12 +327,14 @@ flag { assert_eq!(first.description(), "This is the description of the first flag."); assert_eq!(first.bug, vec!["123"]); assert!(!first.is_fixed_read_only()); + assert!(first.is_exported()); let second = flag_declarations.flag.iter().find(|pf| pf.name() == "second").unwrap(); assert_eq!(second.name(), "second"); assert_eq!(second.namespace(), "second_ns"); assert_eq!(second.description(), "This is the description of the second flag."); assert_eq!(second.bug, vec!["abc"]); assert!(second.is_fixed_read_only()); + assert!(!second.is_exported()); // bad input: missing package in flag declarations let error = flag_declarations::try_from_text_proto( diff --git a/tools/aconfig/src/test.rs b/tools/aconfig/src/test.rs index bb3d1f0902..31c67b3ce4 100644 --- a/tools/aconfig/src/test.rs +++ b/tools/aconfig/src/test.rs @@ -42,6 +42,7 @@ parsed_flag { permission: READ_ONLY } is_fixed_read_only: false + is_exported: false } parsed_flag { package: "com.android.aconfig.test" @@ -57,6 +58,7 @@ parsed_flag { permission: READ_WRITE } is_fixed_read_only: false + is_exported: true } parsed_flag { package: "com.android.aconfig.test" @@ -77,6 +79,7 @@ parsed_flag { permission: READ_WRITE } is_fixed_read_only: false + is_exported: false } parsed_flag { package: "com.android.aconfig.test" @@ -97,6 +100,7 @@ parsed_flag { permission: READ_ONLY } is_fixed_read_only: true + is_exported: false } parsed_flag { package: "com.android.aconfig.test" @@ -122,6 +126,7 @@ parsed_flag { permission: READ_ONLY } is_fixed_read_only: false + is_exported: false } parsed_flag { package: "com.android.aconfig.test" @@ -142,6 +147,7 @@ parsed_flag { permission: READ_WRITE } is_fixed_read_only: false + is_exported: false } "#; diff --git a/tools/aconfig/tests/test.aconfig b/tools/aconfig/tests/test.aconfig index 8527e93e1e..b49b6656fd 100644 --- a/tools/aconfig/tests/test.aconfig +++ b/tools/aconfig/tests/test.aconfig @@ -39,6 +39,7 @@ flag { namespace: "aconfig_test" description: "This flag is DISABLED + READ_WRITE" bug: "456" + is_exported: true } # This flag's final value calculated from: |