OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 contentsQuadToRootFrame(containingView, *content); | 297 contentsQuadToRootFrame(containingView, *content); |
298 contentsQuadToRootFrame(containingView, *padding); | 298 contentsQuadToRootFrame(containingView, *padding); |
299 contentsQuadToRootFrame(containingView, *border); | 299 contentsQuadToRootFrame(containingView, *border); |
300 contentsQuadToRootFrame(containingView, *margin); | 300 contentsQuadToRootFrame(containingView, *margin); |
301 | 301 |
302 return true; | 302 return true; |
303 } | 303 } |
304 | 304 |
305 static void buildNodeHighlight(Node& node, const HighlightConfig& highlightConfi
g, Highlight* highlight) | 305 static void buildNodeHighlight(Node& node, const HighlightConfig& highlightConfi
g, Highlight* highlight) |
306 { | 306 { |
307 LayoutObject* renderer = node.renderer(); | 307 LayoutObject* renderer = node.layoutObject(); |
308 if (!renderer) | 308 if (!renderer) |
309 return; | 309 return; |
310 | 310 |
311 highlight->setDataFromConfig(highlightConfig); | 311 highlight->setDataFromConfig(highlightConfig); |
312 | 312 |
313 // LayoutSVGRoot should be highlighted through the isBox() code path, all ot
her SVG elements should just dump their absoluteQuads(). | 313 // LayoutSVGRoot should be highlighted through the isBox() code path, all ot
her SVG elements should just dump their absoluteQuads(). |
314 if (renderer->node() && renderer->node()->isSVGElement() && !renderer->isSVG
Root()) { | 314 if (renderer->node() && renderer->node()->isSVGElement() && !renderer->isSVG
Root()) { |
315 Vector<FloatQuad> quads; | 315 Vector<FloatQuad> quads; |
316 renderer->absoluteQuads(quads); | 316 renderer->absoluteQuads(quads); |
317 FrameView* containingView = renderer->frameView(); | 317 FrameView* containingView = renderer->frameView(); |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 array->addItem(quad.p2().y()); | 585 array->addItem(quad.p2().y()); |
586 array->addItem(quad.p3().x()); | 586 array->addItem(quad.p3().x()); |
587 array->addItem(quad.p3().y()); | 587 array->addItem(quad.p3().y()); |
588 array->addItem(quad.p4().x()); | 588 array->addItem(quad.p4().x()); |
589 array->addItem(quad.p4().y()); | 589 array->addItem(quad.p4().y()); |
590 return array.release(); | 590 return array.release(); |
591 } | 591 } |
592 | 592 |
593 static const ShapeOutsideInfo* shapeOutsideInfoForNode(Node* node, Shape::Displa
yPaths* paths, FloatQuad* bounds) | 593 static const ShapeOutsideInfo* shapeOutsideInfoForNode(Node* node, Shape::Displa
yPaths* paths, FloatQuad* bounds) |
594 { | 594 { |
595 LayoutObject* renderer = node->renderer(); | 595 LayoutObject* renderer = node->layoutObject(); |
596 if (!renderer || !renderer->isBox() || !toLayoutBox(renderer)->shapeOutsideI
nfo()) | 596 if (!renderer || !renderer->isBox() || !toLayoutBox(renderer)->shapeOutsideI
nfo()) |
597 return nullptr; | 597 return nullptr; |
598 | 598 |
599 FrameView* containingView = node->document().view(); | 599 FrameView* containingView = node->document().view(); |
600 LayoutBox* layoutBox = toLayoutBox(renderer); | 600 LayoutBox* layoutBox = toLayoutBox(renderer); |
601 const ShapeOutsideInfo* shapeOutsideInfo = layoutBox->shapeOutsideInfo(); | 601 const ShapeOutsideInfo* shapeOutsideInfo = layoutBox->shapeOutsideInfo(); |
602 | 602 |
603 shapeOutsideInfo->computedShape().buildDisplayPaths(*paths); | 603 shapeOutsideInfo->computedShape().buildDisplayPaths(*paths); |
604 | 604 |
605 LayoutRect shapeBounds = shapeOutsideInfo->computedShapePhysicalBoundingBox(
); | 605 LayoutRect shapeBounds = shapeOutsideInfo->computedShapePhysicalBoundingBox(
); |
(...skipping 10 matching lines...) Expand all Loading... |
616 | 616 |
617 const ShapeOutsideInfo* shapeOutsideInfo = shapeOutsideInfoForNode(node, &pa
ths, &boundsQuad); | 617 const ShapeOutsideInfo* shapeOutsideInfo = shapeOutsideInfoForNode(node, &pa
ths, &boundsQuad); |
618 if (!shapeOutsideInfo) | 618 if (!shapeOutsideInfo) |
619 return; | 619 return; |
620 | 620 |
621 if (!paths.shape.length()) { | 621 if (!paths.shape.length()) { |
622 highlight.appendQuad(boundsQuad, config.shape); | 622 highlight.appendQuad(boundsQuad, config.shape); |
623 return; | 623 return; |
624 } | 624 } |
625 | 625 |
626 highlight.appendPath(ShapePathBuilder::buildPath(*node->document().view(), *
node->renderer(), *shapeOutsideInfo, paths.shape), config.shape, Color::transpar
ent); | 626 highlight.appendPath(ShapePathBuilder::buildPath(*node->document().view(), *
node->layoutObject(), *shapeOutsideInfo, paths.shape), config.shape, Color::tran
sparent); |
627 if (paths.marginShape.length()) | 627 if (paths.marginShape.length()) |
628 highlight.appendPath(ShapePathBuilder::buildPath(*node->document().view(
), *node->renderer(), *shapeOutsideInfo, paths.marginShape), config.shapeMargin,
Color::transparent); | 628 highlight.appendPath(ShapePathBuilder::buildPath(*node->document().view(
), *node->layoutObject(), *shapeOutsideInfo, paths.marginShape), config.shapeMar
gin, Color::transparent); |
629 } | 629 } |
630 | 630 |
631 PassRefPtr<JSONObject> buildElementInfo(Element* element) | 631 PassRefPtr<JSONObject> buildElementInfo(Element* element) |
632 { | 632 { |
633 RefPtr<JSONObject> elementInfo = JSONObject::create(); | 633 RefPtr<JSONObject> elementInfo = JSONObject::create(); |
634 Element* realElement = element; | 634 Element* realElement = element; |
635 PseudoElement* pseudoElement = nullptr; | 635 PseudoElement* pseudoElement = nullptr; |
636 if (element->isPseudoElement()) { | 636 if (element->isPseudoElement()) { |
637 pseudoElement = toPseudoElement(element); | 637 pseudoElement = toPseudoElement(element); |
638 realElement = element->parentOrShadowHostElement(); | 638 realElement = element->parentOrShadowHostElement(); |
(...skipping 16 matching lines...) Expand all Loading... |
655 } | 655 } |
656 if (pseudoElement) { | 656 if (pseudoElement) { |
657 if (pseudoElement->pseudoId() == BEFORE) | 657 if (pseudoElement->pseudoId() == BEFORE) |
658 classNames.appendLiteral("::before"); | 658 classNames.appendLiteral("::before"); |
659 else if (pseudoElement->pseudoId() == AFTER) | 659 else if (pseudoElement->pseudoId() == AFTER) |
660 classNames.appendLiteral("::after"); | 660 classNames.appendLiteral("::after"); |
661 } | 661 } |
662 if (!classNames.isEmpty()) | 662 if (!classNames.isEmpty()) |
663 elementInfo->setString("className", classNames.toString()); | 663 elementInfo->setString("className", classNames.toString()); |
664 | 664 |
665 LayoutObject* renderer = element->renderer(); | 665 LayoutObject* renderer = element->layoutObject(); |
666 FrameView* containingView = element->document().view(); | 666 FrameView* containingView = element->document().view(); |
667 if (!renderer || !containingView) | 667 if (!renderer || !containingView) |
668 return elementInfo; | 668 return elementInfo; |
669 | 669 |
670 // Render the getBoundingClientRect() data in the tooltip | 670 // Render the getBoundingClientRect() data in the tooltip |
671 // to be consistent with the rulers (see http://crbug.com/262338). | 671 // to be consistent with the rulers (see http://crbug.com/262338). |
672 RefPtrWillBeRawPtr<ClientRect> boundingBox = element->getBoundingClientRect(
); | 672 RefPtrWillBeRawPtr<ClientRect> boundingBox = element->getBoundingClientRect(
); |
673 elementInfo->setString("nodeWidth", String::number(boundingBox->width())); | 673 elementInfo->setString("nodeWidth", String::number(boundingBox->width())); |
674 elementInfo->setString("nodeHeight", String::number(boundingBox->height())); | 674 elementInfo->setString("nodeHeight", String::number(boundingBox->height())); |
675 | 675 |
676 return elementInfo; | 676 return elementInfo; |
677 } | 677 } |
678 | 678 |
679 void InspectorOverlay::drawNodeHighlight() | 679 void InspectorOverlay::drawNodeHighlight() |
680 { | 680 { |
681 if (!m_highlightNode) | 681 if (!m_highlightNode) |
682 return; | 682 return; |
683 | 683 |
684 Highlight highlight; | 684 Highlight highlight; |
685 appendPathsForShapeOutside(highlight, m_nodeHighlightConfig, m_highlightNode
.get()); | 685 appendPathsForShapeOutside(highlight, m_nodeHighlightConfig, m_highlightNode
.get()); |
686 buildNodeHighlight(*m_highlightNode, m_nodeHighlightConfig, &highlight); | 686 buildNodeHighlight(*m_highlightNode, m_nodeHighlightConfig, &highlight); |
687 | 687 |
688 if (m_eventTargetNode && m_eventTargetNode->renderer()) { | 688 if (m_eventTargetNode && m_eventTargetNode->layoutObject()) { |
689 FloatQuad border, unused; | 689 FloatQuad border, unused; |
690 if (buildNodeQuads(m_eventTargetNode->renderer(), &unused, &unused, &bor
der, &unused)) | 690 if (buildNodeQuads(m_eventTargetNode->layoutObject(), &unused, &unused,
&border, &unused)) |
691 highlight.appendQuad(border, m_nodeHighlightConfig.eventTarget); | 691 highlight.appendQuad(border, m_nodeHighlightConfig.eventTarget); |
692 } | 692 } |
693 | 693 |
694 if (m_highlightNode->isElementNode() && !m_omitTooltip && m_nodeHighlightCon
fig.showInfo && m_highlightNode->renderer() && m_highlightNode->document().frame
()) | 694 if (m_highlightNode->isElementNode() && !m_omitTooltip && m_nodeHighlightCon
fig.showInfo && m_highlightNode->layoutObject() && m_highlightNode->document().f
rame()) |
695 highlight.setElementInfo(buildElementInfo(toElement(m_highlightNode.get(
)))); | 695 highlight.setElementInfo(buildElementInfo(toElement(m_highlightNode.get(
)))); |
696 | 696 |
697 evaluateInOverlay("drawHighlight", highlight.asJSONObject()); | 697 evaluateInOverlay("drawHighlight", highlight.asJSONObject()); |
698 } | 698 } |
699 | 699 |
700 void InspectorOverlay::drawQuadHighlight() | 700 void InspectorOverlay::drawQuadHighlight() |
701 { | 701 { |
702 if (!m_highlightQuad) | 702 if (!m_highlightQuad) |
703 return; | 703 return; |
704 | 704 |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 } | 813 } |
814 | 814 |
815 void InspectorOverlay::onTimer(Timer<InspectorOverlay>*) | 815 void InspectorOverlay::onTimer(Timer<InspectorOverlay>*) |
816 { | 816 { |
817 m_drawViewSize = false; | 817 m_drawViewSize = false; |
818 update(); | 818 update(); |
819 } | 819 } |
820 | 820 |
821 bool InspectorOverlay::getBoxModel(Node* node, RefPtr<TypeBuilder::DOM::BoxModel
>& model) | 821 bool InspectorOverlay::getBoxModel(Node* node, RefPtr<TypeBuilder::DOM::BoxModel
>& model) |
822 { | 822 { |
823 LayoutObject* renderer = node->renderer(); | 823 LayoutObject* renderer = node->layoutObject(); |
824 FrameView* view = node->document().view(); | 824 FrameView* view = node->document().view(); |
825 if (!renderer || !view) | 825 if (!renderer || !view) |
826 return false; | 826 return false; |
827 | 827 |
828 FloatQuad content, padding, border, margin; | 828 FloatQuad content, padding, border, margin; |
829 if (!buildNodeQuads(node->renderer(), &content, &padding, &border, &margin)) | 829 if (!buildNodeQuads(node->layoutObject(), &content, &padding, &border, &marg
in)) |
830 return false; | 830 return false; |
831 | 831 |
832 IntRect boundingBox = view->contentsToRootFrame(renderer->absoluteBoundingBo
xRect()); | 832 IntRect boundingBox = view->contentsToRootFrame(renderer->absoluteBoundingBo
xRect()); |
833 LayoutBoxModelObject* modelObject = renderer->isBoxModelObject() ? toLayoutB
oxModelObject(renderer) : nullptr; | 833 LayoutBoxModelObject* modelObject = renderer->isBoxModelObject() ? toLayoutB
oxModelObject(renderer) : nullptr; |
834 | 834 |
835 model = TypeBuilder::DOM::BoxModel::create() | 835 model = TypeBuilder::DOM::BoxModel::create() |
836 .setContent(buildArrayForQuad(content)) | 836 .setContent(buildArrayForQuad(content)) |
837 .setPadding(buildArrayForQuad(padding)) | 837 .setPadding(buildArrayForQuad(padding)) |
838 .setBorder(buildArrayForQuad(border)) | 838 .setBorder(buildArrayForQuad(border)) |
839 .setMargin(buildArrayForQuad(margin)) | 839 .setMargin(buildArrayForQuad(margin)) |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
888 hideHighlight(); | 888 hideHighlight(); |
889 } | 889 } |
890 | 890 |
891 void InspectorOverlay::startedRecordingProfile() | 891 void InspectorOverlay::startedRecordingProfile() |
892 { | 892 { |
893 if (!m_activeProfilerCount++) | 893 if (!m_activeProfilerCount++) |
894 freePage(); | 894 freePage(); |
895 } | 895 } |
896 | 896 |
897 } // namespace blink | 897 } // namespace blink |
OLD | NEW |