#if UNITY_ANDROID #pragma warning disable 0642 // Possible mistaken empty statement namespace GooglePlayGames.Android { using UnityEngine; using System; class AndroidTaskUtils { private AndroidTaskUtils() { } public static void AddOnSuccessListener(AndroidJavaObject task, Action callback) { using (task.Call("addOnSuccessListener", new TaskOnSuccessProxy(callback, /* disposeResult= */ true))) ; } public static void AddOnSuccessListener(AndroidJavaObject task, bool disposeResult, Action callback) { using (task.Call("addOnSuccessListener", new TaskOnSuccessProxy(callback, disposeResult))) ; } public static void AddOnFailureListener(AndroidJavaObject task, Action callback) { using (task.Call("addOnFailureListener", new TaskOnFailedProxy(callback))) ; } public static void AddOnCompleteListener(AndroidJavaObject task, Action callback) { using (task.Call("addOnCompleteListener", new TaskOnCompleteProxy(callback))) ; } private class TaskOnCompleteProxy : AndroidJavaProxy { private Action mCallback; public TaskOnCompleteProxy(Action callback) : base("com/google/android/gms/tasks/OnCompleteListener") { mCallback = callback; } public void onComplete(T result) { if (result is IDisposable) { using ((IDisposable) result) { mCallback(result); } } else { mCallback(result); } } } private class TaskOnSuccessProxy : AndroidJavaProxy { private Action mCallback; private bool mDisposeResult; public TaskOnSuccessProxy(Action callback, bool disposeResult) : base("com/google/android/gms/tasks/OnSuccessListener") { mCallback = callback; mDisposeResult = disposeResult; } public void onSuccess(T result) { if (result is IDisposable && mDisposeResult) { using ((IDisposable) result) { mCallback(result); } } else { mCallback(result); } } } private class TaskOnFailedProxy : AndroidJavaProxy { private Action mCallback; public TaskOnFailedProxy(Action callback) : base("com/google/android/gms/tasks/OnFailureListener") { mCallback = callback; } public void onFailure(AndroidJavaObject exception) { using (exception) { mCallback(exception); } } } } } #endif