| 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();
|
|
|