Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 560e97f8 authored by Steve Block's avatar Steve Block Committed by Android (Google) Code Review
Browse files

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

parents f4232e00 08d584cd
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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>();

+10 −9
Original line number Diff line number Diff line
@@ -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 '" +
        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.");
            } catch (RuntimeException e) {
                Log.e(LOGTAG, Log.getStackTraceString(e));
            }
            Log.e(LOGTAG, Log.getStackTraceString(exception));
            StrictMode.onWebViewMethodCalledOnWrongThread(exception);
        }
    }