Log a StrictMode violation when WebView methods are called on the wrong thread
Bug: 4373919 Change-Id: I1f526e033ce316e51b3de7fe4ac88119fbc65b4e
This commit is contained in:
@@ -1481,6 +1481,13 @@ public final class StrictMode {
|
||||
onVmPolicyViolation(message, originStack);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public static void onWebViewMethodCalledOnWrongThread(Throwable originStack) {
|
||||
onVmPolicyViolation(null, originStack);
|
||||
}
|
||||
|
||||
// Map from VM violation fingerprint to uptime millis.
|
||||
private static final HashMap<Integer, Long> sLastVmViolationTime = new HashMap<Integer, Long>();
|
||||
|
||||
|
||||
@@ -54,7 +54,9 @@ import android.net.http.SslCertificate;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.os.StrictMode;
|
||||
import android.provider.Settings;
|
||||
import android.speech.tts.TextToSpeech;
|
||||
import android.text.Selection;
|
||||
@@ -8933,15 +8935,14 @@ public class WebView extends AbsoluteLayout
|
||||
}
|
||||
|
||||
private static void checkThread() {
|
||||
if (!"main".equals(Thread.currentThread().getName())) {
|
||||
try {
|
||||
throw new RuntimeException("A WebView method was called on thread '" +
|
||||
Thread.currentThread().getName() + "'. " +
|
||||
"All WebView methods must be called on the UI thread. " +
|
||||
"Future versions of WebView may not support use on other threads.");
|
||||
} catch (RuntimeException e) {
|
||||
Log.e(LOGTAG, Log.getStackTraceString(e));
|
||||
}
|
||||
if (Looper.myLooper() != Looper.getMainLooper()) {
|
||||
RuntimeException exception = new RuntimeException(
|
||||
"A WebView method was called on thread '" +
|
||||
Thread.currentThread().getName() + "'. " +
|
||||
"All WebView methods must be called on the UI thread. " +
|
||||
"Future versions of WebView may not support use on other threads.");
|
||||
Log.e(LOGTAG, Log.getStackTraceString(exception));
|
||||
StrictMode.onWebViewMethodCalledOnWrongThread(exception);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user