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 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1510 } | 1510 } |
1511 | 1511 |
1512 void Element::attach(const AttachContext& context) | 1512 void Element::attach(const AttachContext& context) |
1513 { | 1513 { |
1514 DCHECK(document().inStyleRecalc()); | 1514 DCHECK(document().inStyleRecalc()); |
1515 | 1515 |
1516 // We've already been through detach when doing an attach, but we might | 1516 // We've already been through detach when doing an attach, but we might |
1517 // need to clear any state that's been added since then. | 1517 // need to clear any state that's been added since then. |
1518 if (hasRareData() && getStyleChangeType() == NeedsReattachStyleChange) { | 1518 if (hasRareData() && getStyleChangeType() == NeedsReattachStyleChange) { |
1519 ElementRareData* data = elementRareData(); | 1519 ElementRareData* data = elementRareData(); |
1520 data->clearComputedStyle(); | 1520 data->setComputedStyle(nullptr); |
1521 } | 1521 } |
1522 | 1522 |
1523 if (!isSlotOrActiveInsertionPoint()) | 1523 if (!isSlotOrActiveInsertionPoint()) |
1524 LayoutTreeBuilderForElement(*this, context.resolvedStyle).createLayoutOb
jectIfNeeded(); | 1524 LayoutTreeBuilderForElement(*this, context.resolvedStyle).createLayoutOb
jectIfNeeded(); |
1525 | 1525 |
1526 addCallbackSelectors(); | 1526 addCallbackSelectors(); |
1527 | 1527 |
1528 if (hasRareData() && !layoutObject()) { | 1528 if (hasRareData() && !layoutObject()) { |
1529 if (ElementAnimations* elementAnimations = elementRareData()->elementAni
mations()) { | 1529 if (ElementAnimations* elementAnimations = elementRareData()->elementAni
mations()) { |
1530 elementAnimations->cssAnimations().cancel(); | 1530 elementAnimations->cssAnimations().cancel(); |
(...skipping 25 matching lines...) Expand all Loading... |
1556 { | 1556 { |
1557 HTMLFrameOwnerElement::UpdateSuspendScope suspendWidgetHierarchyUpdates; | 1557 HTMLFrameOwnerElement::UpdateSuspendScope suspendWidgetHierarchyUpdates; |
1558 cancelFocusAppearanceUpdate(); | 1558 cancelFocusAppearanceUpdate(); |
1559 removeCallbackSelectors(); | 1559 removeCallbackSelectors(); |
1560 if (hasRareData()) { | 1560 if (hasRareData()) { |
1561 ElementRareData* data = elementRareData(); | 1561 ElementRareData* data = elementRareData(); |
1562 data->clearPseudoElements(); | 1562 data->clearPseudoElements(); |
1563 | 1563 |
1564 // attach() will clear the computed style for us when inside recalcStyle
. | 1564 // attach() will clear the computed style for us when inside recalcStyle
. |
1565 if (!document().inStyleRecalc()) | 1565 if (!document().inStyleRecalc()) |
1566 data->clearComputedStyle(); | 1566 data->setComputedStyle(nullptr); |
1567 | 1567 |
1568 if (ElementAnimations* elementAnimations = data->elementAnimations()) { | 1568 if (ElementAnimations* elementAnimations = data->elementAnimations()) { |
1569 if (context.performingReattach) { | 1569 if (context.performingReattach) { |
1570 // FIXME: We call detach from within style recalc, so compositin
gState is not up to date. | 1570 // FIXME: We call detach from within style recalc, so compositin
gState is not up to date. |
1571 // https://code.google.com/p/chromium/issues/detail?id=339847 | 1571 // https://code.google.com/p/chromium/issues/detail?id=339847 |
1572 DisableCompositingQueryAsserts disabler; | 1572 DisableCompositingQueryAsserts disabler; |
1573 | 1573 |
1574 // FIXME: restart compositor animations rather than pull back to
the main thread | 1574 // FIXME: restart compositor animations rather than pull back to
the main thread |
1575 elementAnimations->restartAnimationOnCompositor(); | 1575 elementAnimations->restartAnimationOnCompositor(); |
1576 } else { | 1576 } else { |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1681 DCHECK(!document().lifecycle().inDetach()); | 1681 DCHECK(!document().lifecycle().inDetach()); |
1682 DCHECK(!parentOrShadowHostNode()->needsStyleRecalc()); | 1682 DCHECK(!parentOrShadowHostNode()->needsStyleRecalc()); |
1683 DCHECK(inActiveDocument()); | 1683 DCHECK(inActiveDocument()); |
1684 | 1684 |
1685 if (hasCustomStyleCallbacks()) | 1685 if (hasCustomStyleCallbacks()) |
1686 willRecalcStyle(change); | 1686 willRecalcStyle(change); |
1687 | 1687 |
1688 if (change >= Inherit || needsStyleRecalc()) { | 1688 if (change >= Inherit || needsStyleRecalc()) { |
1689 if (hasRareData()) { | 1689 if (hasRareData()) { |
1690 ElementRareData* data = elementRareData(); | 1690 ElementRareData* data = elementRareData(); |
1691 data->clearComputedStyle(); | 1691 data->setComputedStyle(nullptr); |
1692 | 1692 |
1693 if (change >= Inherit) { | 1693 if (change >= Inherit) { |
1694 if (ElementAnimations* elementAnimations = data->elementAnimatio
ns()) | 1694 if (ElementAnimations* elementAnimations = data->elementAnimatio
ns()) |
1695 elementAnimations->setAnimationStyleChange(false); | 1695 elementAnimations->setAnimationStyleChange(false); |
1696 } | 1696 } |
1697 } | 1697 } |
1698 if (parentComputedStyle()) | 1698 if (parentComputedStyle()) |
1699 change = recalcOwnStyle(change); | 1699 change = recalcOwnStyle(change); |
1700 clearNeedsStyleRecalc(); | 1700 clearNeedsStyleRecalc(); |
1701 } | 1701 } |
(...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2784 // document tree and figure out when to destroy the computed style for s
uch elements. | 2784 // document tree and figure out when to destroy the computed style for s
uch elements. |
2785 return nullptr; | 2785 return nullptr; |
2786 } | 2786 } |
2787 | 2787 |
2788 // FIXME: Find and use the layoutObject from the pseudo element instead of t
he actual element so that the 'length' | 2788 // FIXME: Find and use the layoutObject from the pseudo element instead of t
he actual element so that the 'length' |
2789 // properties, which are only known by the layoutObject because it did the l
ayout, will be correct and so that the | 2789 // properties, which are only known by the layoutObject because it did the l
ayout, will be correct and so that the |
2790 // values returned for the ":selection" pseudo-element will be correct. | 2790 // values returned for the ":selection" pseudo-element will be correct. |
2791 ComputedStyle* elementStyle = mutableComputedStyle(); | 2791 ComputedStyle* elementStyle = mutableComputedStyle(); |
2792 if (!elementStyle) { | 2792 if (!elementStyle) { |
2793 ElementRareData& rareData = ensureElementRareData(); | 2793 ElementRareData& rareData = ensureElementRareData(); |
2794 if (!rareData.ensureComputedStyle()) | 2794 if (!rareData.computedStyle()) |
2795 rareData.setComputedStyle(document().styleForElementIgnoringPendingS
tylesheets(this)); | 2795 rareData.setComputedStyle(document().styleForElementIgnoringPendingS
tylesheets(this)); |
2796 elementStyle = rareData.ensureComputedStyle(); | 2796 elementStyle = rareData.computedStyle(); |
2797 } | 2797 } |
2798 | 2798 |
2799 if (!pseudoElementSpecifier) | 2799 if (!pseudoElementSpecifier) |
2800 return elementStyle; | 2800 return elementStyle; |
2801 | 2801 |
2802 if (ComputedStyle* pseudoElementStyle = elementStyle->getCachedPseudoStyle(p
seudoElementSpecifier)) | 2802 if (ComputedStyle* pseudoElementStyle = elementStyle->getCachedPseudoStyle(p
seudoElementSpecifier)) |
2803 return pseudoElementStyle; | 2803 return pseudoElementStyle; |
2804 | 2804 |
2805 RefPtr<ComputedStyle> result = document().ensureStyleResolver().pseudoStyleF
orElement(this, PseudoStyleRequest(pseudoElementSpecifier, PseudoStyleRequest::F
orComputedStyle), elementStyle); | 2805 RefPtr<ComputedStyle> result = document().ensureStyleResolver().pseudoStyleF
orElement(this, PseudoStyleRequest(pseudoElementSpecifier, PseudoStyleRequest::F
orComputedStyle), elementStyle); |
2806 DCHECK(result); | 2806 DCHECK(result); |
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3704 | 3704 |
3705 DEFINE_TRACE_WRAPPERS(Element) | 3705 DEFINE_TRACE_WRAPPERS(Element) |
3706 { | 3706 { |
3707 if (hasRareData()) { | 3707 if (hasRareData()) { |
3708 visitor->traceWrappers(elementRareData()); | 3708 visitor->traceWrappers(elementRareData()); |
3709 } | 3709 } |
3710 ContainerNode::traceWrappers(visitor); | 3710 ContainerNode::traceWrappers(visitor); |
3711 } | 3711 } |
3712 | 3712 |
3713 } // namespace blink | 3713 } // namespace blink |
OLD | NEW |