Title: [147566] trunk/Source/WebCore
Revision
147566
Author
grao...@apple.com
Date
2013-04-03 10:30:32 -0700 (Wed, 03 Apr 2013)

Log Message

Web Inspector: DOM.highlightRect() and DOM.highlightQuad() should allow for page coordinates
https://bugs.webkit.org/show_bug.cgi?id=113869

Add a new "usePageCoordinates" parameter to DOM.highlightRect() and DOM.highlightQuad()
allowing to specify that the rect or quad to highlight should be converted to page
coordinates instead of using the default viewport coordinates.

Reviewed by Timothy Hatcher.

* inspector/Inspector.json:
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::highlightRect):
(WebCore::InspectorDOMAgent::highlightQuad):
(WebCore::InspectorDOMAgent::innerHighlightQuad):
Store the "usePageCoordinates" parameter obtained from the protocol calls onto the
highlight configuration object so that it may be used within the InspectorOverlay.

* inspector/InspectorDOMAgent.h:
(InspectorDOMAgent):
* inspector/InspectorOverlay.cpp:
(WebCore::InspectorOverlay::highlightQuad):
Check the highlight configuration for the "usePageCoordinates" parameter and
apply the inverse of the page's scroll offset to the quad if it's true.

* inspector/InspectorOverlay.h:
(HighlightConfig):
(WebCore::Highlight::setDataFromConfig):
(Highlight):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (147565 => 147566)


--- trunk/Source/WebCore/ChangeLog	2013-04-03 16:43:32 UTC (rev 147565)
+++ trunk/Source/WebCore/ChangeLog	2013-04-03 17:30:32 UTC (rev 147566)
@@ -1,3 +1,34 @@
+2013-04-03  Antoine Quint  <grao...@apple.com>
+
+        Web Inspector: DOM.highlightRect() and DOM.highlightQuad() should allow for page coordinates
+        https://bugs.webkit.org/show_bug.cgi?id=113869
+
+        Add a new "usePageCoordinates" parameter to DOM.highlightRect() and DOM.highlightQuad()
+        allowing to specify that the rect or quad to highlight should be converted to page
+        coordinates instead of using the default viewport coordinates.
+
+        Reviewed by Timothy Hatcher.
+
+        * inspector/Inspector.json:
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::highlightRect):
+        (WebCore::InspectorDOMAgent::highlightQuad):
+        (WebCore::InspectorDOMAgent::innerHighlightQuad):
+        Store the "usePageCoordinates" parameter obtained from the protocol calls onto the
+        highlight configuration object so that it may be used within the InspectorOverlay.
+
+        * inspector/InspectorDOMAgent.h:
+        (InspectorDOMAgent):
+        * inspector/InspectorOverlay.cpp:
+        (WebCore::InspectorOverlay::highlightQuad):
+        Check the highlight configuration for the "usePageCoordinates" parameter and
+        apply the inverse of the page's scroll offset to the quad if it's true.
+
+        * inspector/InspectorOverlay.h:
+        (HighlightConfig):
+        (WebCore::Highlight::setDataFromConfig):
+        (Highlight):
+
 2013-04-03  Kangil Han  <kangil....@samsung.com>
 
         Add omitted reference operator of VisiblePosition in AccessibilityObject

Modified: trunk/Source/WebCore/inspector/Inspector.json (147565 => 147566)


--- trunk/Source/WebCore/inspector/Inspector.json	2013-04-03 16:43:32 UTC (rev 147565)
+++ trunk/Source/WebCore/inspector/Inspector.json	2013-04-03 17:30:32 UTC (rev 147566)
@@ -1975,7 +1975,8 @@
                     { "name": "width", "type": "integer", "description": "Rectangle width" },
                     { "name": "height", "type": "integer", "description": "Rectangle height" },
                     { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." },
-                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }
+                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." },
+                    { "name": "usePageCoordinates", "type": "boolean", "optional": true, "description": "Indicates whether the provided parameters are in page coordinates or in viewport coordinates (the default)." }
                 ],
                 "description": "Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport."
             },
@@ -1984,7 +1985,8 @@
                 "parameters": [
                     { "name": "quad", "$ref": "Quad", "description": "Quad to highlight" },
                     { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." },
-                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }
+                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." },
+                    { "name": "usePageCoordinates", "type": "boolean", "optional": true, "description": "Indicates whether the provided parameters are in page coordinates or in viewport coordinates (the default)." }
                 ],
                 "description": "Highlights given quad. Coordinates are absolute with respect to the main frame viewport."
             },

Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (147565 => 147566)


--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp	2013-04-03 16:43:32 UTC (rev 147565)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp	2013-04-03 17:30:32 UTC (rev 147566)
@@ -1155,27 +1155,28 @@
     setSearchingForNode(errorString, enabled, highlightConfig ? highlightConfig->get() : 0);
 }
 
-void InspectorDOMAgent::highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor)
+void InspectorDOMAgent::highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor, const bool* usePageCoordinates)
 {
     OwnPtr<FloatQuad> quad = adoptPtr(new FloatQuad(FloatRect(x, y, width, height)));
-    innerHighlightQuad(quad.release(), color, outlineColor);
+    innerHighlightQuad(quad.release(), color, outlineColor, usePageCoordinates);
 }
 
-void InspectorDOMAgent::highlightQuad(ErrorString* errorString, const RefPtr<InspectorArray>& quadArray, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor)
+void InspectorDOMAgent::highlightQuad(ErrorString* errorString, const RefPtr<InspectorArray>& quadArray, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor, const bool* usePageCoordinates)
 {
     OwnPtr<FloatQuad> quad = adoptPtr(new FloatQuad());
     if (!parseQuad(quadArray, quad.get())) {
         *errorString = "Invalid Quad format";
         return;
     }
-    innerHighlightQuad(quad.release(), color, outlineColor);
+    innerHighlightQuad(quad.release(), color, outlineColor, usePageCoordinates);
 }
 
-void InspectorDOMAgent::innerHighlightQuad(PassOwnPtr<FloatQuad> quad, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor)
+void InspectorDOMAgent::innerHighlightQuad(PassOwnPtr<FloatQuad> quad, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor, const bool* usePageCoordinates)
 {
     OwnPtr<HighlightConfig> highlightConfig = adoptPtr(new HighlightConfig());
     highlightConfig->content = parseColor(color);
     highlightConfig->contentOutline = parseColor(outlineColor);
+    highlightConfig->usePageCoordinates = *usePageCoordinates;
     m_overlay->highlightQuad(quad, *highlightConfig);
 }
 

Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.h (147565 => 147566)


--- trunk/Source/WebCore/inspector/InspectorDOMAgent.h	2013-04-03 16:43:32 UTC (rev 147565)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.h	2013-04-03 17:30:32 UTC (rev 147566)
@@ -145,8 +145,8 @@
     virtual void pushNodeByBackendIdToFrontend(ErrorString*, BackendNodeId, int* nodeId);
     virtual void releaseBackendNodeIds(ErrorString*, const String& nodeGroup);
     virtual void hideHighlight(ErrorString*);
-    virtual void highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor);
-    virtual void highlightQuad(ErrorString*, const RefPtr<InspectorArray>& quad, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor);
+    virtual void highlightRect(ErrorString*, int x, int y, int width, int height, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor, const bool* usePageCoordinates);
+    virtual void highlightQuad(ErrorString*, const RefPtr<InspectorArray>& quad, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor, const bool* usePageCoordinates);
     virtual void highlightNode(ErrorString*, const RefPtr<InspectorObject>& highlightConfig, const int* nodeId, const String* objectId);
     virtual void highlightFrame(ErrorString*, const String& frameId, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor);
 
@@ -241,7 +241,7 @@
 
     void discardBindings();
 
-    void innerHighlightQuad(PassOwnPtr<FloatQuad>, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor);
+    void innerHighlightQuad(PassOwnPtr<FloatQuad>, const RefPtr<InspectorObject>* color, const RefPtr<InspectorObject>* outlineColor, const bool* usePageCoordinates);
 
     InspectorPageAgent* m_pageAgent;
     InjectedScriptManager* m_injectedScriptManager;

Modified: trunk/Source/WebCore/inspector/InspectorOverlay.cpp (147565 => 147566)


--- trunk/Source/WebCore/inspector/InspectorOverlay.cpp	2013-04-03 16:43:32 UTC (rev 147565)
+++ trunk/Source/WebCore/inspector/InspectorOverlay.cpp	2013-04-03 17:30:32 UTC (rev 147566)
@@ -259,6 +259,9 @@
 
 void InspectorOverlay::highlightQuad(PassOwnPtr<FloatQuad> quad, const HighlightConfig& highlightConfig)
 {
+    if (m_quadHighlightConfig.usePageCoordinates)
+        *quad -= m_page->mainFrame()->view()->scrollOffset();
+
     m_quadHighlightConfig = highlightConfig;
     m_highlightQuad = quad;
     update();

Modified: trunk/Source/WebCore/inspector/InspectorOverlay.h (147565 => 147566)


--- trunk/Source/WebCore/inspector/InspectorOverlay.h	2013-04-03 16:43:32 UTC (rev 147565)
+++ trunk/Source/WebCore/inspector/InspectorOverlay.h	2013-04-03 17:30:32 UTC (rev 147566)
@@ -59,6 +59,7 @@
     Color margin;
     bool showInfo;
     bool showRulers;
+    bool usePageCoordinates;
 };
 
 enum HighlightType {
@@ -81,6 +82,7 @@
         borderColor = highlightConfig.border;
         marginColor = highlightConfig.margin;
         showRulers = highlightConfig.showRulers;
+        usePageCoordinates = highlightConfig.usePageCoordinates;
     }
 
     Color contentColor;
@@ -94,6 +96,7 @@
     HighlightType type;
     Vector<FloatQuad> quads;
     bool showRulers;
+    bool usePageCoordinates;
 };
 
 class InspectorOverlay {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to