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

Side by Side Diff: third_party/WebKit/Source/core/dom/NodeRareData.h

Issue 1770523002: Track connected subframes per-Document instead of per-Node. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix various crashes but still doesn't refcount tracked nodes (and needs to) Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2008, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 David Smith <catfish.man@gmail.com> 3 * Copyright (C) 2008 David Smith <catfish.man@gmail.com>
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 } 74 }
75 75
76 NodeMutationObserverData* mutationObserverData() { return m_mutationObserver Data.get(); } 76 NodeMutationObserverData* mutationObserverData() { return m_mutationObserver Data.get(); }
77 NodeMutationObserverData& ensureMutationObserverData() 77 NodeMutationObserverData& ensureMutationObserverData()
78 { 78 {
79 if (!m_mutationObserverData) 79 if (!m_mutationObserverData)
80 m_mutationObserverData = NodeMutationObserverData::create(); 80 m_mutationObserverData = NodeMutationObserverData::create();
81 return *m_mutationObserverData; 81 return *m_mutationObserverData;
82 } 82 }
83 83
84 unsigned connectedSubframeCount() const { return m_connectedFrameCount; }
85 void incrementConnectedSubframeCount(unsigned amount);
86 void decrementConnectedSubframeCount(unsigned amount)
87 {
88 ASSERT(m_connectedFrameCount);
89 ASSERT(amount <= m_connectedFrameCount);
90 m_connectedFrameCount -= amount;
91 }
92
93 bool hasElementFlag(ElementFlags mask) const { return m_elementFlags & mask; } 84 bool hasElementFlag(ElementFlags mask) const { return m_elementFlags & mask; }
94 void setElementFlag(ElementFlags mask, bool value) { m_elementFlags = (m_ele mentFlags & ~mask) | (-(int32_t)value & mask); } 85 void setElementFlag(ElementFlags mask, bool value) { m_elementFlags = (m_ele mentFlags & ~mask) | (-(int32_t)value & mask); }
95 void clearElementFlag(ElementFlags mask) { m_elementFlags &= ~mask; } 86 void clearElementFlag(ElementFlags mask) { m_elementFlags &= ~mask; }
96 87
97 bool hasRestyleFlag(DynamicRestyleFlags mask) const { return m_restyleFlags & mask; } 88 bool hasRestyleFlag(DynamicRestyleFlags mask) const { return m_restyleFlags & mask; }
98 void setRestyleFlag(DynamicRestyleFlags mask) { m_restyleFlags |= mask; RELE ASE_ASSERT(m_restyleFlags); } 89 void setRestyleFlag(DynamicRestyleFlags mask) { m_restyleFlags |= mask; RELE ASE_ASSERT(m_restyleFlags); }
99 bool hasRestyleFlags() const { return m_restyleFlags; } 90 bool hasRestyleFlags() const { return m_restyleFlags; }
100 void clearRestyleFlags() { m_restyleFlags = 0; } 91 void clearRestyleFlags() { m_restyleFlags = 0; }
101 92
102 enum {
103 ConnectedFrameCountBits = 10, // Must fit Page::maxNumberOfFrames.
104 };
105
106 DECLARE_TRACE(); 93 DECLARE_TRACE();
107 94
108 DECLARE_TRACE_AFTER_DISPATCH(); 95 DECLARE_TRACE_AFTER_DISPATCH();
109 void finalizeGarbageCollectedObject(); 96 void finalizeGarbageCollectedObject();
110 97
111 protected: 98 protected:
112 explicit NodeRareData(LayoutObject* layoutObject) 99 explicit NodeRareData(LayoutObject* layoutObject)
113 : NodeRareDataBase(layoutObject) 100 : NodeRareDataBase(layoutObject)
114 , m_connectedFrameCount(0)
115 , m_elementFlags(0) 101 , m_elementFlags(0)
116 , m_restyleFlags(0) 102 , m_restyleFlags(0)
117 , m_isElementRareData(false) 103 , m_isElementRareData(false)
118 { } 104 { }
119 105
120 private: 106 private:
121 OwnPtrWillBeMember<NodeListsNodeData> m_nodeLists; 107 OwnPtrWillBeMember<NodeListsNodeData> m_nodeLists;
122 OwnPtrWillBeMember<NodeMutationObserverData> m_mutationObserverData; 108 OwnPtrWillBeMember<NodeMutationObserverData> m_mutationObserverData;
123 109
124 unsigned m_connectedFrameCount : ConnectedFrameCountBits;
125 unsigned m_elementFlags : NumberOfElementFlags; 110 unsigned m_elementFlags : NumberOfElementFlags;
126 unsigned m_restyleFlags : NumberOfDynamicRestyleFlags; 111 unsigned m_restyleFlags : NumberOfDynamicRestyleFlags;
127 protected: 112 protected:
128 unsigned m_isElementRareData : 1; 113 unsigned m_isElementRareData : 1;
129 }; 114 };
130 115
131 } // namespace blink 116 } // namespace blink
132 117
133 #endif // NodeRareData_h 118 #endif // NodeRareData_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/Node.cpp ('k') | third_party/WebKit/Source/core/dom/NodeRareData.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698