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

Side by Side Diff: Source/core/dom/Element.cpp

Issue 899163003: Move rendering/RenderObject to layout/LayoutObject. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/Element.h ('k') | Source/core/dom/ElementRareData.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Peter Kelly (pmk@post.com) 4 * (C) 2001 Peter Kelly (pmk@post.com)
5 * (C) 2001 Dirk Mueller (mueller@kde.org) 5 * (C) 2001 Dirk Mueller (mueller@kde.org)
6 * (C) 2007 David Smith (catfish.man@gmail.com) 6 * (C) 2007 David Smith (catfish.man@gmail.com)
7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved. 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc. All rights reserved.
8 * (C) 2007 Eric Seidel (eric@webkit.org) 8 * (C) 2007 Eric Seidel (eric@webkit.org)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 if (!renderer()) 474 if (!renderer())
475 return; 475 return;
476 476
477 LayoutRect bounds = boundingBox(); 477 LayoutRect bounds = boundingBox();
478 if (centerIfNeeded) 478 if (centerIfNeeded)
479 renderer()->scrollRectToVisible(bounds, ScrollAlignment::alignCenterIfNe eded, ScrollAlignment::alignCenterIfNeeded); 479 renderer()->scrollRectToVisible(bounds, ScrollAlignment::alignCenterIfNe eded, ScrollAlignment::alignCenterIfNeeded);
480 else 480 else
481 renderer()->scrollRectToVisible(bounds, ScrollAlignment::alignToEdgeIfNe eded, ScrollAlignment::alignToEdgeIfNeeded); 481 renderer()->scrollRectToVisible(bounds, ScrollAlignment::alignToEdgeIfNe eded, ScrollAlignment::alignToEdgeIfNeeded);
482 } 482 }
483 483
484 static float localZoomForRenderer(RenderObject& renderer) 484 static float localZoomForRenderer(LayoutObject& renderer)
485 { 485 {
486 // FIXME: This does the wrong thing if two opposing zooms are in effect and canceled each 486 // FIXME: This does the wrong thing if two opposing zooms are in effect and canceled each
487 // other out, but the alternative is that we'd have to crawl up the whole re nder tree every 487 // other out, but the alternative is that we'd have to crawl up the whole re nder tree every
488 // time (or store an additional bit in the RenderStyle to indicate that a zo om was specified). 488 // time (or store an additional bit in the RenderStyle to indicate that a zo om was specified).
489 float zoomFactor = 1; 489 float zoomFactor = 1;
490 if (renderer.style()->effectiveZoom() != 1) { 490 if (renderer.style()->effectiveZoom() != 1) {
491 // Need to find the nearest enclosing RenderObject that set up 491 // Need to find the nearest enclosing LayoutObject that set up
492 // a differing zoom, and then we divide our result by it to eliminate th e zoom. 492 // a differing zoom, and then we divide our result by it to eliminate th e zoom.
493 RenderObject* prev = &renderer; 493 LayoutObject* prev = &renderer;
494 for (RenderObject* curr = prev->parent(); curr; curr = curr->parent()) { 494 for (LayoutObject* curr = prev->parent(); curr; curr = curr->parent()) {
495 if (curr->style()->effectiveZoom() != prev->style()->effectiveZoom() ) { 495 if (curr->style()->effectiveZoom() != prev->style()->effectiveZoom() ) {
496 zoomFactor = prev->style()->zoom(); 496 zoomFactor = prev->style()->zoom();
497 break; 497 break;
498 } 498 }
499 prev = curr; 499 prev = curr;
500 } 500 }
501 if (prev->isRenderView()) 501 if (prev->isRenderView())
502 zoomFactor = prev->style()->zoom(); 502 zoomFactor = prev->style()->zoom();
503 } 503 }
504 return zoomFactor; 504 return zoomFactor;
505 } 505 }
506 506
507 static double adjustForLocalZoom(LayoutUnit value, RenderObject& renderer) 507 static double adjustForLocalZoom(LayoutUnit value, LayoutObject& renderer)
508 { 508 {
509 float zoomFactor = localZoomForRenderer(renderer); 509 float zoomFactor = localZoomForRenderer(renderer);
510 if (zoomFactor == 1) 510 if (zoomFactor == 1)
511 return value.toDouble(); 511 return value.toDouble();
512 return value.toDouble() / zoomFactor; 512 return value.toDouble() / zoomFactor;
513 } 513 }
514 514
515 int Element::offsetLeft() 515 int Element::offsetLeft()
516 { 516 {
517 document().updateLayoutIgnorePendingStylesheets(); 517 document().updateLayoutIgnorePendingStylesheets();
(...skipping 30 matching lines...) Expand all
548 { 548 {
549 Element* element = offsetParent(); 549 Element* element = offsetParent();
550 if (!element || !element->isInShadowTree()) 550 if (!element || !element->isInShadowTree())
551 return element; 551 return element;
552 return element->containingShadowRoot()->shouldExposeToBindings() ? element : nullptr; 552 return element->containingShadowRoot()->shouldExposeToBindings() ? element : nullptr;
553 } 553 }
554 554
555 Element* Element::offsetParent() 555 Element* Element::offsetParent()
556 { 556 {
557 document().updateLayoutIgnorePendingStylesheets(); 557 document().updateLayoutIgnorePendingStylesheets();
558 if (RenderObject* renderer = this->renderer()) 558 if (LayoutObject* renderer = this->renderer())
559 return renderer->offsetParent(); 559 return renderer->offsetParent();
560 return nullptr; 560 return nullptr;
561 } 561 }
562 562
563 int Element::clientLeft() 563 int Element::clientLeft()
564 { 564 {
565 document().updateLayoutIgnorePendingStylesheets(); 565 document().updateLayoutIgnorePendingStylesheets();
566 566
567 if (RenderBox* renderer = renderBox()) 567 if (RenderBox* renderer = renderBox())
568 return adjustLayoutUnitForAbsoluteZoom(roundToInt(renderer->clientLeft() ), *renderer); 568 return adjustLayoutUnitForAbsoluteZoom(roundToInt(renderer->clientLeft() ), *renderer);
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 PinchViewport& pinchViewport = document().page()->frameHost().pinchViewport( ); 895 PinchViewport& pinchViewport = document().page()->frameHost().pinchViewport( );
896 result = enclosingIntRect(pinchViewport.mainViewToViewportCSSPixels(result)) ; 896 result = enclosingIntRect(pinchViewport.mainViewToViewportCSSPixels(result)) ;
897 897
898 return result; 898 return result;
899 } 899 }
900 900
901 PassRefPtrWillBeRawPtr<ClientRectList> Element::getClientRects() 901 PassRefPtrWillBeRawPtr<ClientRectList> Element::getClientRects()
902 { 902 {
903 document().updateLayoutIgnorePendingStylesheets(); 903 document().updateLayoutIgnorePendingStylesheets();
904 904
905 RenderObject* elementRenderer = renderer(); 905 LayoutObject* elementRenderer = renderer();
906 if (!elementRenderer || (!elementRenderer->isBoxModelObject() && !elementRen derer->isBR())) 906 if (!elementRenderer || (!elementRenderer->isBoxModelObject() && !elementRen derer->isBR()))
907 return ClientRectList::create(); 907 return ClientRectList::create();
908 908
909 // FIXME: Handle SVG elements. 909 // FIXME: Handle SVG elements.
910 // FIXME: Handle table/inline-table with a caption. 910 // FIXME: Handle table/inline-table with a caption.
911 911
912 Vector<FloatQuad> quads; 912 Vector<FloatQuad> quads;
913 elementRenderer->absoluteQuads(quads); 913 elementRenderer->absoluteQuads(quads);
914 document().adjustFloatQuadsForScrollAndAbsoluteZoom(quads, *elementRenderer) ; 914 document().adjustFloatQuadsForScrollAndAbsoluteZoom(quads, *elementRenderer) ;
915 return ClientRectList::create(quads); 915 return ClientRectList::create(quads);
916 } 916 }
917 917
918 PassRefPtrWillBeRawPtr<ClientRect> Element::getBoundingClientRect() 918 PassRefPtrWillBeRawPtr<ClientRect> Element::getBoundingClientRect()
919 { 919 {
920 document().updateLayoutIgnorePendingStylesheets(); 920 document().updateLayoutIgnorePendingStylesheets();
921 921
922 Vector<FloatQuad> quads; 922 Vector<FloatQuad> quads;
923 RenderObject* elementRenderer = renderer(); 923 LayoutObject* elementRenderer = renderer();
924 if (elementRenderer) { 924 if (elementRenderer) {
925 if (isSVGElement() && !elementRenderer->isSVGRoot()) { 925 if (isSVGElement() && !elementRenderer->isSVGRoot()) {
926 // Get the bounding rectangle from the SVG model. 926 // Get the bounding rectangle from the SVG model.
927 SVGElement* svgElement = toSVGElement(this); 927 SVGElement* svgElement = toSVGElement(this);
928 FloatRect localRect; 928 FloatRect localRect;
929 if (svgElement->getBoundingBox(localRect)) 929 if (svgElement->getBoundingBox(localRect))
930 quads.append(elementRenderer->localToAbsoluteQuad(localRect)); 930 quads.append(elementRenderer->localToAbsoluteQuad(localRect));
931 } else if (elementRenderer->isBoxModelObject() || elementRenderer->isBR( )) { 931 } else if (elementRenderer->isBoxModelObject() || elementRenderer->isBR( )) {
932 elementRenderer->absoluteQuads(quads); 932 elementRenderer->absoluteQuads(quads);
933 } 933 }
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 const AtomicString Element::imageSourceURL() const 1315 const AtomicString Element::imageSourceURL() const
1316 { 1316 {
1317 return getAttribute(srcAttr); 1317 return getAttribute(srcAttr);
1318 } 1318 }
1319 1319
1320 bool Element::rendererIsNeeded(const RenderStyle& style) 1320 bool Element::rendererIsNeeded(const RenderStyle& style)
1321 { 1321 {
1322 return style.display() != NONE; 1322 return style.display() != NONE;
1323 } 1323 }
1324 1324
1325 RenderObject* Element::createRenderer(const RenderStyle& style) 1325 LayoutObject* Element::createRenderer(const RenderStyle& style)
1326 { 1326 {
1327 return RenderObject::createObject(this, style); 1327 return LayoutObject::createObject(this, style);
1328 } 1328 }
1329 1329
1330 Node::InsertionNotificationRequest Element::insertedInto(ContainerNode* insertio nPoint) 1330 Node::InsertionNotificationRequest Element::insertedInto(ContainerNode* insertio nPoint)
1331 { 1331 {
1332 // need to do superclass processing first so inDocument() is true 1332 // need to do superclass processing first so inDocument() is true
1333 // by the time we reach updateId 1333 // by the time we reach updateId
1334 ContainerNode::insertedInto(insertionPoint); 1334 ContainerNode::insertedInto(insertionPoint);
1335 1335
1336 if (containsFullScreenElement() && parentElement() && !parentElement()->cont ainsFullScreenElement()) 1336 if (containsFullScreenElement() && parentElement() && !parentElement()->cont ainsFullScreenElement())
1337 setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(true); 1337 setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(true);
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1516 newPseudoStyle = renderer()->getUncachedPseudoStyle(PseudoStyleReque st(pseudoId), newStyle, newStyle); 1516 newPseudoStyle = renderer()->getUncachedPseudoStyle(PseudoStyleReque st(pseudoId), newStyle, newStyle);
1517 if (!newPseudoStyle) 1517 if (!newPseudoStyle)
1518 return true; 1518 return true;
1519 if (*newPseudoStyle != *pseudoStyleCache->at(i)) { 1519 if (*newPseudoStyle != *pseudoStyleCache->at(i)) {
1520 if (pseudoId < FIRST_INTERNAL_PSEUDOID) 1520 if (pseudoId < FIRST_INTERNAL_PSEUDOID)
1521 newStyle->setHasPseudoStyle(pseudoId); 1521 newStyle->setHasPseudoStyle(pseudoId);
1522 newStyle->addCachedPseudoStyle(newPseudoStyle); 1522 newStyle->addCachedPseudoStyle(newPseudoStyle);
1523 if (pseudoId == FIRST_LINE || pseudoId == FIRST_LINE_INHERITED) { 1523 if (pseudoId == FIRST_LINE || pseudoId == FIRST_LINE_INHERITED) {
1524 // FIXME: We should do an actual diff to determine whether a rep aint vs. layout 1524 // FIXME: We should do an actual diff to determine whether a rep aint vs. layout
1525 // is needed, but for now just assume a layout will be required. The diff code 1525 // is needed, but for now just assume a layout will be required. The diff code
1526 // in RenderObject::setStyle would need to be factored out so th at it could be reused. 1526 // in LayoutObject::setStyle would need to be factored out so th at it could be reused.
1527 renderer()->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalid ation(); 1527 renderer()->setNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalid ation();
1528 } 1528 }
1529 return true; 1529 return true;
1530 } 1530 }
1531 } 1531 }
1532 return false; 1532 return false;
1533 } 1533 }
1534 1534
1535 PassRefPtr<RenderStyle> Element::styleForRenderer() 1535 PassRefPtr<RenderStyle> Element::styleForRenderer()
1536 { 1536 {
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1648 if (rendererWillChange || renderer()) 1648 if (rendererWillChange || renderer())
1649 return Reattach; 1649 return Reattach;
1650 return ReattachNoRenderer; 1650 return ReattachNoRenderer;
1651 } 1651 }
1652 1652
1653 ASSERT(oldStyle); 1653 ASSERT(oldStyle);
1654 1654
1655 if (localChange != NoChange) 1655 if (localChange != NoChange)
1656 updateCallbackSelectors(oldStyle.get(), newStyle.get()); 1656 updateCallbackSelectors(oldStyle.get(), newStyle.get());
1657 1657
1658 if (RenderObject* renderer = this->renderer()) { 1658 if (LayoutObject* renderer = this->renderer()) {
1659 if (localChange != NoChange || pseudoStyleCacheIsInvalid(oldStyle.get(), newStyle.get()) || svgFilterNeedsLayerUpdate()) { 1659 if (localChange != NoChange || pseudoStyleCacheIsInvalid(oldStyle.get(), newStyle.get()) || svgFilterNeedsLayerUpdate()) {
1660 renderer->setStyle(newStyle.get()); 1660 renderer->setStyle(newStyle.get());
1661 } else { 1661 } else {
1662 // Although no change occurred, we use the new style so that the cou sin style sharing code won't get 1662 // Although no change occurred, we use the new style so that the cou sin style sharing code won't get
1663 // fooled into believing this style is the same. 1663 // fooled into believing this style is the same.
1664 // FIXME: We may be able to remove this hack, see discussion in 1664 // FIXME: We may be able to remove this hack, see discussion in
1665 // https://codereview.chromium.org/30453002/ 1665 // https://codereview.chromium.org/30453002/
1666 renderer->setStyleInternal(newStyle.get()); 1666 renderer->setStyleInternal(newStyle.get());
1667 } 1667 }
1668 } 1668 }
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after
2607 if (element->needsStyleRecalc()) 2607 if (element->needsStyleRecalc())
2608 renderer()->style()->removeCachedPseudoStyle(pseudoId); 2608 renderer()->style()->removeCachedPseudoStyle(pseudoId);
2609 2609
2610 // PseudoElement styles hang off their parent element's style so if we n eeded 2610 // PseudoElement styles hang off their parent element's style so if we n eeded
2611 // a style recalc we should Force one on the pseudo. 2611 // a style recalc we should Force one on the pseudo.
2612 // FIXME: We should figure out the right text sibling to pass. 2612 // FIXME: We should figure out the right text sibling to pass.
2613 element->recalcStyle(change == UpdatePseudoElements ? Force : change); 2613 element->recalcStyle(change == UpdatePseudoElements ? Force : change);
2614 2614
2615 // Wait until our parent is not displayed or pseudoElementRendererIsNeed ed 2615 // Wait until our parent is not displayed or pseudoElementRendererIsNeed ed
2616 // is false, otherwise we could continuously create and destroy PseudoEl ements 2616 // is false, otherwise we could continuously create and destroy PseudoEl ements
2617 // when RenderObject::isChildAllowed on our parent returns false for the 2617 // when LayoutObject::isChildAllowed on our parent returns false for the
2618 // PseudoElement's renderer for each style recalc. 2618 // PseudoElement's renderer for each style recalc.
2619 if (!renderer() || !pseudoElementRendererIsNeeded(renderer()->getCachedP seudoStyle(pseudoId))) 2619 if (!renderer() || !pseudoElementRendererIsNeeded(renderer()->getCachedP seudoStyle(pseudoId)))
2620 elementRareData()->setPseudoElement(pseudoId, nullptr); 2620 elementRareData()->setPseudoElement(pseudoId, nullptr);
2621 } else if (pseudoId == FIRST_LETTER && element && change >= UpdatePseudoElem ents && !FirstLetterPseudoElement::firstLetterTextRenderer(*element)) { 2621 } else if (pseudoId == FIRST_LETTER && element && change >= UpdatePseudoElem ents && !FirstLetterPseudoElement::firstLetterTextRenderer(*element)) {
2622 // This can happen if we change to a float, for example. We need to clea nup the 2622 // This can happen if we change to a float, for example. We need to clea nup the
2623 // first-letter pseudoElement and then fix the text of the original rema ining 2623 // first-letter pseudoElement and then fix the text of the original rema ining
2624 // text renderer. 2624 // text renderer.
2625 // This can be seen in Test 7 of fast/css/first-letter-removed-added.htm l 2625 // This can be seen in Test 7 of fast/css/first-letter-removed-added.htm l
2626 elementRareData()->setPseudoElement(pseudoId, nullptr); 2626 elementRareData()->setPseudoElement(pseudoId, nullptr);
2627 } else if (change >= UpdatePseudoElements) { 2627 } else if (change >= UpdatePseudoElements) {
2628 createPseudoElementIfNeeded(pseudoId); 2628 createPseudoElementIfNeeded(pseudoId);
2629 } 2629 }
2630 } 2630 }
2631 2631
2632 // If we're updating first letter, and the current first letter renderer 2632 // If we're updating first letter, and the current first letter renderer
2633 // is not the same as the one we're currently using we need to re-create 2633 // is not the same as the one we're currently using we need to re-create
2634 // the first letter renderer. 2634 // the first letter renderer.
2635 bool Element::updateFirstLetter(Element* element) 2635 bool Element::updateFirstLetter(Element* element)
2636 { 2636 {
2637 RenderObject* remainingTextRenderer = FirstLetterPseudoElement::firstLetterT extRenderer(*element); 2637 LayoutObject* remainingTextRenderer = FirstLetterPseudoElement::firstLetterT extRenderer(*element);
2638 if (!remainingTextRenderer || remainingTextRenderer != toFirstLetterPseudoEl ement(element)->remainingTextRenderer()) { 2638 if (!remainingTextRenderer || remainingTextRenderer != toFirstLetterPseudoEl ement(element)->remainingTextRenderer()) {
2639 // We have to clear out the old first letter here because when it is 2639 // We have to clear out the old first letter here because when it is
2640 // disposed it will set the original text back on the remaining text 2640 // disposed it will set the original text back on the remaining text
2641 // renderer. If we dispose after creating the new one we will get 2641 // renderer. If we dispose after creating the new one we will get
2642 // incorrect results due to setting the first letter back. 2642 // incorrect results due to setting the first letter back.
2643 if (remainingTextRenderer) 2643 if (remainingTextRenderer)
2644 element->reattach(); 2644 element->reattach();
2645 else 2645 else
2646 elementRareData()->setPseudoElement(FIRST_LETTER, nullptr); 2646 elementRareData()->setPseudoElement(FIRST_LETTER, nullptr);
2647 return true; 2647 return true;
(...skipping 20 matching lines...) Expand all
2668 InspectorInstrumentation::pseudoElementCreated(element.get()); 2668 InspectorInstrumentation::pseudoElementCreated(element.get());
2669 2669
2670 ensureElementRareData().setPseudoElement(pseudoId, element.release()); 2670 ensureElementRareData().setPseudoElement(pseudoId, element.release());
2671 } 2671 }
2672 2672
2673 PseudoElement* Element::pseudoElement(PseudoId pseudoId) const 2673 PseudoElement* Element::pseudoElement(PseudoId pseudoId) const
2674 { 2674 {
2675 return hasRareData() ? elementRareData()->pseudoElement(pseudoId) : nullptr; 2675 return hasRareData() ? elementRareData()->pseudoElement(pseudoId) : nullptr;
2676 } 2676 }
2677 2677
2678 RenderObject* Element::pseudoElementRenderer(PseudoId pseudoId) const 2678 LayoutObject* Element::pseudoElementRenderer(PseudoId pseudoId) const
2679 { 2679 {
2680 if (PseudoElement* element = pseudoElement(pseudoId)) 2680 if (PseudoElement* element = pseudoElement(pseudoId))
2681 return element->renderer(); 2681 return element->renderer();
2682 return nullptr; 2682 return nullptr;
2683 } 2683 }
2684 2684
2685 bool Element::matches(const String& selectors, ExceptionState& exceptionState) 2685 bool Element::matches(const String& selectors, ExceptionState& exceptionState)
2686 { 2686 {
2687 SelectorQuery* selectorQuery = document().selectorQueryCache().add(AtomicStr ing(selectors), document(), exceptionState); 2687 SelectorQuery* selectorQuery = document().selectorQueryCache().add(AtomicStr ing(selectors), document(), exceptionState);
2688 if (!selectorQuery) 2688 if (!selectorQuery)
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
3350 return false; 3350 return false;
3351 if (!parentOrShadowHostElement()->childrenSupportStyleSharing()) 3351 if (!parentOrShadowHostElement()->childrenSupportStyleSharing())
3352 return false; 3352 return false;
3353 if (this == document().cssTarget()) 3353 if (this == document().cssTarget())
3354 return false; 3354 return false;
3355 if (isHTMLElement() && toHTMLElement(this)->hasDirectionAuto()) 3355 if (isHTMLElement() && toHTMLElement(this)->hasDirectionAuto())
3356 return false; 3356 return false;
3357 if (hasActiveAnimations()) 3357 if (hasActiveAnimations())
3358 return false; 3358 return false;
3359 // Turn off style sharing for elements that can gain layers for reasons outs ide of the style system. 3359 // Turn off style sharing for elements that can gain layers for reasons outs ide of the style system.
3360 // See comments in RenderObject::setStyle(). 3360 // See comments in LayoutObject::setStyle().
3361 // FIXME: Why does gaining a layer from outside the style system require dis abling sharing? 3361 // FIXME: Why does gaining a layer from outside the style system require dis abling sharing?
3362 if (isHTMLFrameElementBase(*this) || isHTMLPlugInElement(*this) || isHTMLCan vasElement(*this)) 3362 if (isHTMLFrameElementBase(*this) || isHTMLPlugInElement(*this) || isHTMLCan vasElement(*this))
3363 return false; 3363 return false;
3364 if (Fullscreen::isActiveFullScreenElement(*this)) 3364 if (Fullscreen::isActiveFullScreenElement(*this))
3365 return false; 3365 return false;
3366 return true; 3366 return true;
3367 } 3367 }
3368 3368
3369 void Element::trace(Visitor* visitor) 3369 void Element::trace(Visitor* visitor)
3370 { 3370 {
3371 #if ENABLE(OILPAN) 3371 #if ENABLE(OILPAN)
3372 if (hasRareData()) 3372 if (hasRareData())
3373 visitor->trace(elementRareData()); 3373 visitor->trace(elementRareData());
3374 visitor->trace(m_elementData); 3374 visitor->trace(m_elementData);
3375 #endif 3375 #endif
3376 ContainerNode::trace(visitor); 3376 ContainerNode::trace(visitor);
3377 } 3377 }
3378 3378
3379 } // namespace blink 3379 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/dom/Element.h ('k') | Source/core/dom/ElementRareData.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698