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

Side by Side Diff: Source/core/css/resolver/StyleResolver.cpp

Issue 1105103003: Update renderer in core/css. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 7 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/css/resolver/StyleAdjuster.cpp ('k') | no next file » | 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) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 #include "platform/RuntimeEnabledFeatures.h" 88 #include "platform/RuntimeEnabledFeatures.h"
89 #include "wtf/StdLibExtras.h" 89 #include "wtf/StdLibExtras.h"
90 90
91 namespace { 91 namespace {
92 92
93 using namespace blink; 93 using namespace blink;
94 94
95 void setAnimationUpdateIfNeeded(StyleResolverState& state, Element& element) 95 void setAnimationUpdateIfNeeded(StyleResolverState& state, Element& element)
96 { 96 {
97 // If any changes to CSS Animations were detected, stash the update away for application after the 97 // If any changes to CSS Animations were detected, stash the update away for application after the
98 // render object is updated if we're in the appropriate scope. 98 // layout object is updated if we're in the appropriate scope.
99 if (state.animationUpdate()) 99 if (state.animationUpdate())
100 element.ensureElementAnimations().cssAnimations().setPendingUpdate(state .takeAnimationUpdate()); 100 element.ensureElementAnimations().cssAnimations().setPendingUpdate(state .takeAnimationUpdate());
101 } 101 }
102 102
103 } // namespace 103 } // namespace
104 104
105 namespace blink { 105 namespace blink {
106 106
107 using namespace HTMLNames; 107 using namespace HTMLNames;
108 108
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 } 533 }
534 534
535 PassRefPtr<ComputedStyle> StyleResolver::styleForElement(Element* element, const ComputedStyle* defaultParent, StyleSharingBehavior sharingBehavior, 535 PassRefPtr<ComputedStyle> StyleResolver::styleForElement(Element* element, const ComputedStyle* defaultParent, StyleSharingBehavior sharingBehavior,
536 RuleMatchingBehavior matchingBehavior) 536 RuleMatchingBehavior matchingBehavior)
537 { 537 {
538 ASSERT(document().frame()); 538 ASSERT(document().frame());
539 ASSERT(document().settings()); 539 ASSERT(document().settings());
540 ASSERT(!hasPendingAuthorStyleSheets()); 540 ASSERT(!hasPendingAuthorStyleSheets());
541 ASSERT(!m_needCollectFeatures); 541 ASSERT(!m_needCollectFeatures);
542 542
543 // Once an element has a renderer, we don't try to destroy it, since otherwi se the renderer 543 // Once an element has a layoutObject, we don't try to destroy it, since oth erwise the layoutObject
544 // will vanish if a style recalc happens during loading. 544 // will vanish if a style recalc happens during loading.
545 if (sharingBehavior == AllowStyleSharing && !document().isRenderingReady() & & !element->layoutObject()) { 545 if (sharingBehavior == AllowStyleSharing && !document().isRenderingReady() & & !element->layoutObject()) {
546 if (!s_styleNotYetAvailable) { 546 if (!s_styleNotYetAvailable) {
547 s_styleNotYetAvailable = ComputedStyle::create().leakRef(); 547 s_styleNotYetAvailable = ComputedStyle::create().leakRef();
548 s_styleNotYetAvailable->setDisplay(NONE); 548 s_styleNotYetAvailable->setDisplay(NONE);
549 s_styleNotYetAvailable->font().update(document().styleEngine().fontS elector()); 549 s_styleNotYetAvailable->font().update(document().styleEngine().fontS elector());
550 } 550 }
551 551
552 document().setHasNodesWithPlaceholderStyle(); 552 document().setHasNodesWithPlaceholderStyle();
553 return s_styleNotYetAvailable; 553 return s_styleNotYetAvailable;
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
713 713
714 PassRefPtrWillBeRawPtr<PseudoElement> StyleResolver::createPseudoElement(Element * parent, PseudoId pseudoId) 714 PassRefPtrWillBeRawPtr<PseudoElement> StyleResolver::createPseudoElement(Element * parent, PseudoId pseudoId)
715 { 715 {
716 if (pseudoId == FIRST_LETTER) 716 if (pseudoId == FIRST_LETTER)
717 return FirstLetterPseudoElement::create(parent); 717 return FirstLetterPseudoElement::create(parent);
718 return PseudoElement::create(parent, pseudoId); 718 return PseudoElement::create(parent, pseudoId);
719 } 719 }
720 720
721 PassRefPtrWillBeRawPtr<PseudoElement> StyleResolver::createPseudoElementIfNeeded (Element& parent, PseudoId pseudoId) 721 PassRefPtrWillBeRawPtr<PseudoElement> StyleResolver::createPseudoElementIfNeeded (Element& parent, PseudoId pseudoId)
722 { 722 {
723 LayoutObject* parentRenderer = parent.layoutObject(); 723 LayoutObject* parentLayoutObject = parent.layoutObject();
724 if (!parentRenderer) 724 if (!parentLayoutObject)
725 return nullptr; 725 return nullptr;
726 726
727 // The first letter pseudo element has to look up the tree and see if any 727 // The first letter pseudo element has to look up the tree and see if any
728 // of the ancestors are first letter. 728 // of the ancestors are first letter.
729 if (pseudoId < FIRST_INTERNAL_PSEUDOID && pseudoId != FIRST_LETTER && !paren tRenderer->style()->hasPseudoStyle(pseudoId)) 729 if (pseudoId < FIRST_INTERNAL_PSEUDOID && pseudoId != FIRST_LETTER && !paren tLayoutObject->style()->hasPseudoStyle(pseudoId))
730 return nullptr; 730 return nullptr;
731 731
732 if (pseudoId == BACKDROP && !parent.isInTopLayer()) 732 if (pseudoId == BACKDROP && !parent.isInTopLayer())
733 return nullptr; 733 return nullptr;
734 734
735 if (pseudoId == FIRST_LETTER && (parent.isSVGElement() || !FirstLetterPseudo Element::firstLetterTextRenderer(parent))) 735 if (pseudoId == FIRST_LETTER && (parent.isSVGElement() || !FirstLetterPseudo Element::firstLetterTextRenderer(parent)))
736 return nullptr; 736 return nullptr;
737 737
738 if (!canHaveGeneratedChildren(*parentRenderer)) 738 if (!canHaveGeneratedChildren(*parentLayoutObject))
739 return nullptr; 739 return nullptr;
740 740
741 ComputedStyle* parentStyle = parentRenderer->mutableStyle(); 741 ComputedStyle* parentStyle = parentLayoutObject->mutableStyle();
742 if (ComputedStyle* cachedStyle = parentStyle->getCachedPseudoStyle(pseudoId) ) { 742 if (ComputedStyle* cachedStyle = parentStyle->getCachedPseudoStyle(pseudoId) ) {
743 if (!pseudoElementRendererIsNeeded(cachedStyle)) 743 if (!pseudoElementRendererIsNeeded(cachedStyle))
744 return nullptr; 744 return nullptr;
745 return createPseudoElement(&parent, pseudoId); 745 return createPseudoElement(&parent, pseudoId);
746 } 746 }
747 747
748 StyleResolverState state(document(), &parent, parentStyle); 748 StyleResolverState state(document(), &parent, parentStyle);
749 if (!pseudoStyleForElementInternal(parent, pseudoId, parentStyle, state)) 749 if (!pseudoStyleForElementInternal(parent, pseudoId, parentStyle, state))
750 return nullptr; 750 return nullptr;
751 RefPtr<ComputedStyle> style = state.takeStyle(); 751 RefPtr<ComputedStyle> style = state.takeStyle();
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 if (rulesToInclude & UAAndUserCSSRules) 946 if (rulesToInclude & UAAndUserCSSRules)
947 matchUARules(collector); 947 matchUARules(collector);
948 948
949 if (rulesToInclude & AuthorCSSRules) { 949 if (rulesToInclude & AuthorCSSRules) {
950 collector.setSameOriginOnly(!(rulesToInclude & CrossOriginCSSRules)); 950 collector.setSameOriginOnly(!(rulesToInclude & CrossOriginCSSRules));
951 matchAuthorRules(element, collector, rulesToInclude & EmptyCSSRules); 951 matchAuthorRules(element, collector, rulesToInclude & EmptyCSSRules);
952 } 952 }
953 } 953 }
954 954
955 // ----------------------------------------------------------------------------- -------- 955 // ----------------------------------------------------------------------------- --------
956 // this is mostly boring stuff on how to apply a certain rule to the renderstyle ... 956 // this is mostly boring stuff on how to apply a certain rule to the Computedsty le...
957 957
958 bool StyleResolver::applyAnimatedProperties(StyleResolverState& state, const Ele ment* animatingElement) 958 bool StyleResolver::applyAnimatedProperties(StyleResolverState& state, const Ele ment* animatingElement)
959 { 959 {
960 Element* element = state.element(); 960 Element* element = state.element();
961 ASSERT(element); 961 ASSERT(element);
962 962
963 // The animating element may be this element, or its pseudo element. It is 963 // The animating element may be this element, or its pseudo element. It is
964 // null when calculating the style for a potential pseudo element that has 964 // null when calculating the style for a potential pseudo element that has
965 // yet to be created. 965 // yet to be created.
966 ASSERT(animatingElement == element || !animatingElement || animatingElement- >parentOrShadowHostElement() == element); 966 ASSERT(animatingElement == element || !animatingElement || animatingElement- >parentOrShadowHostElement() == element);
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
1505 visitor->trace(m_watchedSelectorsRules); 1505 visitor->trace(m_watchedSelectorsRules);
1506 visitor->trace(m_treeBoundaryCrossingRules); 1506 visitor->trace(m_treeBoundaryCrossingRules);
1507 visitor->trace(m_styleResourceLoader); 1507 visitor->trace(m_styleResourceLoader);
1508 visitor->trace(m_styleSharingLists); 1508 visitor->trace(m_styleSharingLists);
1509 visitor->trace(m_pendingStyleSheets); 1509 visitor->trace(m_pendingStyleSheets);
1510 visitor->trace(m_document); 1510 visitor->trace(m_document);
1511 #endif 1511 #endif
1512 } 1512 }
1513 1513
1514 } // namespace blink 1514 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/css/resolver/StyleAdjuster.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698