Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Unified Diff: Source/core/inspector/InspectorHighlight.cpp

Issue 1024423002: Turn the InspectorHighlight builder into a stack allocated object. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/inspector/InspectorHighlight.h ('k') | Source/web/InspectorOverlayImpl.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/InspectorHighlight.cpp
diff --git a/Source/core/inspector/InspectorHighlight.cpp b/Source/core/inspector/InspectorHighlight.cpp
index 70089e62bf7fd4092ecc012a7f9de39e8c20e116..f3df3e3a7070d1586e1e310db007312ac5663317 100644
--- a/Source/core/inspector/InspectorHighlight.cpp
+++ b/Source/core/inspector/InspectorHighlight.cpp
@@ -220,53 +220,6 @@ bool buildNodeQuads(LayoutObject* renderer, FloatQuad* content, FloatQuad* paddi
return true;
}
-void appendPathsForShapeOutside(InspectorHighlight* highlight, const InspectorHighlightConfig& config, Node* node)
-{
- Shape::DisplayPaths paths;
- FloatQuad boundsQuad;
-
- const ShapeOutsideInfo* shapeOutsideInfo = shapeOutsideInfoForNode(node, &paths, &boundsQuad);
- if (!shapeOutsideInfo)
- return;
-
- if (!paths.shape.length()) {
- highlight->appendQuad(boundsQuad, config.shape);
- return;
- }
-
- highlight->appendPath(ShapePathBuilder::buildPath(*node->document().view(), *node->layoutObject(), *shapeOutsideInfo, paths.shape), config.shape, Color::transparent);
- if (paths.marginShape.length())
- highlight->appendPath(ShapePathBuilder::buildPath(*node->document().view(), *node->layoutObject(), *shapeOutsideInfo, paths.marginShape), config.shapeMargin, Color::transparent);
-}
-
-void appendNodeHighlight(InspectorHighlight* highlight, const InspectorHighlightConfig& highlightConfig, Node* node)
-{
- LayoutObject* renderer = node->layoutObject();
- if (!renderer)
- return;
-
- // LayoutSVGRoot should be highlighted through the isBox() code path, all other SVG elements should just dump their absoluteQuads().
- if (renderer->node() && renderer->node()->isSVGElement() && !renderer->isSVGRoot()) {
- Vector<FloatQuad> quads;
- renderer->absoluteQuads(quads);
- FrameView* containingView = renderer->frameView();
- for (size_t i = 0; i < quads.size(); ++i) {
- if (containingView)
- contentsQuadToRootFrame(containingView, quads[i]);
- highlight->appendQuad(quads[i], highlightConfig.content, highlightConfig.contentOutline);
- }
- return;
- }
-
- FloatQuad content, padding, border, margin;
- if (!buildNodeQuads(renderer, &content, &padding, &border, &margin))
- return;
- highlight->appendQuad(content, highlightConfig.content, highlightConfig.contentOutline);
- highlight->appendQuad(padding, highlightConfig.padding);
- highlight->appendQuad(border, highlightConfig.border);
- highlight->appendQuad(margin, highlightConfig.margin);
-}
-
PassRefPtr<JSONObject> buildElementInfo(Element* element)
{
RefPtr<JSONObject> elementInfo = JSONObject::create();
@@ -318,27 +271,25 @@ PassRefPtr<JSONObject> buildElementInfo(Element* element)
} // namespace
InspectorHighlight::InspectorHighlight()
- : m_showRulers(false)
- , m_showExtensionLines()
- , m_highlightPaths(JSONArray::create())
+ : m_highlightPaths(JSONArray::create())
+ , m_showRulers(false)
+ , m_showExtensionLines(false)
{
}
-InspectorHighlight::~InspectorHighlight()
+InspectorHighlight::InspectorHighlight(Node* node, const InspectorHighlightConfig& highlightConfig, bool appendElementInfo)
+ : m_highlightPaths(JSONArray::create())
+ , m_showRulers(highlightConfig.showRulers)
+ , m_showExtensionLines(highlightConfig.showExtensionLines)
{
+ appendPathsForShapeOutside(node, highlightConfig);
+ appendNodeHighlight(node, highlightConfig);
+ if (appendElementInfo && node->isElementNode())
+ m_elementInfo = buildElementInfo(toElement(node));
}
-// static
-PassOwnPtrWillBeRawPtr<InspectorHighlight> InspectorHighlight::create(Node* node, const InspectorHighlightConfig& highlightConfig, bool appendElementInfo)
+InspectorHighlight::~InspectorHighlight()
{
- InspectorHighlight* highlight = new InspectorHighlight();
- highlight->m_showRulers = highlightConfig.showRulers;
- highlight->m_showExtensionLines = highlightConfig.showExtensionLines;
- appendPathsForShapeOutside(highlight, highlightConfig, node);
- appendNodeHighlight(highlight, highlightConfig, node);
- if (appendElementInfo && node->isElementNode())
- highlight->m_elementInfo = buildElementInfo(toElement(node));
- return adoptPtrWillBeNoop(highlight);
}
void InspectorHighlight::appendQuad(const FloatQuad& quad, const Color& fillColor, const Color& outlineColor)
@@ -368,6 +319,53 @@ void InspectorHighlight::appendEventTargetQuads(Node* eventTargetNode, const Ins
}
}
+void InspectorHighlight::appendPathsForShapeOutside(Node* node, const InspectorHighlightConfig& config)
+{
+ Shape::DisplayPaths paths;
+ FloatQuad boundsQuad;
+
+ const ShapeOutsideInfo* shapeOutsideInfo = shapeOutsideInfoForNode(node, &paths, &boundsQuad);
+ if (!shapeOutsideInfo)
+ return;
+
+ if (!paths.shape.length()) {
+ appendQuad(boundsQuad, config.shape);
+ return;
+ }
+
+ appendPath(ShapePathBuilder::buildPath(*node->document().view(), *node->layoutObject(), *shapeOutsideInfo, paths.shape), config.shape, Color::transparent);
+ if (paths.marginShape.length())
+ appendPath(ShapePathBuilder::buildPath(*node->document().view(), *node->layoutObject(), *shapeOutsideInfo, paths.marginShape), config.shapeMargin, Color::transparent);
+}
+
+void InspectorHighlight::appendNodeHighlight(Node* node, const InspectorHighlightConfig& highlightConfig)
+{
+ LayoutObject* renderer = node->layoutObject();
+ if (!renderer)
+ return;
+
+ // LayoutSVGRoot should be highlighted through the isBox() code path, all other SVG elements should just dump their absoluteQuads().
+ if (renderer->node() && renderer->node()->isSVGElement() && !renderer->isSVGRoot()) {
+ Vector<FloatQuad> quads;
+ renderer->absoluteQuads(quads);
+ FrameView* containingView = renderer->frameView();
+ for (size_t i = 0; i < quads.size(); ++i) {
+ if (containingView)
+ contentsQuadToRootFrame(containingView, quads[i]);
+ appendQuad(quads[i], highlightConfig.content, highlightConfig.contentOutline);
+ }
+ return;
+ }
+
+ FloatQuad content, padding, border, margin;
+ if (!buildNodeQuads(renderer, &content, &padding, &border, &margin))
+ return;
+ appendQuad(content, highlightConfig.content, highlightConfig.contentOutline);
+ appendQuad(padding, highlightConfig.padding);
+ appendQuad(border, highlightConfig.border);
+ appendQuad(margin, highlightConfig.margin);
+}
+
PassRefPtr<JSONObject> InspectorHighlight::asJSONObject() const
{
RefPtr<JSONObject> object = JSONObject::create();
« no previous file with comments | « Source/core/inspector/InspectorHighlight.h ('k') | Source/web/InspectorOverlayImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698