package org.robolectric.shadows; import android.os.AsyncTask; import org.robolectric.annotation.internal.DoNotInstrument; import org.robolectric.util.ReflectionHelpers; import org.robolectric.util.ReflectionHelpers.ClassParameter; /** * Bridge between shadows and {@link android.os.AsyncTask}. */ @DoNotInstrument public class ShadowAsyncTaskBridge<Params, Progress, Result> { private AsyncTask<Params, Progress, Result> asyncTask; public ShadowAsyncTaskBridge(AsyncTask<Params, Progress, Result> asyncTask) { this.asyncTask = asyncTask; } public Result doInBackground(Params... params) { return ReflectionHelpers.callInstanceMethod(asyncTask, "doInBackground", ClassParameter.from(Object[].class, params)); } public void onPreExecute() { ReflectionHelpers.callInstanceMethod(asyncTask, "onPreExecute"); } public void onPostExecute(Result result) { ReflectionHelpers.callInstanceMethod(asyncTask, "onPostExecute", ClassParameter.from(Object.class, result)); } public void onProgressUpdate(Progress... values) { ReflectionHelpers.callInstanceMethod(asyncTask, "onProgressUpdate", ClassParameter.from(Object[].class, values)); } public void onCancelled() { ReflectionHelpers.callInstanceMethod(asyncTask, "onCancelled"); } }