Home | History | Annotate | Download | only in util
      1 // Copyright 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 package org.chromium.base.test.util;
      6 
      7 import android.app.Instrumentation;
      8 
      9 import java.util.concurrent.Callable;
     10 import java.util.concurrent.ExecutionException;
     11 import java.util.concurrent.FutureTask;
     12 
     13 /**
     14  * Utility methods built around the android.app.Instrumentation class.
     15  */
     16 public final class InstrumentationUtils {
     17 
     18     private InstrumentationUtils() {
     19     }
     20 
     21     public static <R> R runOnMainSyncAndGetResult(Instrumentation instrumentation,
     22             Callable<R> callable) throws Throwable {
     23         FutureTask<R> task = new FutureTask<R>(callable);
     24         instrumentation.runOnMainSync(task);
     25         try {
     26             return task.get();
     27         } catch (ExecutionException e) {
     28             // Unwrap the cause of the exception and re-throw it.
     29             throw e.getCause();
     30         }
     31     }
     32 }
     33