Merge "Move i18n module intra core API from libcore"
diff --git a/android_icu4j/Android.bp b/android_icu4j/Android.bp
index ae91761..aeece01 100644
--- a/android_icu4j/Android.bp
+++ b/android_icu4j/Android.bp
@@ -75,7 +75,7 @@
// We use art-module-public-api-stubs-system-modules when compiling core-icu4j as ICU4J does not
// use any internal or android specific code. If it ever did then it could depend on
- // core-intra-stubs-system-modules (a superset) instead.
+ // art-module-intra-core-api-stubs-system-modules (a superset) instead.
// It is important that core-icu4j is restricted to only use stable APIs from the ART module
// since it is in a different APEX module that can be updated independently.
sdk_version: "none",
@@ -140,6 +140,65 @@
system_modules: "art-module-public-api-stubs-system-modules",
}
+// Generates stub source files for the intra-core API of the I18N module.
+// i.e. every class/member that is either in the public API or annotated with
+// @IntraCoreApi.
+//
+// The API specification .txt files managed by this only contain the additional
+// classes/members that are in the intra-core API but which are not the public
+// API.
+droidstubs {
+ name: "i18n-module-intra-core-api-stubs-source",
+ visibility: [
+ // Needed to build core-all as using the compiled library, i.e.
+ // i18n.module.intra.core.api.stubs does not work due to limitations
+ // in javac.
+ "//libcore:__subpackages__",
+ ],
+ srcs: [
+ ":android_icu4j_src_files",
+ ],
+ sdk_version: "none",
+ libs: [
+ "art.module.intra.core.api.stubs",
+ ],
+
+ installable: false,
+ args: "--hide-annotation libcore.api.Hide " +
+ "--show-single-annotation libcore.api.IntraCoreApi " +
+ "--skip-annotation-instance-methods=false ",
+
+ api_filename: "api.txt",
+ removed_api_filename: "removed.txt",
+ previous_api: "previous.txt",
+ check_api: {
+ current: {
+ api_file: "api/intra/current-api.txt",
+ removed_api_file: "api/intra/current-removed.txt",
+ },
+ last_released: {
+ api_file: "api/intra/last-api.txt",
+ removed_api_file: "api/intra/last-removed.txt",
+ },
+ },
+}
+
+// A library containing the intra-core API stubs of the I18N module.
+//
+// Intra-core APIs are only intended for the use of other core library modules.
+java_library {
+ name: "i18n.module.intra.core.api.stubs",
+ visibility: [
+ "//libcore:__subpackages__",
+ ],
+ srcs: [
+ ":i18n-module-intra-core-api-stubs-source",
+ ],
+
+ sdk_version: "none",
+ system_modules: "art-module-intra-core-api-stubs-system-modules",
+}
+
//==========================================================
// build repackaged ICU tests
//
diff --git a/android_icu4j/api/intra/current-api.txt b/android_icu4j/api/intra/current-api.txt
new file mode 100644
index 0000000..ee51707
--- /dev/null
+++ b/android_icu4j/api/intra/current-api.txt
@@ -0,0 +1,151 @@
+// Signature format: 2.0
+package android.icu.impl {
+
+ public abstract class CacheValue<V> {
+ method public static void setStrength(android.icu.impl.CacheValue.Strength);
+ }
+
+ public enum CacheValue.Strength {
+ enum_constant public static final android.icu.impl.CacheValue.Strength SOFT;
+ enum_constant public static final android.icu.impl.CacheValue.Strength STRONG;
+ }
+
+ public final class ICUData {
+ field public static final String ICU_BASE_NAME = "android/icu/impl/data/icudt64b";
+ }
+
+ public class ICUResourceBundle extends android.icu.util.UResourceBundle {
+ method public String getStringWithFallback(String) throws java.util.MissingResourceException;
+ method public android.icu.impl.ICUResourceBundle getWithFallback(String) throws java.util.MissingResourceException;
+ }
+
+ public class JavaTimeZone extends android.icu.util.TimeZone {
+ ctor public JavaTimeZone(java.util.TimeZone, String);
+ }
+
+ public final class ZoneMeta {
+ method public static String getCanonicalCLDRID(String);
+ }
+
+}
+
+package android.icu.impl.number {
+
+ public class DecimalFormatProperties implements java.lang.Cloneable java.io.Serializable {
+ }
+
+ public enum DecimalFormatProperties.ParseMode {
+ enum_constant public static final android.icu.impl.number.DecimalFormatProperties.ParseMode COMPATIBILITY;
+ }
+
+}
+
+package android.icu.text {
+
+ public class DateFormatSymbols implements java.lang.Cloneable java.io.Serializable {
+ ctor @Deprecated public DateFormatSymbols(android.icu.util.ULocale, String);
+ method public String[] getNarrowEras();
+ }
+
+ public class DateTimePatternGenerator implements java.lang.Cloneable android.icu.util.Freezable<android.icu.text.DateTimePatternGenerator> {
+ method @Deprecated public static android.icu.text.DateTimePatternGenerator getFrozenInstance(android.icu.util.ULocale);
+ }
+
+ public class DecimalFormat extends android.icu.text.NumberFormat {
+ method public void setParseStrictMode(android.icu.impl.number.DecimalFormatProperties.ParseMode);
+ }
+
+ public abstract class IDNA {
+ method @Deprecated public static StringBuffer convertIDNToASCII(String, int) throws android.icu.text.StringPrepParseException;
+ method @Deprecated public static StringBuffer convertIDNToUnicode(String, int) throws android.icu.text.StringPrepParseException;
+ }
+
+ public final class Normalizer implements java.lang.Cloneable {
+ method @Deprecated public static boolean isNormalized(String, android.icu.text.Normalizer.Mode, int);
+ method @Deprecated public static String normalize(String, android.icu.text.Normalizer.Mode);
+ field @Deprecated public static final android.icu.text.Normalizer.Mode NFC;
+ field @Deprecated public static final android.icu.text.Normalizer.Mode NFD;
+ field @Deprecated public static final android.icu.text.Normalizer.Mode NFKC;
+ field @Deprecated public static final android.icu.text.Normalizer.Mode NFKD;
+ }
+
+ @Deprecated public abstract static class Normalizer.Mode {
+ }
+
+ public abstract class TimeZoneNames implements java.io.Serializable {
+ method public java.util.Collection<android.icu.text.TimeZoneNames.MatchInfo> find(CharSequence, int, java.util.EnumSet<android.icu.text.TimeZoneNames.NameType>);
+ method @Deprecated public void getDisplayNames(String, android.icu.text.TimeZoneNames.NameType[], long, String[], int);
+ }
+
+ public static class TimeZoneNames.MatchInfo {
+ method public int matchLength();
+ method public String mzID();
+ method public android.icu.text.TimeZoneNames.NameType nameType();
+ method public String tzID();
+ }
+
+}
+
+package android.icu.util {
+
+ public class AnnualTimeZoneRule extends android.icu.util.TimeZoneRule {
+ method public int getEndYear();
+ method public android.icu.util.DateTimeRule getRule();
+ field public static final int MAX_YEAR = 2147483647; // 0x7fffffff
+ }
+
+ public abstract class BasicTimeZone extends android.icu.util.TimeZone {
+ method public abstract android.icu.util.TimeZoneTransition getNextTransition(long, boolean);
+ method public abstract android.icu.util.TimeZoneRule[] getTimeZoneRules();
+ }
+
+ public abstract class Calendar implements java.lang.Cloneable java.lang.Comparable<android.icu.util.Calendar> java.io.Serializable {
+ method public static String getDateTimeFormatString(android.icu.util.ULocale, String, int, int);
+ }
+
+ public class DateTimeRule implements java.io.Serializable {
+ method public int getDateRuleType();
+ method public int getRuleDayOfMonth();
+ method public int getRuleDayOfWeek();
+ method public int getRuleMillisInDay();
+ method public int getRuleMonth();
+ method public int getTimeRuleType();
+ field public static final int DOM = 0; // 0x0
+ field public static final int DOW = 1; // 0x1
+ field public static final int DOW_GEQ_DOM = 2; // 0x2
+ field public static final int DOW_LEQ_DOM = 3; // 0x3
+ field public static final int STANDARD_TIME = 1; // 0x1
+ field public static final int UTC_TIME = 2; // 0x2
+ field public static final int WALL_TIME = 0; // 0x0
+ }
+
+ public class InitialTimeZoneRule extends android.icu.util.TimeZoneRule {
+ }
+
+ public abstract class TimeZone implements java.lang.Cloneable android.icu.util.Freezable<android.icu.util.TimeZone> java.io.Serializable {
+ method @Deprecated public static void setICUDefault(android.icu.util.TimeZone);
+ }
+
+ public abstract class TimeZoneRule implements java.io.Serializable {
+ method public int getDSTSavings();
+ method public int getRawOffset();
+ }
+
+ public class TimeZoneTransition {
+ method public android.icu.util.TimeZoneRule getFrom();
+ method public long getTime();
+ method public android.icu.util.TimeZoneRule getTo();
+ }
+
+ public final class ULocale implements java.lang.Comparable<android.icu.util.ULocale> java.io.Serializable {
+ method @Deprecated public static String getRegionForSupplementalData(android.icu.util.ULocale, boolean);
+ }
+
+ public abstract class UResourceBundle extends java.util.ResourceBundle {
+ ctor public UResourceBundle();
+ method public static android.icu.util.UResourceBundle getBundleInstance(String, java.util.Locale);
+ method public String[] getStringArray();
+ }
+
+}
+
diff --git a/android_icu4j/api/intra/current-removed.txt b/android_icu4j/api/intra/current-removed.txt
new file mode 100644
index 0000000..d802177
--- /dev/null
+++ b/android_icu4j/api/intra/current-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/android_icu4j/api/intra/last-api.txt b/android_icu4j/api/intra/last-api.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/android_icu4j/api/intra/last-api.txt
diff --git a/android_icu4j/api/intra/last-removed.txt b/android_icu4j/api/intra/last-removed.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/android_icu4j/api/intra/last-removed.txt