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

Commit 35e71979 authored by Patrick Scott's avatar Patrick Scott Committed by Jean-Baptiste Queru
Browse files

Fix a monkey crash when the new WebView is destroyed.

Grab the WebViewCore immediately so that if the Tab is destroyed, we have the
old WebViewCore object and can return the BrowserFrame.

Bug: 2733004
Change-Id: Ic3e4c5417f2165f412f60f05aea3ed403d8cecfd
parent f3ee6f87
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -785,11 +785,7 @@ class BrowserFrame extends Handler {
     * @return The BrowserFrame object stored in the new WebView.
     */
    private BrowserFrame createWindow(boolean dialog, boolean userGesture) {
        WebView w = mCallbackProxy.createWindow(dialog, userGesture);
        if (w != null) {
            return w.getWebViewCore().getBrowserFrame();
        }
        return null;
        return mCallbackProxy.createWindow(dialog, userGesture);
    }

    /**
+9 −3
Original line number Diff line number Diff line
@@ -1098,7 +1098,7 @@ class CallbackProxy extends Handler {
        }
    }

    public WebView createWindow(boolean dialog, boolean userGesture) {
    public BrowserFrame createWindow(boolean dialog, boolean userGesture) {
        // Do an unsynchronized quick check to avoid posting if no callback has
        // been set.
        if (mWebChromeClient == null) {
@@ -1122,9 +1122,15 @@ class CallbackProxy extends Handler {

        WebView w = transport.getWebView();
        if (w != null) {
            w.getWebViewCore().initializeSubwindow();
            WebViewCore core = w.getWebViewCore();
            // If WebView.destroy() has been called, core may be null.  Skip
            // initialization in that case and return null.
            if (core != null) {
                core.initializeSubwindow();
                return core.getBrowserFrame();
            }
        return w;
        }
        return null;
    }

    public void onRequestFocus() {