diff options
| author | Steve Block <steveblock@google.com> | 2011-05-17 19:05:03 +0100 |
|---|---|---|
| committer | Steve Block <steveblock@google.com> | 2011-05-23 14:45:02 +0100 |
| commit | 08d584cd1cba05284ccd2d0ea128c297624f0c47 (patch) | |
| tree | 1c1101362089634c01957c90378353bcb6829158 /core/java/android | |
| parent | 43124d22142f708b39e79fb0d91258e6234b5f26 (diff) | |
| download | frameworks_base-08d584cd1cba05284ccd2d0ea128c297624f0c47.zip frameworks_base-08d584cd1cba05284ccd2d0ea128c297624f0c47.tar.gz frameworks_base-08d584cd1cba05284ccd2d0ea128c297624f0c47.tar.bz2 | |
Log a StrictMode violation when WebView methods are called on the wrong thread
Bug: 4373919
Change-Id: I1f526e033ce316e51b3de7fe4ac88119fbc65b4e
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/os/StrictMode.java | 7 | ||||
| -rw-r--r-- | core/java/android/webkit/WebView.java | 19 |
2 files changed, 17 insertions, 9 deletions
diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java index 1375a29..01c640a 100644 --- a/core/java/android/os/StrictMode.java +++ b/core/java/android/os/StrictMode.java @@ -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>(); diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index f774803..61a69ca 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -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); } } |
