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

Commit da7378e8 authored by Teng-Hui Zhu's avatar Teng-Hui Zhu
Browse files

Adding a debug setting to enable visual indicator for GL

  [This is the WebView part]
  The idea is to turn on the visual indicator without building the code.

  The implementation included:
  1. Setup the UI on browser side to check whether or not this is enabled.
  2. Transfer the info from browser setting to web setting.
  3. Send this info down from WebView to webkit.
  4. In the webkit, we save this info in TilesManager.
  5. At texture generation time, we query this info to decide whether or
     not add the visual indicator on the texture.

  One design decision we made is we don't want to restart the browser for
  debugging purpose. This is better preserving the browser current activity,
  the only pitfall is that the visual indicator is NOT updated on different
  textures simultaneously.

  The corresponding browser change is: #change,97058
  The dependent webkit change is: #change,97052

bug:3458721

Change-Id: I34a0514048df61b414c3386b292f2586efbde74e
parent 6c0dc5a5
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -174,6 +174,7 @@ public class WebSettings {
    private boolean         mBlockNetworkImage = false;
    private boolean         mBlockNetworkLoads;
    private boolean         mJavaScriptEnabled = false;
    private boolean         mShowVisualIndicator = false;
    private PluginState     mPluginState = PluginState.OFF;
    private boolean         mJavaScriptCanOpenWindowsAutomatically = false;
    private boolean         mUseDoubleTree = false;
@@ -1190,6 +1191,26 @@ public class WebSettings {
        }
    }

    /**
     * Tell the WebView to show the visual indicator
     * @param flag True if the WebView should show the visual indicator
     * @hide
     */
    public synchronized void setShowVisualIndicator(boolean flag) {
        if (mShowVisualIndicator != flag) {
            mShowVisualIndicator = flag;
            postSync();
        }
    }

    /**
     * @return True if the WebView is showing the visual indicator
     * @hide
     */
    public synchronized boolean getShowVisualIndicator() {
        return mShowVisualIndicator;
    }

    /**
     * Tell the WebView to enable plugins.
     * @param flag True if the WebView should load plugins.
+8 −6
Original line number Diff line number Diff line
@@ -2089,7 +2089,7 @@ public class WebView extends AbsoluteLayout
    public void clearView() {
        mContentWidth = 0;
        mContentHeight = 0;
        setBaseLayer(0, null);
        setBaseLayer(0, null, false);
        mWebViewCore.sendMessage(EventHub.CLEAR_CONTENT);
    }

@@ -3996,14 +3996,14 @@ public class WebView extends AbsoluteLayout
        }
    }

    void setBaseLayer(int layer, Rect invalRect) {
    void setBaseLayer(int layer, Rect invalRect, boolean showVisualIndciator) {
        if (mNativeClass == 0)
            return;
        if (invalRect == null) {
            Rect rect = new Rect(0, 0, mContentWidth, mContentHeight);
            nativeSetBaseLayer(layer, rect);
            nativeSetBaseLayer(layer, rect, showVisualIndciator);
        } else {
            nativeSetBaseLayer(layer, invalRect);
            nativeSetBaseLayer(layer, invalRect, showVisualIndciator);
        }
    }

@@ -7205,7 +7205,8 @@ public class WebView extends AbsoluteLayout
                case NEW_PICTURE_MSG_ID: {
                    // called for new content
                    final WebViewCore.DrawData draw = (WebViewCore.DrawData) msg.obj;
                    setBaseLayer(draw.mBaseLayer, draw.mInvalRegion.getBounds());
                    setBaseLayer(draw.mBaseLayer, draw.mInvalRegion.getBounds(),
                            getSettings().getShowVisualIndicator());
                    final Point viewSize = draw.mViewSize;
                    WebViewCore.ViewState viewState = draw.mViewState;
                    boolean isPictureAfterFirstLayout = viewState != null;
@@ -8337,7 +8338,8 @@ public class WebView extends AbsoluteLayout
    private native void     nativeSetFindIsEmpty();
    private native void     nativeSetFindIsUp(boolean isUp);
    private native void     nativeSetHeightCanMeasure(boolean measure);
    private native void     nativeSetBaseLayer(int layer, Rect invalRect);
    private native void     nativeSetBaseLayer(int layer, Rect invalRect,
            boolean showVisualIndciator);
    private native void     nativeShowCursorTimed();
    private native void     nativeReplaceBaseContent(int content);
    private native void     nativeCopyBaseContentToPicture(Picture pict);