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, 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 Nokia Corporation and/or its subsidiary(-ies) | 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 7 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 #if ENABLE(MICRODATA) | 960 #if ENABLE(MICRODATA) |
961 && attrName != itemscopeAttr | 961 && attrName != itemscopeAttr |
962 && attrName != itempropAttr | 962 && attrName != itempropAttr |
963 && attrName != itemtypeAttr | 963 && attrName != itemtypeAttr |
964 #endif | 964 #endif |
965 && attrName != nameAttr | 965 && attrName != nameAttr |
966 && attrName != forAttr | 966 && attrName != forAttr |
967 && (attrName != idAttr || !attributeOwnerElement->isFormControlElement()
)) | 967 && (attrName != idAttr || !attributeOwnerElement->isFormControlElement()
)) |
968 return; | 968 return; |
969 | 969 |
970 if (document()->hasRareData()) { | 970 document()->clearNodeListCaches(); |
971 if (NodeListsNodeData* nodeLists = document()->rareData()->nodeLists()) | |
972 nodeLists->invalidateCachesForDocument(); | |
973 } | |
974 | 971 |
975 if (!treeScope()->hasNodeListCaches()) | 972 if (!treeScope()->hasNodeListCaches()) |
976 return; | 973 return; |
977 | 974 |
978 for (Node* node = this; node; node = node->parentNode()) { | 975 for (Node* node = this; node; node = node->parentNode()) { |
979 ASSERT(this == node || !node->isAttributeNode()); | 976 ASSERT(this == node || !node->isAttributeNode()); |
980 if (!node->hasRareData()) | 977 if (!node->hasRareData()) |
981 continue; | 978 continue; |
982 NodeRareData* data = node->rareData(); | 979 NodeRareData* data = node->rareData(); |
983 if (!data->nodeLists()) | 980 if (!data->nodeLists()) |
984 continue; | 981 continue; |
985 | 982 |
986 data->nodeLists()->invalidateCachesThatDependOnAttributes(); | 983 data->nodeLists()->invalidateCachesThatDependOnAttributes(); |
987 } | 984 } |
988 } | 985 } |
989 | 986 |
990 void Node::invalidateNodeListsCacheAfterChildrenChanged() | 987 void Node::invalidateNodeListsCacheAfterChildrenChanged() |
991 { | 988 { |
992 if (hasRareData()) | 989 if (hasRareData()) |
993 rareData()->clearChildNodeListCache(); | 990 rareData()->clearChildNodeListCache(); |
994 | 991 |
995 if (document()->hasRareData()) { | 992 document()->clearNodeListCaches(); |
996 if (NodeListsNodeData* nodeLists = document()->rareData()->nodeLists()) | |
997 nodeLists->invalidateCachesForDocument(); | |
998 } | |
999 | 993 |
1000 if (!treeScope()->hasNodeListCaches()) | 994 if (!treeScope()->hasNodeListCaches()) |
1001 return; | 995 return; |
| 996 |
1002 for (Node* node = this; node; node = node->parentNode()) { | 997 for (Node* node = this; node; node = node->parentNode()) { |
1003 if (!node->hasRareData()) | 998 if (!node->hasRareData()) |
1004 continue; | 999 continue; |
1005 NodeRareData* data = node->rareData(); | 1000 NodeRareData* data = node->rareData(); |
1006 if (!data->nodeLists()) | 1001 if (!data->nodeLists()) |
1007 continue; | 1002 continue; |
1008 | 1003 |
1009 data->nodeLists()->invalidateCaches(); | 1004 data->nodeLists()->invalidateCaches(); |
1010 } | 1005 } |
1011 } | 1006 } |
(...skipping 1306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2318 { | 2313 { |
2319 TagNodeListCache::const_iterator tagCacheEnd = m_tagNodeListCache.end(); | 2314 TagNodeListCache::const_iterator tagCacheEnd = m_tagNodeListCache.end(); |
2320 for (TagNodeListCache::const_iterator it = m_tagNodeListCache.begin(); it !=
tagCacheEnd; ++it) | 2315 for (TagNodeListCache::const_iterator it = m_tagNodeListCache.begin(); it !=
tagCacheEnd; ++it) |
2321 it->second->invalidateCache(); | 2316 it->second->invalidateCache(); |
2322 TagNodeListCacheNS::const_iterator tagCacheNSEnd = m_tagNodeListCacheNS.end(
); | 2317 TagNodeListCacheNS::const_iterator tagCacheNSEnd = m_tagNodeListCacheNS.end(
); |
2323 for (TagNodeListCacheNS::const_iterator it = m_tagNodeListCacheNS.begin(); i
t != tagCacheNSEnd; ++it) | 2318 for (TagNodeListCacheNS::const_iterator it = m_tagNodeListCacheNS.begin(); i
t != tagCacheNSEnd; ++it) |
2324 it->second->invalidateCache(); | 2319 it->second->invalidateCache(); |
2325 invalidateCachesThatDependOnAttributes(); | 2320 invalidateCachesThatDependOnAttributes(); |
2326 } | 2321 } |
2327 | 2322 |
2328 void NodeListsNodeData::invalidateCachesForDocument() | |
2329 { | |
2330 NodeListsNodeData::NodeListSet::iterator end = m_listsInvalidatedAtDocument.
end(); | |
2331 for (NodeListsNodeData::NodeListSet::iterator it = m_listsInvalidatedAtDocum
ent.begin(); it != end; ++it) | |
2332 (*it)->invalidateCache(); | |
2333 } | |
2334 | |
2335 void NodeListsNodeData::invalidateCachesThatDependOnAttributes() | 2323 void NodeListsNodeData::invalidateCachesThatDependOnAttributes() |
2336 { | 2324 { |
2337 ClassNodeListCache::iterator classCacheEnd = m_classNodeListCache.end(); | 2325 ClassNodeListCache::iterator classCacheEnd = m_classNodeListCache.end(); |
2338 for (ClassNodeListCache::iterator it = m_classNodeListCache.begin(); it != c
lassCacheEnd; ++it) | 2326 for (ClassNodeListCache::iterator it = m_classNodeListCache.begin(); it != c
lassCacheEnd; ++it) |
2339 it->second->invalidateCache(); | 2327 it->second->invalidateCache(); |
2340 | 2328 |
2341 NameNodeListCache::iterator nameCacheEnd = m_nameNodeListCache.end(); | 2329 NameNodeListCache::iterator nameCacheEnd = m_nameNodeListCache.end(); |
2342 for (NameNodeListCache::iterator it = m_nameNodeListCache.begin(); it != nam
eCacheEnd; ++it) | 2330 for (NameNodeListCache::iterator it = m_nameNodeListCache.begin(); it != nam
eCacheEnd; ++it) |
2343 it->second->invalidateCache(); | 2331 it->second->invalidateCache(); |
2344 if (m_labelsNodeListCache) | 2332 if (m_labelsNodeListCache) |
2345 m_labelsNodeListCache->invalidateCache(); | 2333 m_labelsNodeListCache->invalidateCache(); |
2346 | 2334 |
2347 #if ENABLE(MICRODATA) | 2335 #if ENABLE(MICRODATA) |
2348 MicroDataItemListCache::iterator itemListCacheEnd = m_microDataItemListCache
.end(); | 2336 MicroDataItemListCache::iterator itemListCacheEnd = m_microDataItemListCache
.end(); |
2349 for (MicroDataItemListCache::iterator it = m_microDataItemListCache.begin();
it != itemListCacheEnd; ++it) | 2337 for (MicroDataItemListCache::iterator it = m_microDataItemListCache.begin();
it != itemListCacheEnd; ++it) |
2350 it->second->invalidateCache(); | 2338 it->second->invalidateCache(); |
2351 #endif | 2339 #endif |
2352 | |
2353 RadioNodeListCache::iterator radioNodeListCacheEnd = m_radioNodeListCache.en
d(); | |
2354 for (RadioNodeListCache::iterator it = m_radioNodeListCache.begin(); it != r
adioNodeListCacheEnd; ++it) | |
2355 it->second->invalidateCache(); | |
2356 } | 2340 } |
2357 | 2341 |
2358 bool NodeListsNodeData::isEmpty() const | 2342 bool NodeListsNodeData::isEmpty() const |
2359 { | 2343 { |
2360 if (!m_listsInvalidatedAtDocument.isEmpty()) | |
2361 return false; | |
2362 | |
2363 if (!m_tagNodeListCache.isEmpty()) | 2344 if (!m_tagNodeListCache.isEmpty()) |
2364 return false; | 2345 return false; |
2365 if (!m_tagNodeListCacheNS.isEmpty()) | 2346 if (!m_tagNodeListCacheNS.isEmpty()) |
2366 return false; | 2347 return false; |
2367 if (!m_classNodeListCache.isEmpty()) | 2348 if (!m_classNodeListCache.isEmpty()) |
2368 return false; | 2349 return false; |
2369 if (!m_nameNodeListCache.isEmpty()) | 2350 if (!m_nameNodeListCache.isEmpty()) |
2370 return false; | 2351 return false; |
2371 #if ENABLE(MICRODATA) | 2352 #if ENABLE(MICRODATA) |
2372 if (!m_microDataItemListCache.isEmpty()) | 2353 if (!m_microDataItemListCache.isEmpty()) |
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2942 node->showTreeForThis(); | 2923 node->showTreeForThis(); |
2943 } | 2924 } |
2944 | 2925 |
2945 void showNodePath(const WebCore::Node* node) | 2926 void showNodePath(const WebCore::Node* node) |
2946 { | 2927 { |
2947 if (node) | 2928 if (node) |
2948 node->showNodePathForThis(); | 2929 node->showNodePathForThis(); |
2949 } | 2930 } |
2950 | 2931 |
2951 #endif | 2932 #endif |
OLD | NEW |