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

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

Issue 889563002: Make RenderObject::style() return a const object (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix a crashers (everything is building!) 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
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 1320 matching lines...) Expand 10 before | Expand all | Expand 10 after
1331 const AtomicString Element::imageSourceURL() const 1331 const AtomicString Element::imageSourceURL() const
1332 { 1332 {
1333 return getAttribute(srcAttr); 1333 return getAttribute(srcAttr);
1334 } 1334 }
1335 1335
1336 bool Element::rendererIsNeeded(const RenderStyle& style) 1336 bool Element::rendererIsNeeded(const RenderStyle& style)
1337 { 1337 {
1338 return style.display() != NONE; 1338 return style.display() != NONE;
1339 } 1339 }
1340 1340
1341 RenderObject* Element::createRenderer(RenderStyle* style) 1341 RenderObject* Element::createRenderer(const RenderStyle* style)
1342 { 1342 {
1343 return RenderObject::createObject(this, style); 1343 return RenderObject::createObject(this, style);
1344 } 1344 }
1345 1345
1346 Node::InsertionNotificationRequest Element::insertedInto(ContainerNode* insertio nPoint) 1346 Node::InsertionNotificationRequest Element::insertedInto(ContainerNode* insertio nPoint)
1347 { 1347 {
1348 // need to do superclass processing first so inDocument() is true 1348 // need to do superclass processing first so inDocument() is true
1349 // by the time we reach updateId 1349 // by the time we reach updateId
1350 ContainerNode::insertedInto(insertionPoint); 1350 ContainerNode::insertedInto(insertionPoint);
1351 1351
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 reattachWhitespaceSiblingsIfNeeded(nextTextSibling); 1643 reattachWhitespaceSiblingsIfNeeded(nextTextSibling);
1644 } 1644 }
1645 1645
1646 StyleRecalcChange Element::recalcOwnStyle(StyleRecalcChange change) 1646 StyleRecalcChange Element::recalcOwnStyle(StyleRecalcChange change)
1647 { 1647 {
1648 ASSERT(document().inStyleRecalc()); 1648 ASSERT(document().inStyleRecalc());
1649 ASSERT(!parentOrShadowHostNode()->needsStyleRecalc()); 1649 ASSERT(!parentOrShadowHostNode()->needsStyleRecalc());
1650 ASSERT(change >= Inherit || needsStyleRecalc()); 1650 ASSERT(change >= Inherit || needsStyleRecalc());
1651 ASSERT(parentRenderStyle()); 1651 ASSERT(parentRenderStyle());
1652 1652
1653 RefPtr<RenderStyle> oldStyle = renderStyle(); 1653 RefPtr<RenderStyle> oldStyle = mutableRenderStyle();
rune 2015/01/29 23:16:32 All use of oldStyle below looks const to me.
Julien - ping for review 2015/02/10 07:33:19 RefPtr modifies |oldStyle| so it's not const at al
1654 RefPtr<RenderStyle> newStyle = styleForRenderer(); 1654 RefPtr<RenderStyle> newStyle = styleForRenderer();
1655 StyleRecalcChange localChange = RenderStyle::stylePropagationDiff(oldStyle.g et(), newStyle.get()); 1655 StyleRecalcChange localChange = RenderStyle::stylePropagationDiff(oldStyle.g et(), newStyle.get());
1656 1656
1657 ASSERT(newStyle); 1657 ASSERT(newStyle);
1658 1658
1659 if (localChange == Reattach) { 1659 if (localChange == Reattach) {
1660 AttachContext reattachContext; 1660 AttachContext reattachContext;
1661 reattachContext.resolvedStyle = newStyle.get(); 1661 reattachContext.resolvedStyle = newStyle.get();
1662 bool rendererWillChange = needsAttach() || renderer(); 1662 bool rendererWillChange = needsAttach() || renderer();
1663 reattach(reattachContext); 1663 reattach(reattachContext);
(...skipping 24 matching lines...) Expand all
1688 1688
1689 if (change > Inherit || localChange > Inherit) 1689 if (change > Inherit || localChange > Inherit)
1690 return max(localChange, change); 1690 return max(localChange, change);
1691 1691
1692 if (localChange < Inherit && (oldStyle->hasPseudoElementStyle() || newStyle- >hasPseudoElementStyle())) 1692 if (localChange < Inherit && (oldStyle->hasPseudoElementStyle() || newStyle- >hasPseudoElementStyle()))
1693 return UpdatePseudoElements; 1693 return UpdatePseudoElements;
1694 1694
1695 return localChange; 1695 return localChange;
1696 } 1696 }
1697 1697
1698 void Element::updateCallbackSelectors(RenderStyle* oldStyle, RenderStyle* newSty le) 1698 void Element::updateCallbackSelectors(const RenderStyle* oldStyle, const RenderS tyle* newStyle)
1699 { 1699 {
1700 Vector<String> emptyVector; 1700 Vector<String> emptyVector;
1701 const Vector<String>& oldCallbackSelectors = oldStyle ? oldStyle->callbackSe lectors() : emptyVector; 1701 const Vector<String>& oldCallbackSelectors = oldStyle ? oldStyle->callbackSe lectors() : emptyVector;
1702 const Vector<String>& newCallbackSelectors = newStyle ? newStyle->callbackSe lectors() : emptyVector; 1702 const Vector<String>& newCallbackSelectors = newStyle ? newStyle->callbackSe lectors() : emptyVector;
1703 if (oldCallbackSelectors.isEmpty() && newCallbackSelectors.isEmpty()) 1703 if (oldCallbackSelectors.isEmpty() && newCallbackSelectors.isEmpty())
1704 return; 1704 return;
1705 if (oldCallbackSelectors != newCallbackSelectors) 1705 if (oldCallbackSelectors != newCallbackSelectors)
1706 CSSSelectorWatch::from(document()).updateSelectorMatches(oldCallbackSele ctors, newCallbackSelectors); 1706 CSSSelectorWatch::from(document()).updateSelectorMatches(oldCallbackSele ctors, newCallbackSelectors);
1707 } 1707 }
1708 1708
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1839 case CDATA_SECTION_NODE: 1839 case CDATA_SECTION_NODE:
1840 return true; 1840 return true;
1841 default: 1841 default:
1842 break; 1842 break;
1843 } 1843 }
1844 return false; 1844 return false;
1845 } 1845 }
1846 1846
1847 void Element::checkForEmptyStyleChange() 1847 void Element::checkForEmptyStyleChange()
1848 { 1848 {
1849 RenderStyle* style = renderStyle(); 1849 const RenderStyle* style = renderStyle();
1850 1850
1851 if (!style && !styleAffectedByEmpty()) 1851 if (!style && !styleAffectedByEmpty())
1852 return; 1852 return;
1853 if (styleChangeType() >= SubtreeStyleChange) 1853 if (styleChangeType() >= SubtreeStyleChange)
1854 return; 1854 return;
1855 if (!inActiveDocument()) 1855 if (!inActiveDocument())
1856 return; 1856 return;
1857 if (!document().styleResolver()) 1857 if (!document().styleResolver())
1858 return; 1858 return;
1859 1859
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
2531 2531
2532 if (!inActiveDocument()) { 2532 if (!inActiveDocument()) {
2533 // FIXME: Try to do better than this. Ensure that styleForElement() work s for elements that are not in the 2533 // FIXME: Try to do better than this. Ensure that styleForElement() work s for elements that are not in the
2534 // document tree and figure out when to destroy the computed style for s uch elements. 2534 // document tree and figure out when to destroy the computed style for s uch elements.
2535 return nullptr; 2535 return nullptr;
2536 } 2536 }
2537 2537
2538 // FIXME: Find and use the renderer from the pseudo element instead of the a ctual element so that the 'length' 2538 // FIXME: Find and use the renderer from the pseudo element instead of the a ctual element so that the 'length'
2539 // properties, which are only known by the renderer because it did the layou t, will be correct and so that the 2539 // properties, which are only known by the renderer because it did the layou t, will be correct and so that the
2540 // values returned for the ":selection" pseudo-element will be correct. 2540 // values returned for the ":selection" pseudo-element will be correct.
2541 RenderStyle* elementStyle = renderStyle(); 2541 RenderStyle* elementStyle = mutableRenderStyle();
2542 if (!elementStyle) { 2542 if (!elementStyle) {
2543 ElementRareData& rareData = ensureElementRareData(); 2543 ElementRareData& rareData = ensureElementRareData();
2544 if (!rareData.computedStyle()) 2544 if (!rareData.computedStyle())
2545 rareData.setComputedStyle(document().styleForElementIgnoringPendingS tylesheets(this)); 2545 rareData.setComputedStyle(document().styleForElementIgnoringPendingS tylesheets(this));
2546 elementStyle = rareData.computedStyle(); 2546 elementStyle = rareData.computedStyle();
2547 } 2547 }
2548 2548
2549 if (!pseudoElementSpecifier) 2549 if (!pseudoElementSpecifier)
2550 return elementStyle; 2550 return elementStyle;
2551 2551
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2614 ASSERT(!needsStyleRecalc()); 2614 ASSERT(!needsStyleRecalc());
2615 PseudoElement* element = pseudoElement(pseudoId); 2615 PseudoElement* element = pseudoElement(pseudoId);
2616 2616
2617 if (element && (change == UpdatePseudoElements || element->shouldCallRecalcS tyle(change))) { 2617 if (element && (change == UpdatePseudoElements || element->shouldCallRecalcS tyle(change))) {
2618 if (pseudoId == FIRST_LETTER && updateFirstLetter(element)) 2618 if (pseudoId == FIRST_LETTER && updateFirstLetter(element))
2619 return; 2619 return;
2620 2620
2621 // Need to clear the cached style if the PseudoElement wants a recalc so it 2621 // Need to clear the cached style if the PseudoElement wants a recalc so it
2622 // computes a new style. 2622 // computes a new style.
2623 if (element->needsStyleRecalc()) 2623 if (element->needsStyleRecalc())
2624 renderer()->style()->removeCachedPseudoStyle(pseudoId); 2624 renderer()->deprecatedMutableStyle()->removeCachedPseudoStyle(pseudo Id);
2625 2625
2626 // PseudoElement styles hang off their parent element's style so if we n eeded 2626 // PseudoElement styles hang off their parent element's style so if we n eeded
2627 // a style recalc we should Force one on the pseudo. 2627 // a style recalc we should Force one on the pseudo.
2628 // FIXME: We should figure out the right text sibling to pass. 2628 // FIXME: We should figure out the right text sibling to pass.
2629 element->recalcStyle(change == UpdatePseudoElements ? Force : change); 2629 element->recalcStyle(change == UpdatePseudoElements ? Force : change);
2630 2630
2631 // Wait until our parent is not displayed or pseudoElementRendererIsNeed ed 2631 // Wait until our parent is not displayed or pseudoElementRendererIsNeed ed
2632 // is false, otherwise we could continuously create and destroy PseudoEl ements 2632 // is false, otherwise we could continuously create and destroy PseudoEl ements
2633 // when RenderObject::isChildAllowed on our parent returns false for the 2633 // when RenderObject::isChildAllowed on our parent returns false for the
2634 // PseudoElement's renderer for each style recalc. 2634 // PseudoElement's renderer for each style recalc.
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after
3386 { 3386 {
3387 #if ENABLE(OILPAN) 3387 #if ENABLE(OILPAN)
3388 if (hasRareData()) 3388 if (hasRareData())
3389 visitor->trace(elementRareData()); 3389 visitor->trace(elementRareData());
3390 visitor->trace(m_elementData); 3390 visitor->trace(m_elementData);
3391 #endif 3391 #endif
3392 ContainerNode::trace(visitor); 3392 ContainerNode::trace(visitor);
3393 } 3393 }
3394 3394
3395 } // namespace blink 3395 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698