OSDN Git Service

Adding a debug setting to enable visual indicator for GL
authorTeng-Hui Zhu <ztenghui@google.com>
Wed, 16 Feb 2011 19:25:03 +0000 (11:25 -0800)
committerTeng-Hui Zhu <ztenghui@google.com>
Wed, 16 Feb 2011 22:35:28 +0000 (14:35 -0800)
  [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

core/java/android/webkit/WebSettings.java
core/java/android/webkit/WebView.java

index 0bf0eab..71d6080 100644 (file)
@@ -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;
@@ -1191,6 +1192,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.
      * @deprecated This method has been deprecated in favor of
index 7d8289a..69e658f 100644 (file)
@@ -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);