summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Oriol Prieto Gasco <opg@google.com> 2023-11-20 16:23:51 +0000
committer Oriol Prieto Gasco <opg@google.com> 2023-11-20 21:30:18 +0000
commit0b9d289e2a8fe6262421e9a5483558c2023679dd (patch)
tree4ae295c744f98a186eb9b33a3720d3529a15db1d
parent8faa4a588001cad91b98a7577373745752a29971 (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.proto3
-rw-r--r--tools/aconfig/src/commands.rs1
-rw-r--r--tools/aconfig/src/protos.rs3
-rw-r--r--tools/aconfig/src/test.rs6
-rw-r--r--tools/aconfig/tests/test.aconfig1
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: