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

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

Issue 235113002: Oilpan: Remove guardRef and guardDeref from TreeScope. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All Rights Reserved. 2 * Copyright (C) 2011 Google Inc. All Rights Reserved.
3 * Copyright (C) 2012 Apple Inc. All Rights Reserved. 3 * Copyright (C) 2012 Apple Inc. All Rights Reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 95
96 bool applyAuthorStyles() const; 96 bool applyAuthorStyles() const;
97 97
98 // Used by the basic DOM mutation methods (e.g., appendChild()). 98 // Used by the basic DOM mutation methods (e.g., appendChild()).
99 void adoptIfNeeded(Node&); 99 void adoptIfNeeded(Node&);
100 100
101 Node& rootNode() const { return m_rootNode; } 101 Node& rootNode() const { return m_rootNode; }
102 102
103 IdTargetObserverRegistry& idTargetObserverRegistry() const { return *m_idTar getObserverRegistry.get(); } 103 IdTargetObserverRegistry& idTargetObserverRegistry() const { return *m_idTar getObserverRegistry.get(); }
104 104
105
106 #if !ENABLE(OILPAN)
105 // Nodes belonging to this scope hold guard references - 107 // Nodes belonging to this scope hold guard references -
106 // these are enough to keep the scope from being destroyed, but 108 // these are enough to keep the scope from being destroyed, but
107 // not enough to keep it from removing its children. This allows a 109 // not enough to keep it from removing its children. This allows a
108 // node that outlives its scope to still have a valid document 110 // node that outlives its scope to still have a valid document
109 // pointer without introducing reference cycles. 111 // pointer without introducing reference cycles.
110 void guardRef() 112 void guardRef()
111 { 113 {
112 #if ENABLE(OILPAN) 114 #if ENABLE(OILPAN)
113 if (!m_guardRefCount) { 115 if (!m_guardRefCount) {
114 ASSERT(!m_keepAlive); 116 ASSERT(!m_keepAlive);
(...skipping 15 matching lines...) Expand all
130 #if ENABLE(OILPAN) 132 #if ENABLE(OILPAN)
131 if (!m_guardRefCount) 133 if (!m_guardRefCount)
132 clearKeepAlive(); 134 clearKeepAlive();
133 #else 135 #else
134 if (!m_guardRefCount && !refCount() && !rootNodeHasTreeSharedParent()) { 136 if (!m_guardRefCount && !refCount() && !rootNodeHasTreeSharedParent()) {
135 beginDeletion(); 137 beginDeletion();
136 delete this; 138 delete this;
137 } 139 }
138 #endif 140 #endif
139 } 141 }
142 #endif
140 143
141 void removedLastRefToScope(); 144 void removedLastRefToScope();
142 145
143 #if ENABLE(OILPAN) 146 #if ENABLE(OILPAN)
144 void clearKeepAlive() 147 void clearKeepAlive()
145 { 148 {
146 ASSERT(m_keepAlive); 149 ASSERT(m_keepAlive);
147 m_keepAlive = nullptr; 150 m_keepAlive = nullptr;
148 } 151 }
149 #endif 152 #endif
150 153
151 bool isInclusiveAncestorOf(const TreeScope&) const; 154 bool isInclusiveAncestorOf(const TreeScope&) const;
152 unsigned short comparePosition(const TreeScope&) const; 155 unsigned short comparePosition(const TreeScope&) const;
153 156
154 Element* getElementByAccessKey(const String& key) const; 157 Element* getElementByAccessKey(const String& key) const;
155 158
159 virtual void trace(Visitor*);
160
156 protected: 161 protected:
157 TreeScope(ContainerNode&, Document&); 162 TreeScope(ContainerNode&, Document&);
158 TreeScope(Document&); 163 TreeScope(Document&);
159 virtual ~TreeScope(); 164 virtual ~TreeScope();
160 165
161 void destroyTreeScopeData(); 166 void destroyTreeScopeData();
162 void setDocument(Document& document) { m_document = &document; } 167 void setDocument(Document& document) { m_document = &document; }
163 void setParentTreeScope(TreeScope&); 168 void setParentTreeScope(TreeScope&);
164 169
165 bool hasGuardRefCount() const { return m_guardRefCount; } 170 bool hasGuardRefCount() const { return m_guardRefCount; }
166 171
167 void setNeedsStyleRecalcForViewportUnits(); 172 void setNeedsStyleRecalcForViewportUnits();
168 173
169 private: 174 private:
170 virtual void dispose() { } 175 virtual void dispose() { }
171 176
172 int refCount() const; 177 int refCount() const;
173 #if SECURITY_ASSERT_ENABLED 178 #if SECURITY_ASSERT_ENABLED
174 bool deletionHasBegun(); 179 bool deletionHasBegun();
175 void beginDeletion(); 180 void beginDeletion();
176 #else 181 #else
177 bool deletionHasBegun() { return false; } 182 bool deletionHasBegun() { return false; }
178 void beginDeletion() { } 183 void beginDeletion() { }
179 #endif 184 #endif
180 185
181 bool rootNodeHasTreeSharedParent() const; 186 bool rootNodeHasTreeSharedParent() const;
182 187
183 Node& m_rootNode; 188 Node& m_rootNode;
184 Document* m_document; 189 Document* m_document;
185 TreeScope* m_parentTreeScope; 190 RawPtrWillBeMember<TreeScope> m_parentTreeScope;
186 int m_guardRefCount; 191 int m_guardRefCount;
187 192
188 OwnPtr<DocumentOrderedMap> m_elementsById; 193 OwnPtr<DocumentOrderedMap> m_elementsById;
189 OwnPtr<DocumentOrderedMap> m_imageMapsByName; 194 OwnPtr<DocumentOrderedMap> m_imageMapsByName;
190 OwnPtr<DocumentOrderedMap> m_labelsByForAttribute; 195 OwnPtr<DocumentOrderedMap> m_labelsByForAttribute;
191 196
192 OwnPtr<IdTargetObserverRegistry> m_idTargetObserverRegistry; 197 OwnPtr<IdTargetObserverRegistry> m_idTargetObserverRegistry;
193 198
194 #if ENABLE(OILPAN) 199 #if ENABLE(OILPAN)
195 // With Oilpan, a non-zero reference count will keep the TreeScope alive 200 // With Oilpan, a non-zero reference count will keep the TreeScope alive
(...skipping 29 matching lines...) Expand all
225 inline bool operator!=(const TreeScope& a, const TreeScope& b) { return !(a == b ); } 230 inline bool operator!=(const TreeScope& a, const TreeScope& b) { return !(a == b ); }
226 inline bool operator!=(const TreeScope& a, const TreeScope* b) { return !(a == b ); } 231 inline bool operator!=(const TreeScope& a, const TreeScope* b) { return !(a == b ); }
227 inline bool operator!=(const TreeScope* a, const TreeScope& b) { return !(a == b ); } 232 inline bool operator!=(const TreeScope* a, const TreeScope& b) { return !(a == b ); }
228 233
229 HitTestResult hitTestInDocument(const Document*, int x, int y); 234 HitTestResult hitTestInDocument(const Document*, int x, int y);
230 TreeScope* commonTreeScope(Node*, Node*); 235 TreeScope* commonTreeScope(Node*, Node*);
231 236
232 } // namespace WebCore 237 } // namespace WebCore
233 238
234 #endif // TreeScope_h 239 #endif // TreeScope_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698