Export libcore aconfig flags to frameworks-minus-apex bootclasspath
The DateIntervalFormatTest.testIsLibcoreVFlagEnabled() doesn't pass in AOSP today, even though `printflags` shows `core_libraries/com.android.libcore.v_apis: READ_ONLY + ENABLED (/apex/com.android.art)`. So try to submit it in internal main instead.
Bug: 349108429
Test: atest FrameworksCoreTests:android.text.format.DateIntervalFormatTest
Flag: EXEMPT Add exported flag lib
Change-Id: I6244a615ae3d1c82bcf367c6e06994741c0553bb
diff --git a/AconfigFlags.bp b/AconfigFlags.bp
index a16aa2d..da3f172 100644
--- a/AconfigFlags.bp
+++ b/AconfigFlags.bp
@@ -98,6 +98,7 @@
"framework-jobscheduler-job.flags-aconfig-java",
"framework_graphics_flags_java_lib",
"hwui_flags_java_lib",
+ "libcore_exported_aconfig_flags_lib",
"power_flags_lib",
"sdk_sandbox_flags_lib",
"surfaceflinger_flags_java_lib",
@@ -140,6 +141,14 @@
defaults: ["framework-minus-apex-aconfig-java-defaults"],
}
+// Core Libraries / libcore
+java_aconfig_library {
+ name: "libcore_exported_aconfig_flags_lib",
+ aconfig_declarations: "libcore-aconfig-flags",
+ mode: "exported",
+ defaults: ["framework-minus-apex-aconfig-java-defaults"],
+}
+
// Telecom
java_aconfig_library {
name: "telecom_flags_core_java_lib",
diff --git a/core/java/android/text/format/DateIntervalFormat.java b/core/java/android/text/format/DateIntervalFormat.java
index e8236fd..8dea322 100644
--- a/core/java/android/text/format/DateIntervalFormat.java
+++ b/core/java/android/text/format/DateIntervalFormat.java
@@ -26,6 +26,7 @@
import android.util.LruCache;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.libcore.Flags;
import java.text.FieldPosition;
import java.util.TimeZone;
@@ -123,4 +124,14 @@
&& c.get(Calendar.SECOND) == 0
&& c.get(Calendar.MILLISECOND) == 0;
}
+
+
+ @VisibleForTesting(visibility = PACKAGE)
+ public static boolean isLibcoreVFlagEnabled() {
+ // Note that the Flags class is expected to be jarjar-ed in the build-time.
+ // See go/repackage_flags
+ // The full-qualified name should be like
+ // com.android.internal.hidden_from_bootclasspath.com.android.libcore.Flags
+ return Flags.vApis();
+ }
}
diff --git a/core/tests/coretests/src/android/text/format/DateIntervalFormatTest.java b/core/tests/coretests/src/android/text/format/DateIntervalFormatTest.java
index 71c068d..9750de3 100644
--- a/core/tests/coretests/src/android/text/format/DateIntervalFormatTest.java
+++ b/core/tests/coretests/src/android/text/format/DateIntervalFormatTest.java
@@ -35,6 +35,7 @@
import static android.text.format.DateUtils.FORMAT_UTC;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import android.icu.util.Calendar;
import android.icu.util.TimeZone;
@@ -683,4 +684,12 @@
assertEquals("February 27\u2009\u2013\u2009March 1, 2004",
fmt.apply(1077840000000L, 1078185600000L));
}
+
+ @Test
+ public void testIsLibcoreVFlagEnabled() {
+ // This flag has been fully ramped. It should never be false.
+ assertTrue(DateIntervalFormat.isLibcoreVFlagEnabled());
+ // Call a Android V API in libcore.
+ assertEquals("\ud840\udc2b", Character.toString(0x2002B));
+ }
}