Merge "Log a StrictMode violation when WebView methods are called on the wrong thread"

This commit is contained in:
Steve Block
2011-05-23 14:34:00 -07:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 9 deletions

View File

@@ -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>();

View File

@@ -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);
}
}