Calling @IntraCoreApi from core-icu4j should not cause "Core platform API violation"

Treat I18n APEX as the same domain as ART and Conscrypt APEX.

Remove unused varaiable isJavaDebuggable because it causes the
NoSuchMethodError for an unknown reason:
java.lang.NoSuchMethodError: No virtual method isJavaDebuggable()Z in class Ldalvik/system/VMRuntime; or its super classes (declaration of 'dalvik.system.VMRuntime' appears in /apex/com.android.art/javalib/core-libart.jar)

Bug: 138994281
Test: art/test/run-test --chroot $ART_TEST_CHROOT 674-hiddenapi
Change-Id: Icb7e98b5cd7143c06c05dd4377af0c96ba75bca7
diff --git a/libartbase/base/file_utils.cc b/libartbase/base/file_utils.cc
index 98b69f3..e827964 100644
--- a/libartbase/base/file_utils.cc
+++ b/libartbase/base/file_utils.cc
@@ -72,6 +72,7 @@
 static constexpr const char* kAndroidDataDefaultPath = "/data";
 static constexpr const char* kAndroidArtRootEnvVar = "ANDROID_ART_ROOT";
 static constexpr const char* kAndroidConscryptRootEnvVar = "ANDROID_CONSCRYPT_ROOT";
+static constexpr const char* kAndroidI18nRootEnvVar = "ANDROID_I18N_ROOT";
 
 // Get the "root" directory containing the "lib" directory where this instance
 // of the libartbase library (which contains `GetRootContainingLibartbase`) is
@@ -453,6 +454,11 @@
       full_path, kAndroidConscryptRootEnvVar, kAndroidConscryptApexDefaultPath);
 }
 
+bool LocationIsOnI18nModule(const char* full_path) {
+  return IsLocationOnModule(
+      full_path, kAndroidI18nRootEnvVar, kAndroidI18nApexDefaultPath);
+}
+
 bool LocationIsOnApex(const char* full_path) {
   return android::base::StartsWith(full_path, kApexDefaultPath);
 }
diff --git a/libartbase/base/file_utils.h b/libartbase/base/file_utils.h
index a521c97..de60483 100644
--- a/libartbase/base/file_utils.h
+++ b/libartbase/base/file_utils.h
@@ -104,6 +104,9 @@
 // Return whether the location is on /apex/com.android.conscrypt
 bool LocationIsOnConscryptModule(const char* location);
 
+// Return whether the location is on /apex/com.android.i18n
+bool LocationIsOnI18nModule(const char* location);
+
 // Return whether the location is on system (i.e. android root).
 bool LocationIsOnSystem(const char* location);
 
diff --git a/runtime/hidden_api.cc b/runtime/hidden_api.cc
index 6ac57b6..d13d716 100644
--- a/runtime/hidden_api.cc
+++ b/runtime/hidden_api.cc
@@ -94,7 +94,8 @@
   // is set to "/system".
   if (ArtModuleRootDistinctFromAndroidRoot()) {
     if (LocationIsOnArtModule(dex_location.c_str()) ||
-        LocationIsOnConscryptModule(dex_location.c_str())) {
+        LocationIsOnConscryptModule(dex_location.c_str()) ||
+        LocationIsOnI18nModule(dex_location.c_str())) {
       return Domain::kCorePlatform;
     }
 
diff --git a/test/674-hiddenapi/src-ex/ChildClass.java b/test/674-hiddenapi/src-ex/ChildClass.java
index 9295655..855134bc 100644
--- a/test/674-hiddenapi/src-ex/ChildClass.java
+++ b/test/674-hiddenapi/src-ex/ChildClass.java
@@ -103,7 +103,6 @@
     ChildClass.everythingWhitelisted = everythingWhitelisted;
 
     boolean isSameBoot = (isParentInBoot == isChildInBoot);
-    boolean isDebuggable = VMRuntime.getRuntime().isJavaDebuggable();
 
     // For compat reasons, meta-reflection should still be usable by apps if hidden api check
     // hardening is disabled (i.e. target SDK is Q or earlier). The only configuration where this