Imported Upstream version 6.12.0.98

Former-commit-id: 066e1c5ebb0cc420bd293e60a01325420779fdd1
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2020-09-12 08:45:37 +00:00
parent 15e620f34f
commit 7d4706c3d7
196 changed files with 12053 additions and 764 deletions

View File

@ -58,10 +58,16 @@ namespace System {
* https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/ZoneInfoDB.java
*
* This is needed in order to read Android v4.3 tzdata files.
*
* Android 10+ moved the up-to-date tzdata location to a module updatable via the Google Play Store and the
* database location changed (https://source.android.com/devices/architecture/modular-system/runtime#time-zone-data-interactions)
* The older locations still exist (at least the `/system/usr/share/zoneinfo` one) but they won't be updated.
*/
sealed class AndroidTzData : IAndroidTimeZoneDB {
internal static readonly string[] Paths = new string[]{
GetApexTimeDataRoot () + "/etc/tz/tzdata", // Android 10+, TimeData module where the updates land
GetApexRuntimeRoot () + "/etc/tz/tzdata", // Android 10+, Fallback location if the above isn't found or corrupted
Environment.GetEnvironmentVariable ("ANDROID_DATA") + "/misc/zoneinfo/tzdata",
Environment.GetEnvironmentVariable ("ANDROID_ROOT") + "/usr/share/zoneinfo/tzdata",
};
@ -98,6 +104,26 @@ namespace System {
get {return zoneTab;}
}
static string GetApexTimeDataRoot ()
{
string ret = Environment.GetEnvironmentVariable ("ANDROID_TZDATA_ROOT");
if (!String.IsNullOrEmpty (ret)) {
return ret;
}
return "/apex/com.android.tzdata";
}
static string GetApexRuntimeRoot ()
{
string ret = Environment.GetEnvironmentVariable ("ANDROID_RUNTIME_ROOT");
if (!String.IsNullOrEmpty (ret)) {
return ret;
}
return "/apex/com.android.runtime";
}
bool LoadData (string path)
{
if (!File.Exists (path))