| OLD | NEW |
| 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 1616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1627 reattachWhitespaceSiblingsIfNeeded(nextTextSibling); | 1627 reattachWhitespaceSiblingsIfNeeded(nextTextSibling); |
| 1628 } | 1628 } |
| 1629 | 1629 |
| 1630 StyleRecalcChange Element::recalcOwnStyle(StyleRecalcChange change) | 1630 StyleRecalcChange Element::recalcOwnStyle(StyleRecalcChange change) |
| 1631 { | 1631 { |
| 1632 ASSERT(document().inStyleRecalc()); | 1632 ASSERT(document().inStyleRecalc()); |
| 1633 ASSERT(!parentOrShadowHostNode()->needsStyleRecalc()); | 1633 ASSERT(!parentOrShadowHostNode()->needsStyleRecalc()); |
| 1634 ASSERT(change >= Inherit || needsStyleRecalc()); | 1634 ASSERT(change >= Inherit || needsStyleRecalc()); |
| 1635 ASSERT(parentLayoutStyle()); | 1635 ASSERT(parentLayoutStyle()); |
| 1636 | 1636 |
| 1637 RefPtr<LayoutStyle> oldStyle = layoutStyle(); | 1637 RefPtr<LayoutStyle> oldStyle = mutableLayoutStyle(); |
| 1638 RefPtr<LayoutStyle> newStyle = styleForRenderer(); | 1638 RefPtr<LayoutStyle> newStyle = styleForRenderer(); |
| 1639 StyleRecalcChange localChange = LayoutStyle::stylePropagationDiff(oldStyle.g
et(), newStyle.get()); | 1639 StyleRecalcChange localChange = LayoutStyle::stylePropagationDiff(oldStyle.g
et(), newStyle.get()); |
| 1640 | 1640 |
| 1641 ASSERT(newStyle); | 1641 ASSERT(newStyle); |
| 1642 | 1642 |
| 1643 if (localChange == Reattach) { | 1643 if (localChange == Reattach) { |
| 1644 AttachContext reattachContext; | 1644 AttachContext reattachContext; |
| 1645 reattachContext.resolvedStyle = newStyle.get(); | 1645 reattachContext.resolvedStyle = newStyle.get(); |
| 1646 bool rendererWillChange = needsAttach() || renderer(); | 1646 bool rendererWillChange = needsAttach() || renderer(); |
| 1647 reattach(reattachContext); | 1647 reattach(reattachContext); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1672 | 1672 |
| 1673 if (change > Inherit || localChange > Inherit) | 1673 if (change > Inherit || localChange > Inherit) |
| 1674 return max(localChange, change); | 1674 return max(localChange, change); |
| 1675 | 1675 |
| 1676 if (localChange < Inherit && (oldStyle->hasPseudoElementStyle() || newStyle-
>hasPseudoElementStyle())) | 1676 if (localChange < Inherit && (oldStyle->hasPseudoElementStyle() || newStyle-
>hasPseudoElementStyle())) |
| 1677 return UpdatePseudoElements; | 1677 return UpdatePseudoElements; |
| 1678 | 1678 |
| 1679 return localChange; | 1679 return localChange; |
| 1680 } | 1680 } |
| 1681 | 1681 |
| 1682 void Element::updateCallbackSelectors(LayoutStyle* oldStyle, LayoutStyle* newSty
le) | 1682 void Element::updateCallbackSelectors(const LayoutStyle* oldStyle, const LayoutS
tyle* newStyle) |
| 1683 { | 1683 { |
| 1684 Vector<String> emptyVector; | 1684 Vector<String> emptyVector; |
| 1685 const Vector<String>& oldCallbackSelectors = oldStyle ? oldStyle->callbackSe
lectors() : emptyVector; | 1685 const Vector<String>& oldCallbackSelectors = oldStyle ? oldStyle->callbackSe
lectors() : emptyVector; |
| 1686 const Vector<String>& newCallbackSelectors = newStyle ? newStyle->callbackSe
lectors() : emptyVector; | 1686 const Vector<String>& newCallbackSelectors = newStyle ? newStyle->callbackSe
lectors() : emptyVector; |
| 1687 if (oldCallbackSelectors.isEmpty() && newCallbackSelectors.isEmpty()) | 1687 if (oldCallbackSelectors.isEmpty() && newCallbackSelectors.isEmpty()) |
| 1688 return; | 1688 return; |
| 1689 if (oldCallbackSelectors != newCallbackSelectors) | 1689 if (oldCallbackSelectors != newCallbackSelectors) |
| 1690 CSSSelectorWatch::from(document()).updateSelectorMatches(oldCallbackSele
ctors, newCallbackSelectors); | 1690 CSSSelectorWatch::from(document()).updateSelectorMatches(oldCallbackSele
ctors, newCallbackSelectors); |
| 1691 } | 1691 } |
| 1692 | 1692 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1823 case CDATA_SECTION_NODE: | 1823 case CDATA_SECTION_NODE: |
| 1824 return true; | 1824 return true; |
| 1825 default: | 1825 default: |
| 1826 break; | 1826 break; |
| 1827 } | 1827 } |
| 1828 return false; | 1828 return false; |
| 1829 } | 1829 } |
| 1830 | 1830 |
| 1831 void Element::checkForEmptyStyleChange() | 1831 void Element::checkForEmptyStyleChange() |
| 1832 { | 1832 { |
| 1833 LayoutStyle* style = layoutStyle(); | 1833 const LayoutStyle* style = layoutStyle(); |
| 1834 | 1834 |
| 1835 if (!style && !styleAffectedByEmpty()) | 1835 if (!style && !styleAffectedByEmpty()) |
| 1836 return; | 1836 return; |
| 1837 if (styleChangeType() >= SubtreeStyleChange) | 1837 if (styleChangeType() >= SubtreeStyleChange) |
| 1838 return; | 1838 return; |
| 1839 if (!inActiveDocument()) | 1839 if (!inActiveDocument()) |
| 1840 return; | 1840 return; |
| 1841 if (!document().styleResolver()) | 1841 if (!document().styleResolver()) |
| 1842 return; | 1842 return; |
| 1843 | 1843 |
| (...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2515 | 2515 |
| 2516 if (!inActiveDocument()) { | 2516 if (!inActiveDocument()) { |
| 2517 // FIXME: Try to do better than this. Ensure that styleForElement() work
s for elements that are not in the | 2517 // FIXME: Try to do better than this. Ensure that styleForElement() work
s for elements that are not in the |
| 2518 // document tree and figure out when to destroy the computed style for s
uch elements. | 2518 // document tree and figure out when to destroy the computed style for s
uch elements. |
| 2519 return nullptr; | 2519 return nullptr; |
| 2520 } | 2520 } |
| 2521 | 2521 |
| 2522 // FIXME: Find and use the renderer from the pseudo element instead of the a
ctual element so that the 'length' | 2522 // FIXME: Find and use the renderer from the pseudo element instead of the a
ctual element so that the 'length' |
| 2523 // properties, which are only known by the renderer because it did the layou
t, will be correct and so that the | 2523 // properties, which are only known by the renderer because it did the layou
t, will be correct and so that the |
| 2524 // values returned for the ":selection" pseudo-element will be correct. | 2524 // values returned for the ":selection" pseudo-element will be correct. |
| 2525 LayoutStyle* elementStyle = layoutStyle(); | 2525 LayoutStyle* elementStyle = mutableLayoutStyle(); |
| 2526 if (!elementStyle) { | 2526 if (!elementStyle) { |
| 2527 ElementRareData& rareData = ensureElementRareData(); | 2527 ElementRareData& rareData = ensureElementRareData(); |
| 2528 if (!rareData.computedStyle()) | 2528 if (!rareData.computedStyle()) |
| 2529 rareData.setComputedStyle(document().styleForElementIgnoringPendingS
tylesheets(this)); | 2529 rareData.setComputedStyle(document().styleForElementIgnoringPendingS
tylesheets(this)); |
| 2530 elementStyle = rareData.computedStyle(); | 2530 elementStyle = rareData.computedStyle(); |
| 2531 } | 2531 } |
| 2532 | 2532 |
| 2533 if (!pseudoElementSpecifier) | 2533 if (!pseudoElementSpecifier) |
| 2534 return elementStyle; | 2534 return elementStyle; |
| 2535 | 2535 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2598 ASSERT(!needsStyleRecalc()); | 2598 ASSERT(!needsStyleRecalc()); |
| 2599 PseudoElement* element = pseudoElement(pseudoId); | 2599 PseudoElement* element = pseudoElement(pseudoId); |
| 2600 | 2600 |
| 2601 if (element && (change == UpdatePseudoElements || element->shouldCallRecalcS
tyle(change))) { | 2601 if (element && (change == UpdatePseudoElements || element->shouldCallRecalcS
tyle(change))) { |
| 2602 if (pseudoId == FIRST_LETTER && updateFirstLetter(element)) | 2602 if (pseudoId == FIRST_LETTER && updateFirstLetter(element)) |
| 2603 return; | 2603 return; |
| 2604 | 2604 |
| 2605 // Need to clear the cached style if the PseudoElement wants a recalc so
it | 2605 // Need to clear the cached style if the PseudoElement wants a recalc so
it |
| 2606 // computes a new style. | 2606 // computes a new style. |
| 2607 if (element->needsStyleRecalc()) | 2607 if (element->needsStyleRecalc()) |
| 2608 renderer()->style()->removeCachedPseudoStyle(pseudoId); | 2608 renderer()->mutableStyleRef().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 LayoutObject::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. |
| (...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 |
| OLD | NEW |