mirror of
https://github.com/Relintai/godot-mono-builds.git
synced 2024-11-14 10:27:25 +01:00
ee54822600
The monodroid BCL expects to find this class in 'Mono.Android.dll'. We're not using Xamarin.Android (at least not for now) so we need a replacement.
112 lines
3.2 KiB
C#
112 lines
3.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Net;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.InteropServices;
|
|
using System.Threading;
|
|
|
|
// See 'mono/sdks/android/managed/fake-monodroid.cs' and 'xamarin-android/src/Mono.Android/Android.Runtime/AndroidEnvironment.cs'
|
|
|
|
namespace Android.Runtime
|
|
{
|
|
public static class AndroidEnvironment
|
|
{
|
|
public const string AndroidLogAppName = "Mono.Android";
|
|
|
|
static object lock_ = new object();
|
|
|
|
[DllImport("__Internal", CallingConvention = CallingConvention.Cdecl)]
|
|
internal extern static void monodroid_free(IntPtr ptr);
|
|
|
|
[DllImport("__Internal", CallingConvention = CallingConvention.Cdecl)]
|
|
static extern IntPtr _monodroid_timezone_get_default_id();
|
|
|
|
[DllImport("__Internal", CallingConvention = CallingConvention.Cdecl)]
|
|
static extern int _monodroid_getifaddrs(out IntPtr ifap);
|
|
|
|
[DllImport("__Internal", CallingConvention = CallingConvention.Cdecl)]
|
|
static extern void _monodroid_freeifaddrs(IntPtr ifap);
|
|
|
|
static string GetDefaultTimeZone()
|
|
{
|
|
IntPtr id = _monodroid_timezone_get_default_id();
|
|
|
|
try
|
|
{
|
|
return Marshal.PtrToStringAnsi(id);
|
|
}
|
|
finally
|
|
{
|
|
monodroid_free(id);
|
|
}
|
|
}
|
|
|
|
static SynchronizationContext GetDefaultSyncContext()
|
|
{
|
|
// Not needed
|
|
return null;
|
|
}
|
|
|
|
static IWebProxy GetDefaultProxy()
|
|
{
|
|
// Not needed
|
|
return null;
|
|
}
|
|
|
|
static int GetInterfaceAddresses(out IntPtr ifap)
|
|
{
|
|
return _monodroid_getifaddrs(out ifap);
|
|
}
|
|
|
|
static void FreeInterfaceAddresses(IntPtr ifap)
|
|
{
|
|
_monodroid_freeifaddrs(ifap);
|
|
}
|
|
|
|
static void DetectCPUAndArchitecture(out ushort builtForCPU, out ushort runningOnCPU, out bool is64bit)
|
|
{
|
|
// Not needed (For now? The BCL code that uses the result is commented...)
|
|
builtForCPU = 0;
|
|
runningOnCPU = 0;
|
|
is64bit = Environment.Is64BitProcess;
|
|
}
|
|
|
|
static bool TrustEvaluateSsl(List<byte[]> certsRawData)
|
|
{
|
|
// This is legacy. Not needed as BTLS is used by default instead.
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
|
static extern bool _gd_mono_init_cert_store();
|
|
|
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
|
static extern byte[] _gd_mono_android_cert_store_lookup(string alias);
|
|
|
|
static bool certStoreInitOk = false;
|
|
|
|
static void InitCertStore()
|
|
{
|
|
if (certStoreInitOk)
|
|
return;
|
|
|
|
lock (lock_)
|
|
{
|
|
certStoreInitOk = _gd_mono_init_cert_store();
|
|
}
|
|
}
|
|
|
|
static byte[] CertStoreLookup(long hash, bool userStore)
|
|
{
|
|
InitCertStore();
|
|
|
|
if (!certStoreInitOk)
|
|
return null;
|
|
|
|
string alias = string.Format("{0}:{1:x8}.0", userStore ? "user" : "system", hash);
|
|
|
|
return _gd_mono_android_cert_store_lookup(alias);
|
|
}
|
|
}
|
|
}
|