aconfig: @hide generated Java code

Flagged APIs are annotated using `@FlaggedApi(Flags.FLAG_NAME)`, where
Flags.FLAG_NAME was auto-generated by aconfig.

When metalava generates an API signature file, it can either

  a) insert the value of the constant ("com.foo.bar.flag_name"), or
  b) insert the name of the constant (FLAG.NAME)

In the case of @FlaggedApi, we want a). This requires that

  x) metlava has access to the definition of the constant while generating the API signature file, and
  y) the constant is not part of the API surface of the API signature file

x) is handled by the build system, y) is handled by the aconfig code
generation.

This CL @hide:s all generated Java code, to make sure it is accessible
within the platform, but never part of any API surface.

Bug: 297881670
Test: atest aconfig.test aconfig.test.java
Change-Id: I328ed1a652a4e5e293f2f4b11f916d29fc2fbcbd
This commit is contained in:
Mårten Kongstad
2023-09-08 15:25:02 +02:00
parent 7d63a84642
commit 379e09d157
5 changed files with 10 additions and 0 deletions

View File

@@ -118,6 +118,7 @@ mod tests {
const EXPECTED_FEATUREFLAGS_COMMON_CONTENT: &str = r#" const EXPECTED_FEATUREFLAGS_COMMON_CONTENT: &str = r#"
package com.android.aconfig.test; package com.android.aconfig.test;
/** @hide */
public interface FeatureFlags { public interface FeatureFlags {
@com.android.aconfig.annotations.AssumeFalseForR8 @com.android.aconfig.annotations.AssumeFalseForR8
boolean disabledRo(); boolean disabledRo();
@@ -132,6 +133,7 @@ mod tests {
const EXPECTED_FLAG_COMMON_CONTENT: &str = r#" const EXPECTED_FLAG_COMMON_CONTENT: &str = r#"
package com.android.aconfig.test; package com.android.aconfig.test;
/** @hide */
public final class Flags { public final class Flags {
public static final String FLAG_DISABLED_RO = "com.android.aconfig.test.disabled_ro"; public static final String FLAG_DISABLED_RO = "com.android.aconfig.test.disabled_ro";
public static final String FLAG_DISABLED_RW = "com.android.aconfig.test.disabled_rw"; public static final String FLAG_DISABLED_RW = "com.android.aconfig.test.disabled_rw";
@@ -163,6 +165,7 @@ mod tests {
package com.android.aconfig.test; package com.android.aconfig.test;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** @hide */
public class FakeFeatureFlagsImpl implements FeatureFlags { public class FakeFeatureFlagsImpl implements FeatureFlags {
public FakeFeatureFlagsImpl() { public FakeFeatureFlagsImpl() {
resetAll(); resetAll();
@@ -234,6 +237,7 @@ mod tests {
let expect_featureflagsimpl_content = r#" let expect_featureflagsimpl_content = r#"
package com.android.aconfig.test; package com.android.aconfig.test;
import android.provider.DeviceConfig; import android.provider.DeviceConfig;
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags { public final class FeatureFlagsImpl implements FeatureFlags {
@Override @Override
public boolean disabledRo() { public boolean disabledRo() {
@@ -316,6 +320,7 @@ mod tests {
"#; "#;
let expect_featureflagsimpl_content = r#" let expect_featureflagsimpl_content = r#"
package com.android.aconfig.test; package com.android.aconfig.test;
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags { public final class FeatureFlagsImpl implements FeatureFlags {
@Override @Override
public boolean disabledRo() { public boolean disabledRo() {

View File

@@ -3,6 +3,7 @@ package {package_name};
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** @hide */
public class FakeFeatureFlagsImpl implements FeatureFlags \{ public class FakeFeatureFlagsImpl implements FeatureFlags \{
public FakeFeatureFlagsImpl() \{ public FakeFeatureFlagsImpl() \{
resetAll(); resetAll();

View File

@@ -1,5 +1,6 @@
package {package_name}; package {package_name};
/** @hide */
public interface FeatureFlags \{ public interface FeatureFlags \{
{{ for item in class_elements}} {{ for item in class_elements}}
{{ -if not item.is_read_write }} {{ -if not item.is_read_write }}

View File

@@ -3,6 +3,7 @@ package {package_name};
{{ if is_read_write- }} {{ if is_read_write- }}
import android.provider.DeviceConfig; import android.provider.DeviceConfig;
{{ endif }} {{ endif }}
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags \{ public final class FeatureFlagsImpl implements FeatureFlags \{
{{ for item in class_elements}} {{ for item in class_elements}}
@Override @Override
@@ -21,6 +22,7 @@ public final class FeatureFlagsImpl implements FeatureFlags \{
} }
{{ else }} {{ else }}
{#- Generate only stub if in test mode #} {#- Generate only stub if in test mode #}
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags \{ public final class FeatureFlagsImpl implements FeatureFlags \{
{{ for item in class_elements}} {{ for item in class_elements}}
@Override @Override

View File

@@ -1,5 +1,6 @@
package {package_name}; package {package_name};
/** @hide */
public final class Flags \{ public final class Flags \{
{{- for item in class_elements}} {{- for item in class_elements}}
public static final String FLAG_{item.flag_name_constant_suffix} = "{item.device_config_flag}"; public static final String FLAG_{item.flag_name_constant_suffix} = "{item.device_config_flag}";