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

Side by Side Diff: Source/core/dom/Node.h

Issue 208933003: Remove SiblingRuleHelper (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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/ElementRareData.h ('k') | Source/core/dom/Node.cpp » ('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 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 NeedsReattachStyleChange = 3 << nodeStyleChangeShift, 93 NeedsReattachStyleChange = 3 << nodeStyleChangeShift,
94 }; 94 };
95 95
96 // If the style change is from the renderer then we'll call setStyle on the 96 // If the style change is from the renderer then we'll call setStyle on the
97 // renderer even if the style computed from CSS is identical. 97 // renderer even if the style computed from CSS is identical.
98 enum StyleChangeSource { 98 enum StyleChangeSource {
99 StyleChangeFromCSS, 99 StyleChangeFromCSS,
100 StyleChangeFromRenderer 100 StyleChangeFromRenderer
101 }; 101 };
102 102
103 enum DynamicRestyleFlags {
104 ChildrenAffectedByFocus = 1 << 0,
105 ChildrenAffectedByHover = 1 << 1,
106 ChildrenAffectedByActive = 1 << 2,
107 ChildrenAffectedByDrag = 1 << 3,
108 ChildrenAffectedByFirstChildRules = 1 << 4,
109 ChildrenAffectedByLastChildRules = 1 << 5,
110 ChildrenAffectedByDirectAdjacentRules = 1 << 6,
111 ChildrenAffectedByIndirectAdjacentRules = 1 << 7,
112 ChildrenAffectedByForwardPositionalRules = 1 << 8,
113 ChildrenAffectedByBackwardPositionalRules = 1 << 9,
114
115 NumberOfDynamicRestyleFlags = 10,
116 };
117
103 class NodeRareDataBase { 118 class NodeRareDataBase {
104 public: 119 public:
105 RenderObject* renderer() const { return m_renderer; } 120 RenderObject* renderer() const { return m_renderer; }
106 void setRenderer(RenderObject* renderer) { m_renderer = renderer; } 121 void setRenderer(RenderObject* renderer) { m_renderer = renderer; }
107 122
108 protected: 123 protected:
109 NodeRareDataBase(RenderObject* renderer) 124 NodeRareDataBase(RenderObject* renderer)
110 : m_renderer(renderer) 125 : m_renderer(renderer)
111 { } 126 { }
112 127
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 void clearChildNeedsStyleInvalidation() { clearFlag(ChildNeedsStyleInvalida tion); } 385 void clearChildNeedsStyleInvalidation() { clearFlag(ChildNeedsStyleInvalida tion); }
371 void markAncestorsWithChildNeedsStyleInvalidation(); 386 void markAncestorsWithChildNeedsStyleInvalidation();
372 bool needsStyleInvalidation() { return getFlag(NeedsStyleInvalidation); } 387 bool needsStyleInvalidation() { return getFlag(NeedsStyleInvalidation); }
373 void clearNeedsStyleInvalidation() { clearFlag(NeedsStyleInvalidation); } 388 void clearNeedsStyleInvalidation() { clearFlag(NeedsStyleInvalidation); }
374 void setNeedsStyleInvalidation(); 389 void setNeedsStyleInvalidation();
375 390
376 void recalcDistribution(); 391 void recalcDistribution();
377 392
378 bool shouldNotifyRendererWithIdenticalStyles() const { return getFlag(Notify RendererWithIdenticalStyles); } 393 bool shouldNotifyRendererWithIdenticalStyles() const { return getFlag(Notify RendererWithIdenticalStyles); }
379 394
395 bool childrenAffectedByFocus() const { return hasRestyleFlag(ChildrenAffecte dByFocus); }
ojan 2014/03/21 22:39:12 What isn't all this stuff on ContainerNode?
396 void setChildrenAffectedByFocus() { setRestyleFlag(ChildrenAffectedByFocus); }
397
398 bool childrenAffectedByHover() const { return hasRestyleFlag(ChildrenAffecte dByHover); }
399 void setChildrenAffectedByHover() { setRestyleFlag(ChildrenAffectedByHover); }
400
401 bool childrenAffectedByActive() const { return hasRestyleFlag(ChildrenAffect edByActive); }
402 void setChildrenAffectedByActive() { setRestyleFlag(ChildrenAffectedByActive ); }
403
404 bool childrenAffectedByDrag() const { return hasRestyleFlag(ChildrenAffected ByDrag); }
405 void setChildrenAffectedByDrag() { setRestyleFlag(ChildrenAffectedByDrag); }
406
407 bool childrenAffectedByPositionalRules() const { return hasRestyleFlag(Child renAffectedByForwardPositionalRules) || hasRestyleFlag(ChildrenAffectedByBackwar dPositionalRules); }
408
409 bool childrenAffectedByFirstChildRules() const { return hasRestyleFlag(Child renAffectedByFirstChildRules); }
410 void setChildrenAffectedByFirstChildRules() { setRestyleFlag(ChildrenAffecte dByFirstChildRules); }
411
412 bool childrenAffectedByLastChildRules() const { return hasRestyleFlag(Childr enAffectedByLastChildRules); }
413 void setChildrenAffectedByLastChildRules() { setRestyleFlag(ChildrenAffected ByLastChildRules); }
414
415 bool childrenAffectedByDirectAdjacentRules() const { return hasRestyleFlag(C hildrenAffectedByDirectAdjacentRules); }
416 void setChildrenAffectedByDirectAdjacentRules() { setRestyleFlag(ChildrenAff ectedByDirectAdjacentRules); }
417
418 bool childrenAffectedByIndirectAdjacentRules() const { return hasRestyleFlag (ChildrenAffectedByIndirectAdjacentRules); }
419 void setChildrenAffectedByIndirectAdjacentRules() { setRestyleFlag(ChildrenA ffectedByIndirectAdjacentRules); }
420
421 bool childrenAffectedByForwardPositionalRules() const { return hasRestyleFla g(ChildrenAffectedByForwardPositionalRules); }
422 void setChildrenAffectedByForwardPositionalRules() { setRestyleFlag(Children AffectedByForwardPositionalRules); }
423
424 bool childrenAffectedByBackwardPositionalRules() const { return hasRestyleFl ag(ChildrenAffectedByBackwardPositionalRules); }
425 void setChildrenAffectedByBackwardPositionalRules() { setRestyleFlag(Childre nAffectedByBackwardPositionalRules); }
426
380 void setIsLink(bool f); 427 void setIsLink(bool f);
381 428
382 bool hasScopedHTMLStyleChild() const { return getFlag(HasScopedHTMLStyleChil dFlag); } 429 bool hasScopedHTMLStyleChild() const { return getFlag(HasScopedHTMLStyleChil dFlag); }
383 void setHasScopedHTMLStyleChild(bool flag) { setFlag(flag, HasScopedHTMLStyl eChildFlag); } 430 void setHasScopedHTMLStyleChild(bool flag) { setFlag(flag, HasScopedHTMLStyl eChildFlag); }
384 431
385 bool hasEventTargetData() const { return getFlag(HasEventTargetDataFlag); } 432 bool hasEventTargetData() const { return getFlag(HasEventTargetDataFlag); }
386 void setHasEventTargetData(bool flag) { setFlag(flag, HasEventTargetDataFlag ); } 433 void setHasEventTargetData(bool flag) { setFlag(flag, HasEventTargetDataFlag ); }
387 434
388 bool isV8CollectableDuringMinorGC() const { return getFlag(V8CollectableDuri ngMinorGCFlag); } 435 bool isV8CollectableDuringMinorGC() const { return getFlag(V8CollectableDuri ngMinorGCFlag); }
389 void markV8CollectableDuringMinorGC() { setFlag(true, V8CollectableDuringMin orGCFlag); } 436 void markV8CollectableDuringMinorGC() { setFlag(true, V8CollectableDuringMin orGCFlag); }
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 void incrementConnectedSubframeCount(unsigned amount = 1); 712 void incrementConnectedSubframeCount(unsigned amount = 1);
666 void decrementConnectedSubframeCount(unsigned amount = 1); 713 void decrementConnectedSubframeCount(unsigned amount = 1);
667 void updateAncestorConnectedSubframeCountForRemoval() const; 714 void updateAncestorConnectedSubframeCountForRemoval() const;
668 void updateAncestorConnectedSubframeCountForInsertion() const; 715 void updateAncestorConnectedSubframeCountForInsertion() const;
669 716
670 PassRefPtr<NodeList> getDestinationInsertionPoints(); 717 PassRefPtr<NodeList> getDestinationInsertionPoints();
671 718
672 void setAlreadySpellChecked(bool flag) { setFlag(flag, AlreadySpellCheckedFl ag); } 719 void setAlreadySpellChecked(bool flag) { setFlag(flag, AlreadySpellCheckedFl ag); }
673 bool isAlreadySpellChecked() { return getFlag(AlreadySpellCheckedFlag); } 720 bool isAlreadySpellChecked() { return getFlag(AlreadySpellCheckedFlag); }
674 721
722 bool isFinishedParsingChildren() const { return getFlag(IsFinishedParsingChi ldrenFlag); }
723 bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); }
724
675 private: 725 private:
676 enum NodeFlags { 726 enum NodeFlags {
677 IsTextFlag = 1, 727 IsTextFlag = 1,
678 IsContainerFlag = 1 << 1, 728 IsContainerFlag = 1 << 1,
679 IsElementFlag = 1 << 2, 729 IsElementFlag = 1 << 2,
680 IsHTMLFlag = 1 << 3, 730 IsHTMLFlag = 1 << 3,
681 IsSVGFlag = 1 << 4, 731 IsSVGFlag = 1 << 4,
682 732
683 ChildNeedsDistributionRecalc = 1 << 5, 733 ChildNeedsDistributionRecalc = 1 << 5,
684 ChildNeedsStyleRecalcFlag = 1 << 6, 734 ChildNeedsStyleRecalcFlag = 1 << 6,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 DefaultNodeFlags = IsFinishedParsingChildrenFlag | ChildNeedsStyleRecalc Flag | NeedsReattachStyleChange 771 DefaultNodeFlags = IsFinishedParsingChildrenFlag | ChildNeedsStyleRecalc Flag | NeedsReattachStyleChange
722 }; 772 };
723 773
724 // 3 bits remaining. 774 // 3 bits remaining.
725 775
726 bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; } 776 bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; }
727 void setFlag(bool f, NodeFlags mask) const { m_nodeFlags = (m_nodeFlags & ~m ask) | (-(int32_t)f & mask); } 777 void setFlag(bool f, NodeFlags mask) const { m_nodeFlags = (m_nodeFlags & ~m ask) | (-(int32_t)f & mask); }
728 void setFlag(NodeFlags mask) const { m_nodeFlags |= mask; } 778 void setFlag(NodeFlags mask) const { m_nodeFlags |= mask; }
729 void clearFlag(NodeFlags mask) const { m_nodeFlags &= ~mask; } 779 void clearFlag(NodeFlags mask) const { m_nodeFlags &= ~mask; }
730 780
781 bool hasRestyleFlag(DynamicRestyleFlags mask) const { return hasRareData() & & hasRestyleFlagInternal(mask); }
782 bool hasRestyleFlags() const { return hasRareData() && hasRestyleFlagsIntern al(); }
783 void setRestyleFlag(DynamicRestyleFlags);
784 bool hasRestyleFlagInternal(DynamicRestyleFlags) const;
785 bool hasRestyleFlagsInternal() const;
786
731 protected: 787 protected:
732 enum ConstructionType { 788 enum ConstructionType {
733 CreateOther = DefaultNodeFlags, 789 CreateOther = DefaultNodeFlags,
734 CreateText = DefaultNodeFlags | IsTextFlag, 790 CreateText = DefaultNodeFlags | IsTextFlag,
735 CreateContainer = DefaultNodeFlags | IsContainerFlag, 791 CreateContainer = DefaultNodeFlags | IsContainerFlag,
736 CreateElement = CreateContainer | IsElementFlag, 792 CreateElement = CreateContainer | IsElementFlag,
737 CreateShadowRoot = CreateContainer | IsDocumentFragmentFlag | IsInShadow TreeFlag, 793 CreateShadowRoot = CreateContainer | IsDocumentFragmentFlag | IsInShadow TreeFlag,
738 CreateDocumentFragment = CreateContainer | IsDocumentFragmentFlag, 794 CreateDocumentFragment = CreateContainer | IsDocumentFragmentFlag,
739 CreateHTMLElement = CreateElement | IsHTMLFlag, 795 CreateHTMLElement = CreateElement | IsHTMLFlag,
740 CreateSVGElement = CreateElement | IsSVGFlag, 796 CreateSVGElement = CreateElement | IsSVGFlag,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 835
780 void setTreeScope(TreeScope* scope) { m_treeScope = scope; } 836 void setTreeScope(TreeScope* scope) { m_treeScope = scope; }
781 837
782 // isTreeScopeInitialized() can be false 838 // isTreeScopeInitialized() can be false
783 // - in the destruction of Document or ShadowRoot where m_treeScope is set t o null or 839 // - in the destruction of Document or ShadowRoot where m_treeScope is set t o null or
784 // - in the Node constructor called by these two classes where m_treeScope i s set by TreeScope ctor. 840 // - in the Node constructor called by these two classes where m_treeScope i s set by TreeScope ctor.
785 bool isTreeScopeInitialized() const { return m_treeScope; } 841 bool isTreeScopeInitialized() const { return m_treeScope; }
786 842
787 void markAncestorsWithChildNeedsStyleRecalc(); 843 void markAncestorsWithChildNeedsStyleRecalc();
788 844
789 bool isFinishedParsingChildren() const { return getFlag(IsFinishedParsingChi ldrenFlag); }
790 void setIsFinishedParsingChildren(bool value) { setFlag(value, IsFinishedPar singChildrenFlag); } 845 void setIsFinishedParsingChildren(bool value) { setFlag(value, IsFinishedPar singChildrenFlag); }
791 846
792 private: 847 private:
793 friend class TreeShared<Node>; 848 friend class TreeShared<Node>;
794 849
795 virtual PseudoId customPseudoId() const 850 virtual PseudoId customPseudoId() const
796 { 851 {
797 ASSERT(hasCustomStyleCallbacks()); 852 ASSERT(hasCustomStyleCallbacks());
798 return NOPSEUDO; 853 return NOPSEUDO;
799 } 854 }
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 } // namespace WebCore 962 } // namespace WebCore
908 963
909 #ifndef NDEBUG 964 #ifndef NDEBUG
910 // Outside the WebCore namespace for ease of invocation from gdb. 965 // Outside the WebCore namespace for ease of invocation from gdb.
911 void showNode(const WebCore::Node*); 966 void showNode(const WebCore::Node*);
912 void showTree(const WebCore::Node*); 967 void showTree(const WebCore::Node*);
913 void showNodePath(const WebCore::Node*); 968 void showNodePath(const WebCore::Node*);
914 #endif 969 #endif
915 970
916 #endif 971 #endif
OLDNEW
« no previous file with comments | « Source/core/dom/ElementRareData.h ('k') | Source/core/dom/Node.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698