| 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 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004-2011, 2014 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004-2011, 2014 Apple Inc. All rights 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 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 virtual int maxCharacterOffset() const; | 474 virtual int maxCharacterOffset() const; |
| 475 | 475 |
| 476 // Whether or not a selection can be started in this object | 476 // Whether or not a selection can be started in this object |
| 477 virtual bool canStartSelection() const; | 477 virtual bool canStartSelection() const; |
| 478 | 478 |
| 479 // -------------------------------------------------------------------------
---- | 479 // -------------------------------------------------------------------------
---- |
| 480 // Integration with layout tree | 480 // Integration with layout tree |
| 481 | 481 |
| 482 // As layoutObject() includes a branch you should avoid calling it repeatedl
y in hot code paths. | 482 // As layoutObject() includes a branch you should avoid calling it repeatedl
y in hot code paths. |
| 483 // Note that if a Node has a layoutObject, it's parentNode is guaranteed to
have one as well. | 483 // Note that if a Node has a layoutObject, it's parentNode is guaranteed to
have one as well. |
| 484 LayoutObject* layoutObject() const | 484 LayoutObject* layoutObject() const { return hasRareData() ? m_data.m_rareDat
a->layoutObject() : m_data.m_layoutObject; } |
| 485 { | |
| 486 if (hasRareData()) | |
| 487 return m_data.m_rareData->layoutObject(); | |
| 488 return hasLayoutObject() ? m_data.m_layoutObject : nullptr; | |
| 489 } | |
| 490 void setLayoutObject(LayoutObject* layoutObject) | 485 void setLayoutObject(LayoutObject* layoutObject) |
| 491 { | 486 { |
| 492 if (hasRareData()) | 487 if (hasRareData()) |
| 493 m_data.m_rareData->setLayoutObject(layoutObject); | 488 m_data.m_rareData->setLayoutObject(layoutObject); |
| 494 else | 489 else |
| 495 m_data.m_layoutObject = layoutObject; | 490 m_data.m_layoutObject = layoutObject; |
| 496 setFlag(static_cast<bool>(layoutObject), HasLayoutObjectFlag); | |
| 497 } | 491 } |
| 498 | 492 |
| 499 // Use these two methods with caution. | 493 // Use these two methods with caution. |
| 500 LayoutBox* layoutBox() const; | 494 LayoutBox* layoutBox() const; |
| 501 LayoutBoxModelObject* layoutBoxModelObject() const; | 495 LayoutBoxModelObject* layoutBoxModelObject() const; |
| 502 | 496 |
| 503 struct AttachContext { | 497 struct AttachContext { |
| 504 STACK_ALLOCATED(); | 498 STACK_ALLOCATED(); |
| 505 ComputedStyle* resolvedStyle = nullptr; | 499 ComputedStyle* resolvedStyle = nullptr; |
| 506 bool performingReattach = false; | 500 bool performingReattach = false; |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 699 | 693 |
| 700 HasNameOrIsEditingTextFlag = 1 << 23, | 694 HasNameOrIsEditingTextFlag = 1 << 23, |
| 701 HasWeakReferencesFlag = 1 << 24, | 695 HasWeakReferencesFlag = 1 << 24, |
| 702 V8CollectableDuringMinorGCFlag = 1 << 25, | 696 V8CollectableDuringMinorGCFlag = 1 << 25, |
| 703 HasEventTargetDataFlag = 1 << 26, | 697 HasEventTargetDataFlag = 1 << 26, |
| 704 AlreadySpellCheckedFlag = 1 << 27, | 698 AlreadySpellCheckedFlag = 1 << 27, |
| 705 | 699 |
| 706 V0CustomElementFlag = 1 << 28, | 700 V0CustomElementFlag = 1 << 28, |
| 707 V0CustomElementUpgradedFlag = 1 << 29, | 701 V0CustomElementUpgradedFlag = 1 << 29, |
| 708 | 702 |
| 709 HasLayoutObjectFlag = 1 << 30, | |
| 710 | |
| 711 DefaultNodeFlags = IsFinishedParsingChildrenFlag | NeedsReattachStyleCha
nge | 703 DefaultNodeFlags = IsFinishedParsingChildrenFlag | NeedsReattachStyleCha
nge |
| 712 }; | 704 }; |
| 713 | 705 |
| 714 // 1 bit remaining. | 706 // 3 bits remaining. |
| 715 | 707 |
| 716 bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; } | 708 bool getFlag(NodeFlags mask) const { return m_nodeFlags & mask; } |
| 717 void setFlag(bool f, NodeFlags mask) { m_nodeFlags = (m_nodeFlags & ~mask) |
(-(int32_t)f & mask); } | 709 void setFlag(bool f, NodeFlags mask) { m_nodeFlags = (m_nodeFlags & ~mask) |
(-(int32_t)f & mask); } |
| 718 void setFlag(NodeFlags mask) { m_nodeFlags |= mask; } | 710 void setFlag(NodeFlags mask) { m_nodeFlags |= mask; } |
| 719 void clearFlag(NodeFlags mask) { m_nodeFlags &= ~mask; } | 711 void clearFlag(NodeFlags mask) { m_nodeFlags &= ~mask; } |
| 720 | 712 |
| 721 protected: | 713 protected: |
| 722 enum ConstructionType { | 714 enum ConstructionType { |
| 723 CreateOther = DefaultNodeFlags, | 715 CreateOther = DefaultNodeFlags, |
| 724 CreateText = DefaultNodeFlags | IsTextFlag, | 716 CreateText = DefaultNodeFlags | IsTextFlag, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 736 Node(TreeScope*, ConstructionType); | 728 Node(TreeScope*, ConstructionType); |
| 737 | 729 |
| 738 virtual void didMoveToNewDocument(Document& oldDocument); | 730 virtual void didMoveToNewDocument(Document& oldDocument); |
| 739 | 731 |
| 740 void addedEventListener(const AtomicString& eventType, RegisteredEventListen
er&) override; | 732 void addedEventListener(const AtomicString& eventType, RegisteredEventListen
er&) override; |
| 741 void removedEventListener(const AtomicString& eventType, const RegisteredEve
ntListener&) override; | 733 void removedEventListener(const AtomicString& eventType, const RegisteredEve
ntListener&) override; |
| 742 DispatchEventResult dispatchEventInternal(Event*) override; | 734 DispatchEventResult dispatchEventInternal(Event*) override; |
| 743 | 735 |
| 744 static void reattachWhitespaceSiblingsIfNeeded(Text* start); | 736 static void reattachWhitespaceSiblingsIfNeeded(Text* start); |
| 745 | 737 |
| 746 bool hasLayoutObject() const { return getFlag(HasLayoutObjectFlag); } | |
| 747 bool hasRareData() const { return getFlag(HasRareDataFlag); } | 738 bool hasRareData() const { return getFlag(HasRareDataFlag); } |
| 748 | 739 |
| 749 NodeRareData* rareData() const; | 740 NodeRareData* rareData() const; |
| 750 NodeRareData& ensureRareData(); | 741 NodeRareData& ensureRareData(); |
| 751 | 742 |
| 752 void setHasCustomStyleCallbacks() { setFlag(true, HasCustomStyleCallbacksFla
g); } | 743 void setHasCustomStyleCallbacks() { setFlag(true, HasCustomStyleCallbacksFla
g); } |
| 753 | 744 |
| 754 void setTreeScope(TreeScope* scope) { m_treeScope = scope; } | 745 void setTreeScope(TreeScope* scope) { m_treeScope = scope; } |
| 755 | 746 |
| 756 // isTreeScopeInitialized() can be false | 747 // isTreeScopeInitialized() can be false |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 HeapHashSet<Member<MutationObserverRegistration>>* transientMutationObserver
Registry(); | 782 HeapHashSet<Member<MutationObserverRegistration>>* transientMutationObserver
Registry(); |
| 792 | 783 |
| 793 uint32_t m_nodeFlags; | 784 uint32_t m_nodeFlags; |
| 794 Member<ContainerNode> m_parentOrShadowHostNode; | 785 Member<ContainerNode> m_parentOrShadowHostNode; |
| 795 Member<TreeScope> m_treeScope; | 786 Member<TreeScope> m_treeScope; |
| 796 Member<Node> m_previous; | 787 Member<Node> m_previous; |
| 797 Member<Node> m_next; | 788 Member<Node> m_next; |
| 798 // When a node has rare data we move the layoutObject into the rare data. | 789 // When a node has rare data we move the layoutObject into the rare data. |
| 799 union DataUnion { | 790 union DataUnion { |
| 800 DataUnion() : m_layoutObject(nullptr) { } | 791 DataUnion() : m_layoutObject(nullptr) { } |
| 801 ComputedStyle* m_computedStyle; | |
| 802 // LayoutObjects are fully owned by their DOM node. See LayoutObject's | 792 // LayoutObjects are fully owned by their DOM node. See LayoutObject's |
| 803 // LIFETIME documentation section. | 793 // LIFETIME documentation section. |
| 804 LayoutObject* m_layoutObject; | 794 LayoutObject* m_layoutObject; |
| 805 NodeRareDataBase* m_rareData; | 795 NodeRareDataBase* m_rareData; |
| 806 } m_data; | 796 } m_data; |
| 807 }; | 797 }; |
| 808 | 798 |
| 809 inline void Node::setParentOrShadowHostNode(ContainerNode* parent) | 799 inline void Node::setParentOrShadowHostNode(ContainerNode* parent) |
| 810 { | 800 { |
| 811 DCHECK(isMainThread()); | 801 DCHECK(isMainThread()); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 884 } // namespace blink | 874 } // namespace blink |
| 885 | 875 |
| 886 #ifndef NDEBUG | 876 #ifndef NDEBUG |
| 887 // Outside the WebCore namespace for ease of invocation from gdb. | 877 // Outside the WebCore namespace for ease of invocation from gdb. |
| 888 void showNode(const blink::Node*); | 878 void showNode(const blink::Node*); |
| 889 void showTree(const blink::Node*); | 879 void showTree(const blink::Node*); |
| 890 void showNodePath(const blink::Node*); | 880 void showNodePath(const blink::Node*); |
| 891 #endif | 881 #endif |
| 892 | 882 |
| 893 #endif // Node_h | 883 #endif // Node_h |
| OLD | NEW |