| 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 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r
ights reserved. |
| 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
| 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 9 * Copyright (C) 2011 Google Inc. All rights reserved. | 9 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 10 * | 10 * |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 { | 221 { |
| 222 return adoptRef(new Document(frame, url, true, false)); | 222 return adoptRef(new Document(frame, url, true, false)); |
| 223 } | 223 } |
| 224 virtual ~Document(); | 224 virtual ~Document(); |
| 225 | 225 |
| 226 MediaQueryMatcher* mediaQueryMatcher(); | 226 MediaQueryMatcher* mediaQueryMatcher(); |
| 227 | 227 |
| 228 using ContainerNode::ref; | 228 using ContainerNode::ref; |
| 229 using ContainerNode::deref; | 229 using ContainerNode::deref; |
| 230 | 230 |
| 231 // Nodes belonging to this document hold guard references - | |
| 232 // these are enough to keep the document from being destroyed, but | |
| 233 // not enough to keep it from removing its children. This allows a | |
| 234 // node that outlives its document to still have a valid document | |
| 235 // pointer without introducing reference cycles. | |
| 236 void guardRef() | |
| 237 { | |
| 238 ASSERT(!m_deletionHasBegun); | |
| 239 ++m_guardRefCount; | |
| 240 } | |
| 241 | |
| 242 void guardDeref() | |
| 243 { | |
| 244 ASSERT(!m_deletionHasBegun); | |
| 245 --m_guardRefCount; | |
| 246 if (!m_guardRefCount && !refCount()) { | |
| 247 #ifndef NDEBUG | |
| 248 m_deletionHasBegun = true; | |
| 249 #endif | |
| 250 delete this; | |
| 251 } | |
| 252 } | |
| 253 | |
| 254 Element* getElementById(const AtomicString& id) const; | 231 Element* getElementById(const AtomicString& id) const; |
| 255 | 232 |
| 256 virtual bool canContainRangeEndPoint() const { return true; } | 233 virtual bool canContainRangeEndPoint() const { return true; } |
| 257 | 234 |
| 258 Element* getElementByAccessKey(const String& key); | 235 Element* getElementByAccessKey(const String& key); |
| 259 void invalidateAccessKeyMap(); | 236 void invalidateAccessKeyMap(); |
| 260 | 237 |
| 261 SelectorQueryCache* selectorQueryCache(); | 238 SelectorQueryCache* selectorQueryCache(); |
| 262 | 239 |
| 263 // DOM methods & attributes for Document | 240 // DOM methods & attributes for Document |
| (...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1210 Document(Frame*, const KURL&, bool isXHTML, bool isHTML); | 1187 Document(Frame*, const KURL&, bool isXHTML, bool isHTML); |
| 1211 | 1188 |
| 1212 virtual void didUpdateSecurityOrigin() OVERRIDE; | 1189 virtual void didUpdateSecurityOrigin() OVERRIDE; |
| 1213 | 1190 |
| 1214 void clearXMLVersion() { m_xmlVersion = String(); } | 1191 void clearXMLVersion() { m_xmlVersion = String(); } |
| 1215 | 1192 |
| 1216 private: | 1193 private: |
| 1217 friend class Node; | 1194 friend class Node; |
| 1218 friend class IgnoreDestructiveWriteCountIncrementer; | 1195 friend class IgnoreDestructiveWriteCountIncrementer; |
| 1219 | 1196 |
| 1220 void removedLastRef(); | 1197 virtual void dispose() OVERRIDE; |
| 1221 | 1198 |
| 1222 void detachParser(); | 1199 void detachParser(); |
| 1223 | 1200 |
| 1224 typedef void (*ArgumentsCallback)(const String& keyString, const String& val
ueString, Document*, void* data); | 1201 typedef void (*ArgumentsCallback)(const String& keyString, const String& val
ueString, Document*, void* data); |
| 1225 void processArguments(const String& features, void* data, ArgumentsCallback)
; | 1202 void processArguments(const String& features, void* data, ArgumentsCallback)
; |
| 1226 | 1203 |
| 1227 virtual bool isDocument() const { return true; } | 1204 virtual bool isDocument() const { return true; } |
| 1228 | 1205 |
| 1229 virtual void childrenChanged(bool changedByParser = false, Node* beforeChang
e = 0, Node* afterChange = 0, int childCountDelta = 0); | 1206 virtual void childrenChanged(bool changedByParser = false, Node* beforeChang
e = 0, Node* afterChange = 0, int childCountDelta = 0); |
| 1230 | 1207 |
| 1231 virtual String nodeName() const; | 1208 virtual String nodeName() const; |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1279 void addDocumentToFullScreenChangeEventQueue(Document*); | 1256 void addDocumentToFullScreenChangeEventQueue(Document*); |
| 1280 #endif | 1257 #endif |
| 1281 | 1258 |
| 1282 void setVisualUpdatesAllowed(ReadyState); | 1259 void setVisualUpdatesAllowed(ReadyState); |
| 1283 void setVisualUpdatesAllowed(bool); | 1260 void setVisualUpdatesAllowed(bool); |
| 1284 void visualUpdatesSuppressionTimerFired(Timer<Document>*); | 1261 void visualUpdatesSuppressionTimerFired(Timer<Document>*); |
| 1285 | 1262 |
| 1286 void addListenerType(ListenerType listenerType) { m_listenerTypes |= listene
rType; } | 1263 void addListenerType(ListenerType listenerType) { m_listenerTypes |= listene
rType; } |
| 1287 void addMutationEventListenerTypeIfEnabled(ListenerType); | 1264 void addMutationEventListenerTypeIfEnabled(ListenerType); |
| 1288 | 1265 |
| 1289 int m_guardRefCount; | |
| 1290 | |
| 1291 void styleResolverThrowawayTimerFired(Timer<Document>*); | 1266 void styleResolverThrowawayTimerFired(Timer<Document>*); |
| 1292 Timer<Document> m_styleResolverThrowawayTimer; | 1267 Timer<Document> m_styleResolverThrowawayTimer; |
| 1293 double m_lastStyleResolverAccessTime; | 1268 double m_lastStyleResolverAccessTime; |
| 1294 | 1269 |
| 1295 OwnPtr<StyleResolver> m_styleResolver; | 1270 OwnPtr<StyleResolver> m_styleResolver; |
| 1296 bool m_didCalculateStyleResolver; | 1271 bool m_didCalculateStyleResolver; |
| 1297 bool m_hasDirtyStyleResolver; | 1272 bool m_hasDirtyStyleResolver; |
| 1298 bool m_hasNodesWithPlaceholderStyle; | 1273 bool m_hasNodesWithPlaceholderStyle; |
| 1299 bool m_needsNotifyRemoveAllPendingStylesheet; | 1274 bool m_needsNotifyRemoveAllPendingStylesheet; |
| 1300 // But sometimes you need to ignore pending stylesheet count to | 1275 // But sometimes you need to ignore pending stylesheet count to |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1596 return this == documentInternal(); | 1571 return this == documentInternal(); |
| 1597 } | 1572 } |
| 1598 | 1573 |
| 1599 inline Node::Node(Document* document, ConstructionType type) | 1574 inline Node::Node(Document* document, ConstructionType type) |
| 1600 : m_nodeFlags(type) | 1575 : m_nodeFlags(type) |
| 1601 , m_parentOrShadowHostNode(0) | 1576 , m_parentOrShadowHostNode(0) |
| 1602 , m_treeScope(document) | 1577 , m_treeScope(document) |
| 1603 , m_previous(0) | 1578 , m_previous(0) |
| 1604 , m_next(0) | 1579 , m_next(0) |
| 1605 { | 1580 { |
| 1606 if (document) | 1581 if (!m_treeScope) |
| 1607 document->guardRef(); | |
| 1608 else | |
| 1609 m_treeScope = TreeScope::noDocumentInstance(); | 1582 m_treeScope = TreeScope::noDocumentInstance(); |
| 1583 m_treeScope->guardRef(); |
| 1610 | 1584 |
| 1611 #if !defined(NDEBUG) || (defined(DUMP_NODE_STATISTICS) && DUMP_NODE_STATISTICS) | 1585 #if !defined(NDEBUG) || (defined(DUMP_NODE_STATISTICS) && DUMP_NODE_STATISTICS) |
| 1612 trackForDebugging(); | 1586 trackForDebugging(); |
| 1613 #endif | 1587 #endif |
| 1614 InspectorCounters::incrementCounter(InspectorCounters::NodeCounter); | 1588 InspectorCounters::incrementCounter(InspectorCounters::NodeCounter); |
| 1615 } | 1589 } |
| 1616 | 1590 |
| 1617 Node* eventTargetNodeForDocument(Document*); | 1591 Node* eventTargetNodeForDocument(Document*); |
| 1618 | 1592 |
| 1619 } // namespace WebCore | 1593 } // namespace WebCore |
| 1620 | 1594 |
| 1621 #endif // Document_h | 1595 #endif // Document_h |
| OLD | NEW |