Index: base/android/java/src/org/chromium/base/library_loader/Linker.java |
diff --git a/base/android/java/src/org/chromium/base/library_loader/Linker.java b/base/android/java/src/org/chromium/base/library_loader/Linker.java |
index e17ba6dc0de61b91f8978e22587fbce3cd7fd5c9..54a672d7f166e9b625b736beef5ec6ae0ade6bdf 100644 |
--- a/base/android/java/src/org/chromium/base/library_loader/Linker.java |
+++ b/base/android/java/src/org/chromium/base/library_loader/Linker.java |
@@ -11,6 +11,7 @@ import android.os.Parcelable; |
import android.util.Log; |
import org.chromium.base.SysUtils; |
+import org.chromium.base.ThreadUtils; |
import java.io.File; |
import java.io.FileInputStream; |
@@ -842,6 +843,29 @@ public class Linker { |
} |
/** |
+ * Move activity from the native thread to the main UI thread. |
+ * Called from native code on its own thread. Posts a callback from |
+ * the UI thread back to native code. |
+ * |
+ * @param opaque Opaque argument. |
+ */ |
+ public static void postCallbackOnMainThread(final long opaque) { |
+ ThreadUtils.postOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ nativeRunCallbackOnUiThread(opaque); |
+ } |
+ }); |
+ } |
+ |
+ /** |
+ * Native method to run callbacks on the main UI thread. |
+ * Supplied by the crazy linker and called by postCallbackOnMainThread. |
+ * @param opaque Opaque crazy linker arguments. |
+ */ |
+ private static native void nativeRunCallbackOnUiThread(long opaque); |
+ |
+ /** |
* Native method used to load a library. |
* @param library Platform specific library name (e.g. libfoo.so) |
* @param loadAddress Explicit load address, or 0 for randomized one. |