• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
InstrumentationUtils()18     private InstrumentationUtils() {
19     }
20 
runOnMainSyncAndGetResult(Instrumentation instrumentation, Callable<R> callable)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