Chromium Code Reviews| 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, 2011, 2012 Apple Inc. All r ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 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) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
| 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
| (...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 502 // also depend on the url NOT getting immediately set in opened windows. | 502 // also depend on the url NOT getting immediately set in opened windows. |
| 503 // See fast/dom/early-frame-url.html | 503 // See fast/dom/early-frame-url.html |
| 504 // and fast/dom/location-new-window-no-crash.html, respectively. | 504 // and fast/dom/location-new-window-no-crash.html, respectively. |
| 505 // FIXME: Can/should we unify this behavior? | 505 // FIXME: Can/should we unify this behavior? |
| 506 if (initializer.shouldSetURL()) | 506 if (initializer.shouldSetURL()) |
| 507 setURL(initializer.url()); | 507 setURL(initializer.url()); |
| 508 | 508 |
| 509 initSecurityContext(initializer); | 509 initSecurityContext(initializer); |
| 510 initDNSPrefetch(); | 510 initDNSPrefetch(); |
| 511 | 511 |
| 512 #if !ENABLE(OILPAN) | |
| 512 for (unsigned i = 0; i < WTF_ARRAY_LENGTH(m_nodeListCounts); i++) | 513 for (unsigned i = 0; i < WTF_ARRAY_LENGTH(m_nodeListCounts); i++) |
| 513 m_nodeListCounts[i] = 0; | 514 m_nodeListCounts[i] = 0; |
| 515 #endif | |
| 514 | 516 |
| 515 InspectorCounters::incrementCounter(InspectorCounters::DocumentCounter); | 517 InspectorCounters::incrementCounter(InspectorCounters::DocumentCounter); |
| 516 | 518 |
| 517 m_lifecycle.advanceTo(DocumentLifecycle::Inactive); | 519 m_lifecycle.advanceTo(DocumentLifecycle::Inactive); |
| 518 | 520 |
| 519 // Since CSSFontSelector requires Document::m_fetcher and StyleEngine owns | 521 // Since CSSFontSelector requires Document::m_fetcher and StyleEngine owns |
| 520 // CSSFontSelector, need to initialize m_styleEngine after initializing | 522 // CSSFontSelector, need to initialize m_styleEngine after initializing |
| 521 // m_fetcher. | 523 // m_fetcher. |
| 522 m_styleEngine = StyleEngine::create(*this); | 524 m_styleEngine = StyleEngine::create(*this); |
| 523 } | 525 } |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 582 if (m_elemSheet) | 584 if (m_elemSheet) |
| 583 m_elemSheet->clearOwnerNode(); | 585 m_elemSheet->clearOwnerNode(); |
| 584 | 586 |
| 585 // It's possible for multiple Documents to end up referencing the same Resou rceFetcher (e.g., SVGImages | 587 // It's possible for multiple Documents to end up referencing the same Resou rceFetcher (e.g., SVGImages |
| 586 // load the initial empty document and the SVGDocument with the same Documen tLoader). | 588 // load the initial empty document and the SVGDocument with the same Documen tLoader). |
| 587 if (m_fetcher->document() == this) | 589 if (m_fetcher->document() == this) |
| 588 m_fetcher->setDocument(nullptr); | 590 m_fetcher->setDocument(nullptr); |
| 589 m_fetcher.clear(); | 591 m_fetcher.clear(); |
| 590 #endif | 592 #endif |
| 591 | 593 |
| 594 #if !ENABLE(OILPAN) | |
| 592 // We must call clearRareData() here since a Document class inherits TreeSco pe | 595 // We must call clearRareData() here since a Document class inherits TreeSco pe |
| 593 // as well as Node. See a comment on TreeScope.h for the reason. | 596 // as well as Node. See a comment on TreeScope.h for the reason. |
| 594 #if !ENABLE(OILPAN) | |
| 595 if (hasRareData()) | 597 if (hasRareData()) |
| 596 clearRareData(); | 598 clearRareData(); |
| 597 #endif | |
| 598 | 599 |
| 599 ASSERT(!m_listsInvalidatedAtDocument.size()); | 600 ASSERT(m_listsInvalidatedAtDocument.isEmpty()); |
| 600 | 601 |
| 601 for (unsigned i = 0; i < WTF_ARRAY_LENGTH(m_nodeListCounts); i++) | 602 for (unsigned i = 0; i < WTF_ARRAY_LENGTH(m_nodeListCounts); i++) |
| 602 ASSERT(!m_nodeListCounts[i]); | 603 ASSERT(!m_nodeListCounts[i]); |
| 604 #endif | |
| 603 | 605 |
| 604 setClient(0); | 606 setClient(0); |
| 605 | 607 |
| 606 InspectorCounters::decrementCounter(InspectorCounters::DocumentCounter); | 608 InspectorCounters::decrementCounter(InspectorCounters::DocumentCounter); |
| 607 } | 609 } |
| 608 | 610 |
| 609 void Document::dispose() | 611 void Document::dispose() |
| 610 { | 612 { |
| 611 #if !ENABLE(OILPAN) | 613 #if !ENABLE(OILPAN) |
| 612 ASSERT_WITH_SECURITY_IMPLICATION(!m_deletionHasBegun); | 614 ASSERT_WITH_SECURITY_IMPLICATION(!m_deletionHasBegun); |
| (...skipping 3079 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3692 { | 3694 { |
| 3693 if (m_cssTarget) | 3695 if (m_cssTarget) |
| 3694 m_cssTarget->didAffectSelector(AffectedSelectorTarget); | 3696 m_cssTarget->didAffectSelector(AffectedSelectorTarget); |
| 3695 m_cssTarget = n; | 3697 m_cssTarget = n; |
| 3696 if (n) | 3698 if (n) |
| 3697 n->didAffectSelector(AffectedSelectorTarget); | 3699 n->didAffectSelector(AffectedSelectorTarget); |
| 3698 } | 3700 } |
| 3699 | 3701 |
| 3700 void Document::registerNodeList(LiveNodeListBase* list) | 3702 void Document::registerNodeList(LiveNodeListBase* list) |
| 3701 { | 3703 { |
| 3704 #if ENABLE(OILPAN) | |
| 3705 m_nodeLists[list->invalidationType()].add(list); | |
| 3706 #else | |
| 3702 m_nodeListCounts[list->invalidationType()]++; | 3707 m_nodeListCounts[list->invalidationType()]++; |
| 3708 #endif | |
| 3703 if (list->isRootedAtDocument()) | 3709 if (list->isRootedAtDocument()) |
| 3704 m_listsInvalidatedAtDocument.add(list); | 3710 m_listsInvalidatedAtDocument.add(list); |
| 3705 } | 3711 } |
| 3706 | 3712 |
| 3707 void Document::unregisterNodeList(LiveNodeListBase* list) | 3713 void Document::unregisterNodeList(LiveNodeListBase* list) |
| 3708 { | 3714 { |
| 3715 #if ENABLE(OILPAN) | |
| 3716 ASSERT(m_nodeLists[list->invalidationType()].contains(WeakMember<LiveNodeLis tBase>(list))); | |
| 3717 m_nodeLists[list->invalidationType()].remove(WeakMember<LiveNodeListBase>(li st)); | |
|
haraken
2014/05/12 12:04:13
Isn't this weak processing automatically done by o
sof
2014/05/12 12:24:36
It is done automatically most times but for the ca
| |
| 3718 #else | |
| 3709 m_nodeListCounts[list->invalidationType()]--; | 3719 m_nodeListCounts[list->invalidationType()]--; |
| 3720 #endif | |
| 3710 if (list->isRootedAtDocument()) { | 3721 if (list->isRootedAtDocument()) { |
|
haraken
2014/05/12 12:04:13
I'm just curious but why is this check necessary i
sof
2014/05/15 22:15:57
It is used to handle fast invalidation of certain
| |
| 3711 ASSERT(m_listsInvalidatedAtDocument.contains(list)); | 3722 ASSERT(m_listsInvalidatedAtDocument.contains(list)); |
| 3712 m_listsInvalidatedAtDocument.remove(list); | 3723 m_listsInvalidatedAtDocument.remove(list); |
|
haraken
2014/05/12 12:04:13
I think you can remove this line from oilpan-build
sof
2014/05/12 12:24:36
I think it needs to stay; see above.
| |
| 3713 } | 3724 } |
| 3714 } | 3725 } |
| 3715 | 3726 |
| 3727 #if ENABLE(OILPAN) | |
| 3728 void Document::incrementNodeListWithIdNameCacheCount(const LiveNodeListBase* lis t) | |
| 3729 { | |
| 3730 m_nodeLists[InvalidateOnIdNameAttrChange].add(WeakMember<LiveNodeListBase>(c onst_cast<LiveNodeListBase*>(list))); | |
| 3731 } | |
| 3732 | |
| 3733 void Document::decrementNodeListWithIdNameCacheCount(const LiveNodeListBase* lis t) | |
|
haraken
2014/05/12 12:04:13
I'd rename these methods to {register,unregister}N
sof
2014/05/15 22:15:57
Done.
| |
| 3734 { | |
| 3735 ASSERT(m_nodeLists[InvalidateOnIdNameAttrChange].contains(WeakMember<LiveNod eListBase>(const_cast<LiveNodeListBase*>(list)))); | |
| 3736 m_nodeLists[InvalidateOnIdNameAttrChange].remove(WeakMember<LiveNodeListBase >(const_cast<LiveNodeListBase*>(list))); | |
| 3737 } | |
| 3738 #endif | |
| 3739 | |
| 3716 void Document::attachNodeIterator(NodeIterator* ni) | 3740 void Document::attachNodeIterator(NodeIterator* ni) |
| 3717 { | 3741 { |
| 3718 m_nodeIterators.add(ni); | 3742 m_nodeIterators.add(ni); |
| 3719 } | 3743 } |
| 3720 | 3744 |
| 3721 void Document::detachNodeIterator(NodeIterator* ni) | 3745 void Document::detachNodeIterator(NodeIterator* ni) |
| 3722 { | 3746 { |
| 3723 // The node iterator can be detached without having been attached if its roo t node didn't have a document | 3747 // The node iterator can be detached without having been attached if its roo t node didn't have a document |
| 3724 // when the iterator was created, but has it now. | 3748 // when the iterator was created, but has it now. |
| 3725 m_nodeIterators.remove(ni); | 3749 m_nodeIterators.remove(ni); |
| (...skipping 783 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4509 if (!m_svgExtensions) | 4533 if (!m_svgExtensions) |
| 4510 m_svgExtensions = adoptPtr(new SVGDocumentExtensions(this)); | 4534 m_svgExtensions = adoptPtr(new SVGDocumentExtensions(this)); |
| 4511 return *m_svgExtensions; | 4535 return *m_svgExtensions; |
| 4512 } | 4536 } |
| 4513 | 4537 |
| 4514 bool Document::hasSVGRootNode() const | 4538 bool Document::hasSVGRootNode() const |
| 4515 { | 4539 { |
| 4516 return isSVGSVGElement(documentElement()); | 4540 return isSVGSVGElement(documentElement()); |
| 4517 } | 4541 } |
| 4518 | 4542 |
| 4519 PassRefPtr<HTMLCollection> Document::ensureCachedCollection(CollectionType type) | 4543 PassRefPtrWillBeRawPtr<HTMLCollection> Document::ensureCachedCollection(Collecti onType type) |
| 4520 { | 4544 { |
| 4521 return ensureRareData().ensureNodeLists().addCache<HTMLCollection>(*this, ty pe); | 4545 return ensureRareData().ensureNodeLists().addCache<HTMLCollection>(*this, ty pe); |
| 4522 } | 4546 } |
| 4523 | 4547 |
| 4524 PassRefPtr<HTMLCollection> Document::images() | 4548 PassRefPtrWillBeRawPtr<HTMLCollection> Document::images() |
| 4525 { | 4549 { |
| 4526 return ensureCachedCollection(DocImages); | 4550 return ensureCachedCollection(DocImages); |
| 4527 } | 4551 } |
| 4528 | 4552 |
| 4529 PassRefPtr<HTMLCollection> Document::applets() | 4553 PassRefPtrWillBeRawPtr<HTMLCollection> Document::applets() |
| 4530 { | 4554 { |
| 4531 return ensureCachedCollection(DocApplets); | 4555 return ensureCachedCollection(DocApplets); |
| 4532 } | 4556 } |
| 4533 | 4557 |
| 4534 PassRefPtr<HTMLCollection> Document::embeds() | 4558 PassRefPtrWillBeRawPtr<HTMLCollection> Document::embeds() |
| 4535 { | 4559 { |
| 4536 return ensureCachedCollection(DocEmbeds); | 4560 return ensureCachedCollection(DocEmbeds); |
| 4537 } | 4561 } |
| 4538 | 4562 |
| 4539 PassRefPtr<HTMLCollection> Document::scripts() | 4563 PassRefPtrWillBeRawPtr<HTMLCollection> Document::scripts() |
| 4540 { | 4564 { |
| 4541 return ensureCachedCollection(DocScripts); | 4565 return ensureCachedCollection(DocScripts); |
| 4542 } | 4566 } |
| 4543 | 4567 |
| 4544 PassRefPtr<HTMLCollection> Document::links() | 4568 PassRefPtrWillBeRawPtr<HTMLCollection> Document::links() |
| 4545 { | 4569 { |
| 4546 return ensureCachedCollection(DocLinks); | 4570 return ensureCachedCollection(DocLinks); |
| 4547 } | 4571 } |
| 4548 | 4572 |
| 4549 PassRefPtr<HTMLCollection> Document::forms() | 4573 PassRefPtrWillBeRawPtr<HTMLCollection> Document::forms() |
| 4550 { | 4574 { |
| 4551 return ensureCachedCollection(DocForms); | 4575 return ensureCachedCollection(DocForms); |
| 4552 } | 4576 } |
| 4553 | 4577 |
| 4554 PassRefPtr<HTMLCollection> Document::anchors() | 4578 PassRefPtrWillBeRawPtr<HTMLCollection> Document::anchors() |
| 4555 { | 4579 { |
| 4556 return ensureCachedCollection(DocAnchors); | 4580 return ensureCachedCollection(DocAnchors); |
| 4557 } | 4581 } |
| 4558 | 4582 |
| 4559 PassRefPtr<HTMLAllCollection> Document::allForBinding() | 4583 PassRefPtrWillBeRawPtr<HTMLAllCollection> Document::allForBinding() |
| 4560 { | 4584 { |
| 4561 UseCounter::count(*this, UseCounter::DocumentAll); | 4585 UseCounter::count(*this, UseCounter::DocumentAll); |
| 4562 return all(); | 4586 return all(); |
| 4563 } | 4587 } |
| 4564 | 4588 |
| 4565 PassRefPtr<HTMLAllCollection> Document::all() | 4589 PassRefPtrWillBeRawPtr<HTMLAllCollection> Document::all() |
| 4566 { | 4590 { |
| 4567 return ensureRareData().ensureNodeLists().addCache<HTMLAllCollection>(*this, DocAll); | 4591 return ensureRareData().ensureNodeLists().addCache<HTMLAllCollection>(*this, DocAll); |
| 4568 } | 4592 } |
| 4569 | 4593 |
| 4570 PassRefPtr<HTMLCollection> Document::windowNamedItems(const AtomicString& name) | 4594 PassRefPtrWillBeRawPtr<HTMLCollection> Document::windowNamedItems(const AtomicSt ring& name) |
| 4571 { | 4595 { |
| 4572 return ensureRareData().ensureNodeLists().addCache<HTMLNameCollection>(*this , WindowNamedItems, name); | 4596 return ensureRareData().ensureNodeLists().addCache<HTMLNameCollection>(*this , WindowNamedItems, name); |
| 4573 } | 4597 } |
| 4574 | 4598 |
| 4575 PassRefPtr<HTMLCollection> Document::documentNamedItems(const AtomicString& name ) | 4599 PassRefPtrWillBeRawPtr<HTMLCollection> Document::documentNamedItems(const Atomic String& name) |
| 4576 { | 4600 { |
| 4577 return ensureRareData().ensureNodeLists().addCache<HTMLNameCollection>(*this , DocumentNamedItems, name); | 4601 return ensureRareData().ensureNodeLists().addCache<HTMLNameCollection>(*this , DocumentNamedItems, name); |
| 4578 } | 4602 } |
| 4579 | 4603 |
| 4580 void Document::finishedParsing() | 4604 void Document::finishedParsing() |
| 4581 { | 4605 { |
| 4582 ASSERT(!scriptableDocumentParser() || !m_parser->isParsing()); | 4606 ASSERT(!scriptableDocumentParser() || !m_parser->isParsing()); |
| 4583 ASSERT(!scriptableDocumentParser() || m_readyState != Loading); | 4607 ASSERT(!scriptableDocumentParser() || m_readyState != Loading); |
| 4584 setParsing(false); | 4608 setParsing(false); |
| 4585 if (!m_documentTiming.domContentLoadedEventStart) | 4609 if (!m_documentTiming.domContentLoadedEventStart) |
| (...skipping 1057 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5643 if (!page->focusController().isActive() || !page->focusController().isFocuse d()) | 5667 if (!page->focusController().isActive() || !page->focusController().isFocuse d()) |
| 5644 return false; | 5668 return false; |
| 5645 Frame* focusedFrame = page->focusController().focusedFrame(); | 5669 Frame* focusedFrame = page->focusController().focusedFrame(); |
| 5646 if (focusedFrame && focusedFrame->isLocalFrame()) { | 5670 if (focusedFrame && focusedFrame->isLocalFrame()) { |
| 5647 if (toLocalFrame(focusedFrame)->tree().isDescendantOf(frame())) | 5671 if (toLocalFrame(focusedFrame)->tree().isDescendantOf(frame())) |
| 5648 return true; | 5672 return true; |
| 5649 } | 5673 } |
| 5650 return false; | 5674 return false; |
| 5651 } | 5675 } |
| 5652 | 5676 |
| 5677 #if ENABLE(OILPAN) | |
| 5678 template<unsigned type> | |
| 5679 bool shouldInvalidateNodeListCachesForAttr(const HeapHashSet<WeakMember<LiveNode ListBase> > nodeLists[], const QualifiedName& attrName) | |
| 5680 { | |
| 5681 if (!nodeLists[type].isEmpty() && LiveNodeListBase::shouldInvalidateTypeOnAt tributeChange(static_cast<NodeListInvalidationType>(type), attrName)) | |
| 5682 return true; | |
| 5683 return shouldInvalidateNodeListCachesForAttr<type + 1>(nodeLists, attrName); | |
| 5684 } | |
| 5685 | |
| 5686 template<> | |
| 5687 bool shouldInvalidateNodeListCachesForAttr<numNodeListInvalidationTypes>(const H eapHashSet<WeakMember<LiveNodeListBase> >[], const QualifiedName&) | |
| 5688 { | |
| 5689 return false; | |
| 5690 } | |
| 5691 #else | |
| 5653 template<unsigned type> | 5692 template<unsigned type> |
| 5654 bool shouldInvalidateNodeListCachesForAttr(const unsigned nodeListCounts[], cons t QualifiedName& attrName) | 5693 bool shouldInvalidateNodeListCachesForAttr(const unsigned nodeListCounts[], cons t QualifiedName& attrName) |
| 5655 { | 5694 { |
| 5656 if (nodeListCounts[type] && LiveNodeListBase::shouldInvalidateTypeOnAttribut eChange(static_cast<NodeListInvalidationType>(type), attrName)) | 5695 if (nodeListCounts[type] && LiveNodeListBase::shouldInvalidateTypeOnAttribut eChange(static_cast<NodeListInvalidationType>(type), attrName)) |
| 5657 return true; | 5696 return true; |
| 5658 return shouldInvalidateNodeListCachesForAttr<type + 1>(nodeListCounts, attrN ame); | 5697 return shouldInvalidateNodeListCachesForAttr<type + 1>(nodeListCounts, attrN ame); |
| 5659 } | 5698 } |
| 5660 | 5699 |
| 5661 template<> | 5700 template<> |
| 5662 bool shouldInvalidateNodeListCachesForAttr<numNodeListInvalidationTypes>(const u nsigned[], const QualifiedName&) | 5701 bool shouldInvalidateNodeListCachesForAttr<numNodeListInvalidationTypes>(const u nsigned[], const QualifiedName&) |
| 5663 { | 5702 { |
| 5664 return false; | 5703 return false; |
| 5665 } | 5704 } |
| 5705 #endif | |
| 5666 | 5706 |
| 5667 bool Document::shouldInvalidateNodeListCaches(const QualifiedName* attrName) con st | 5707 bool Document::shouldInvalidateNodeListCaches(const QualifiedName* attrName) con st |
| 5668 { | 5708 { |
| 5669 if (attrName) | 5709 if (attrName) { |
| 5710 #if ENABLE(OILPAN) | |
| 5711 return shouldInvalidateNodeListCachesForAttr<DoNotInvalidateOnAttributeC hanges + 1>(m_nodeLists, *attrName); | |
| 5712 #else | |
| 5670 return shouldInvalidateNodeListCachesForAttr<DoNotInvalidateOnAttributeC hanges + 1>(m_nodeListCounts, *attrName); | 5713 return shouldInvalidateNodeListCachesForAttr<DoNotInvalidateOnAttributeC hanges + 1>(m_nodeListCounts, *attrName); |
| 5714 #endif | |
| 5715 } | |
| 5671 | 5716 |
| 5672 for (int type = 0; type < numNodeListInvalidationTypes; type++) { | 5717 for (int type = 0; type < numNodeListInvalidationTypes; type++) { |
| 5718 #if ENABLE(OILPAN) | |
| 5719 if (!m_nodeLists[type].isEmpty()) | |
| 5720 #else | |
| 5673 if (m_nodeListCounts[type]) | 5721 if (m_nodeListCounts[type]) |
| 5722 #endif | |
| 5674 return true; | 5723 return true; |
| 5675 } | 5724 } |
| 5676 | 5725 |
| 5677 return false; | 5726 return false; |
| 5678 } | 5727 } |
| 5679 | 5728 |
| 5680 void Document::invalidateNodeListCaches(const QualifiedName* attrName) | 5729 void Document::invalidateNodeListCaches(const QualifiedName* attrName) |
| 5681 { | 5730 { |
| 5682 HashSet<LiveNodeListBase*>::iterator end = m_listsInvalidatedAtDocument.end( ); | 5731 WillBeHeapHashSet<RawPtrWillBeWeakMember<LiveNodeListBase> >::iterator end = m_listsInvalidatedAtDocument.end(); |
| 5683 for (HashSet<LiveNodeListBase*>::iterator it = m_listsInvalidatedAtDocument. begin(); it != end; ++it) | 5732 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<LiveNodeListBase> >::iterator it = m_listsInvalidatedAtDocument.begin(); it != end; ++it) |
| 5684 (*it)->invalidateCacheForAttribute(attrName); | 5733 (*it)->invalidateCacheForAttribute(attrName); |
| 5685 } | 5734 } |
| 5686 | 5735 |
| 5687 void Document::clearWeakMembers(Visitor* visitor) | 5736 void Document::clearWeakMembers(Visitor* visitor) |
| 5688 { | 5737 { |
| 5689 if (m_axObjectCache) | 5738 if (m_axObjectCache) |
| 5690 m_axObjectCache->clearWeakMembers(visitor); | 5739 m_axObjectCache->clearWeakMembers(visitor); |
| 5691 | 5740 |
| 5692 if (m_markers) | 5741 if (m_markers) |
| 5693 m_markers->clearWeakMembers(visitor); | 5742 m_markers->clearWeakMembers(visitor); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 5709 visitor->trace(m_docType); | 5758 visitor->trace(m_docType); |
| 5710 visitor->trace(m_implementation); | 5759 visitor->trace(m_implementation); |
| 5711 visitor->trace(m_autofocusElement); | 5760 visitor->trace(m_autofocusElement); |
| 5712 visitor->trace(m_focusedElement); | 5761 visitor->trace(m_focusedElement); |
| 5713 visitor->trace(m_hoverNode); | 5762 visitor->trace(m_hoverNode); |
| 5714 visitor->trace(m_activeHoverElement); | 5763 visitor->trace(m_activeHoverElement); |
| 5715 visitor->trace(m_documentElement); | 5764 visitor->trace(m_documentElement); |
| 5716 visitor->trace(m_titleElement); | 5765 visitor->trace(m_titleElement); |
| 5717 visitor->trace(m_currentScriptStack); | 5766 visitor->trace(m_currentScriptStack); |
| 5718 visitor->trace(m_transformSourceDocument); | 5767 visitor->trace(m_transformSourceDocument); |
| 5768 visitor->trace(m_listsInvalidatedAtDocument); | |
| 5769 #if ENABLE(OILPAN) | |
| 5770 for (int i = 0; i < numNodeListInvalidationTypes; i++) | |
| 5771 visitor->trace(m_nodeLists[i]); | |
| 5772 #endif | |
| 5719 visitor->trace(m_cssCanvasElements); | 5773 visitor->trace(m_cssCanvasElements); |
| 5720 visitor->trace(m_topLayerElements); | 5774 visitor->trace(m_topLayerElements); |
| 5721 visitor->trace(m_elemSheet); | 5775 visitor->trace(m_elemSheet); |
| 5722 visitor->trace(m_styleEngine); | 5776 visitor->trace(m_styleEngine); |
| 5723 visitor->trace(m_formController); | 5777 visitor->trace(m_formController); |
| 5724 visitor->trace(m_fetcher); | 5778 visitor->trace(m_fetcher); |
| 5725 visitor->trace(m_contextFeatures); | 5779 visitor->trace(m_contextFeatures); |
| 5726 visitor->trace(m_styleSheetList); | 5780 visitor->trace(m_styleSheetList); |
| 5727 visitor->trace(m_mediaQueryMatcher); | 5781 visitor->trace(m_mediaQueryMatcher); |
| 5728 visitor->trace(m_associatedFormControls); | 5782 visitor->trace(m_associatedFormControls); |
| 5729 visitor->trace(m_templateDocument); | 5783 visitor->trace(m_templateDocument); |
| 5730 visitor->trace(m_templateDocumentHost); | 5784 visitor->trace(m_templateDocumentHost); |
| 5731 visitor->trace(m_visibilityObservers); | 5785 visitor->trace(m_visibilityObservers); |
| 5732 visitor->trace(m_userActionElements); | 5786 visitor->trace(m_userActionElements); |
| 5733 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this); | 5787 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this); |
| 5734 DocumentSupplementable::trace(visitor); | 5788 DocumentSupplementable::trace(visitor); |
| 5735 TreeScope::trace(visitor); | 5789 TreeScope::trace(visitor); |
| 5736 ContainerNode::trace(visitor); | 5790 ContainerNode::trace(visitor); |
| 5737 ExecutionContext::trace(visitor); | 5791 ExecutionContext::trace(visitor); |
| 5738 } | 5792 } |
| 5739 | 5793 |
| 5740 } // namespace WebCore | 5794 } // namespace WebCore |
| OLD | NEW |