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 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 | 524 |
525 // Since CSSFontSelector requires Document::m_fetcher and StyleEngine owns | 525 // Since CSSFontSelector requires Document::m_fetcher and StyleEngine owns |
526 // CSSFontSelector, need to initialize m_styleEngine after initializing | 526 // CSSFontSelector, need to initialize m_styleEngine after initializing |
527 // m_fetcher. | 527 // m_fetcher. |
528 m_styleEngine = StyleEngine::create(*this); | 528 m_styleEngine = StyleEngine::create(*this); |
529 } | 529 } |
530 | 530 |
531 Document::~Document() | 531 Document::~Document() |
532 { | 532 { |
533 ASSERT(!renderView()); | 533 ASSERT(!renderView()); |
534 ASSERT(m_ranges.isEmpty()); | |
535 ASSERT(!parentTreeScope()); | 534 ASSERT(!parentTreeScope()); |
536 #if !ENABLE(OILPAN) | 535 #if !ENABLE(OILPAN) |
| 536 ASSERT(m_ranges.isEmpty()); |
537 ASSERT(!hasGuardRefCount()); | 537 ASSERT(!hasGuardRefCount()); |
538 // With Oilpan, either the document outlives the visibility observers | 538 // With Oilpan, either the document outlives the visibility observers |
539 // or the visibility observers and the document die in the same GC round. | 539 // or the visibility observers and the document die in the same GC round. |
540 // When they die in the same GC round, the list of visibility observers | 540 // When they die in the same GC round, the list of visibility observers |
541 // will not be empty on Document destruction. | 541 // will not be empty on Document destruction. |
542 ASSERT(m_visibilityObservers.isEmpty()); | 542 ASSERT(m_visibilityObservers.isEmpty()); |
543 | 543 |
544 if (m_templateDocument) | 544 if (m_templateDocument) |
545 m_templateDocument->m_templateDocumentHost = nullptr; // balanced in ens
ureTemplateDocument(). | 545 m_templateDocument->m_templateDocumentHost = nullptr; // balanced in ens
ureTemplateDocument(). |
546 | 546 |
(...skipping 2091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2638 } | 2638 } |
2639 | 2639 |
2640 bool Document::dispatchBeforeUnloadEvent(Chrome& chrome, bool& didAllowNavigatio
n) | 2640 bool Document::dispatchBeforeUnloadEvent(Chrome& chrome, bool& didAllowNavigatio
n) |
2641 { | 2641 { |
2642 if (!m_domWindow) | 2642 if (!m_domWindow) |
2643 return true; | 2643 return true; |
2644 | 2644 |
2645 if (!body()) | 2645 if (!body()) |
2646 return true; | 2646 return true; |
2647 | 2647 |
2648 RefPtr<Document> protect(this); | 2648 RefPtrWillBeRawPtr<Document> protect(this); |
2649 | 2649 |
2650 RefPtrWillBeRawPtr<BeforeUnloadEvent> beforeUnloadEvent = BeforeUnloadEvent:
:create(); | 2650 RefPtrWillBeRawPtr<BeforeUnloadEvent> beforeUnloadEvent = BeforeUnloadEvent:
:create(); |
2651 m_loadEventProgress = BeforeUnloadEventInProgress; | 2651 m_loadEventProgress = BeforeUnloadEventInProgress; |
2652 m_domWindow->dispatchEvent(beforeUnloadEvent.get(), this); | 2652 m_domWindow->dispatchEvent(beforeUnloadEvent.get(), this); |
2653 m_loadEventProgress = BeforeUnloadEventCompleted; | 2653 m_loadEventProgress = BeforeUnloadEventCompleted; |
2654 if (!beforeUnloadEvent->defaultPrevented()) | 2654 if (!beforeUnloadEvent->defaultPrevented()) |
2655 defaultEventHandler(beforeUnloadEvent.get()); | 2655 defaultEventHandler(beforeUnloadEvent.get()); |
2656 if (beforeUnloadEvent->returnValue().isNull()) | 2656 if (beforeUnloadEvent->returnValue().isNull()) |
2657 return true; | 2657 return true; |
2658 | 2658 |
2659 if (didAllowNavigation) { | 2659 if (didAllowNavigation) { |
2660 addConsoleMessage(JSMessageSource, ErrorMessageLevel, "Blocked attempt t
o show multiple 'beforeunload' confirmation panels for a single navigation."); | 2660 addConsoleMessage(JSMessageSource, ErrorMessageLevel, "Blocked attempt t
o show multiple 'beforeunload' confirmation panels for a single navigation."); |
2661 return true; | 2661 return true; |
2662 } | 2662 } |
2663 | 2663 |
2664 String text = beforeUnloadEvent->returnValue(); | 2664 String text = beforeUnloadEvent->returnValue(); |
2665 if (chrome.runBeforeUnloadConfirmPanel(text, m_frame)) { | 2665 if (chrome.runBeforeUnloadConfirmPanel(text, m_frame)) { |
2666 didAllowNavigation = true; | 2666 didAllowNavigation = true; |
2667 return true; | 2667 return true; |
2668 } | 2668 } |
2669 return false; | 2669 return false; |
2670 } | 2670 } |
2671 | 2671 |
2672 void Document::dispatchUnloadEvents() | 2672 void Document::dispatchUnloadEvents() |
2673 { | 2673 { |
2674 RefPtr<Document> protect(this); | 2674 RefPtrWillBeRawPtr<Document> protect(this); |
2675 if (m_parser) | 2675 if (m_parser) |
2676 m_parser->stopParsing(); | 2676 m_parser->stopParsing(); |
2677 | 2677 |
2678 if (m_loadEventProgress >= LoadEventTried && m_loadEventProgress <= UnloadEv
entInProgress) { | 2678 if (m_loadEventProgress >= LoadEventTried && m_loadEventProgress <= UnloadEv
entInProgress) { |
2679 Element* currentFocusedElement = focusedElement(); | 2679 Element* currentFocusedElement = focusedElement(); |
2680 if (isHTMLInputElement(currentFocusedElement)) | 2680 if (isHTMLInputElement(currentFocusedElement)) |
2681 toHTMLInputElement(*currentFocusedElement).endEditing(); | 2681 toHTMLInputElement(*currentFocusedElement).endEditing(); |
2682 if (m_loadEventProgress < PageHideInProgress) { | 2682 if (m_loadEventProgress < PageHideInProgress) { |
2683 m_loadEventProgress = PageHideInProgress; | 2683 m_loadEventProgress = PageHideInProgress; |
2684 if (DOMWindow* window = domWindow()) | 2684 if (DOMWindow* window = domWindow()) |
(...skipping 1086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3771 if ((*it)->root() == node) { | 3771 if ((*it)->root() == node) { |
3772 detachNodeIterator(*it); | 3772 detachNodeIterator(*it); |
3773 newDocument.attachNodeIterator(*it); | 3773 newDocument.attachNodeIterator(*it); |
3774 } | 3774 } |
3775 } | 3775 } |
3776 } | 3776 } |
3777 | 3777 |
3778 void Document::updateRangesAfterChildrenChanged(ContainerNode* container) | 3778 void Document::updateRangesAfterChildrenChanged(ContainerNode* container) |
3779 { | 3779 { |
3780 if (!m_ranges.isEmpty()) { | 3780 if (!m_ranges.isEmpty()) { |
3781 HashSet<Range*>::const_iterator end = m_ranges.end(); | 3781 AttachedRangeSet::const_iterator end = m_ranges.end(); |
3782 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; +
+it) | 3782 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
3783 (*it)->nodeChildrenChanged(container); | 3783 (*it)->nodeChildrenChanged(container); |
3784 } | 3784 } |
3785 } | 3785 } |
3786 | 3786 |
3787 void Document::nodeChildrenWillBeRemoved(ContainerNode& container) | 3787 void Document::nodeChildrenWillBeRemoved(ContainerNode& container) |
3788 { | 3788 { |
3789 NoEventDispatchAssertion assertNoEventDispatch; | 3789 NoEventDispatchAssertion assertNoEventDispatch; |
3790 if (!m_ranges.isEmpty()) { | 3790 if (!m_ranges.isEmpty()) { |
3791 HashSet<Range*>::const_iterator end = m_ranges.end(); | 3791 AttachedRangeSet::const_iterator end = m_ranges.end(); |
3792 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; +
+it) | 3792 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
3793 (*it)->nodeChildrenWillBeRemoved(container); | 3793 (*it)->nodeChildrenWillBeRemoved(container); |
3794 } | 3794 } |
3795 | 3795 |
3796 WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterator nod
eIteratorsEnd = m_nodeIterators.end(); | 3796 WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterator nod
eIteratorsEnd = m_nodeIterators.end(); |
3797 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterato
r it = m_nodeIterators.begin(); it != nodeIteratorsEnd; ++it) { | 3797 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterato
r it = m_nodeIterators.begin(); it != nodeIteratorsEnd; ++it) { |
3798 for (Node* n = container.firstChild(); n; n = n->nextSibling()) | 3798 for (Node* n = container.firstChild(); n; n = n->nextSibling()) |
3799 (*it)->nodeWillBeRemoved(*n); | 3799 (*it)->nodeWillBeRemoved(*n); |
3800 } | 3800 } |
3801 | 3801 |
3802 if (LocalFrame* frame = this->frame()) { | 3802 if (LocalFrame* frame = this->frame()) { |
3803 for (Node* n = container.firstChild(); n; n = n->nextSibling()) { | 3803 for (Node* n = container.firstChild(); n; n = n->nextSibling()) { |
3804 frame->eventHandler().nodeWillBeRemoved(*n); | 3804 frame->eventHandler().nodeWillBeRemoved(*n); |
3805 frame->selection().nodeWillBeRemoved(*n); | 3805 frame->selection().nodeWillBeRemoved(*n); |
3806 frame->page()->dragCaretController().nodeWillBeRemoved(*n); | 3806 frame->page()->dragCaretController().nodeWillBeRemoved(*n); |
3807 } | 3807 } |
3808 } | 3808 } |
3809 } | 3809 } |
3810 | 3810 |
3811 void Document::nodeWillBeRemoved(Node& n) | 3811 void Document::nodeWillBeRemoved(Node& n) |
3812 { | 3812 { |
3813 WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterator nod
eIteratorsEnd = m_nodeIterators.end(); | 3813 WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterator nod
eIteratorsEnd = m_nodeIterators.end(); |
3814 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterato
r it = m_nodeIterators.begin(); it != nodeIteratorsEnd; ++it) | 3814 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterato
r it = m_nodeIterators.begin(); it != nodeIteratorsEnd; ++it) |
3815 (*it)->nodeWillBeRemoved(n); | 3815 (*it)->nodeWillBeRemoved(n); |
3816 | 3816 |
3817 if (!m_ranges.isEmpty()) { | 3817 if (!m_ranges.isEmpty()) { |
3818 HashSet<Range*>::const_iterator rangesEnd = m_ranges.end(); | 3818 AttachedRangeSet::const_iterator rangesEnd = m_ranges.end(); |
3819 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != ranges
End; ++it) | 3819 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != range
sEnd; ++it) |
3820 (*it)->nodeWillBeRemoved(n); | 3820 (*it)->nodeWillBeRemoved(n); |
3821 } | 3821 } |
3822 | 3822 |
3823 if (LocalFrame* frame = this->frame()) { | 3823 if (LocalFrame* frame = this->frame()) { |
3824 frame->eventHandler().nodeWillBeRemoved(n); | 3824 frame->eventHandler().nodeWillBeRemoved(n); |
3825 frame->selection().nodeWillBeRemoved(n); | 3825 frame->selection().nodeWillBeRemoved(n); |
3826 frame->page()->dragCaretController().nodeWillBeRemoved(n); | 3826 frame->page()->dragCaretController().nodeWillBeRemoved(n); |
3827 } | 3827 } |
3828 } | 3828 } |
3829 | 3829 |
3830 void Document::didInsertText(Node* text, unsigned offset, unsigned length) | 3830 void Document::didInsertText(Node* text, unsigned offset, unsigned length) |
3831 { | 3831 { |
3832 if (!m_ranges.isEmpty()) { | 3832 if (!m_ranges.isEmpty()) { |
3833 HashSet<Range*>::const_iterator end = m_ranges.end(); | 3833 AttachedRangeSet::const_iterator end = m_ranges.end(); |
3834 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; +
+it) | 3834 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
3835 (*it)->didInsertText(text, offset, length); | 3835 (*it)->didInsertText(text, offset, length); |
3836 } | 3836 } |
3837 | 3837 |
3838 // Update the markers for spelling and grammar checking. | 3838 // Update the markers for spelling and grammar checking. |
3839 m_markers->shiftMarkers(text, offset, length); | 3839 m_markers->shiftMarkers(text, offset, length); |
3840 } | 3840 } |
3841 | 3841 |
3842 void Document::didRemoveText(Node* text, unsigned offset, unsigned length) | 3842 void Document::didRemoveText(Node* text, unsigned offset, unsigned length) |
3843 { | 3843 { |
3844 if (!m_ranges.isEmpty()) { | 3844 if (!m_ranges.isEmpty()) { |
3845 HashSet<Range*>::const_iterator end = m_ranges.end(); | 3845 AttachedRangeSet::const_iterator end = m_ranges.end(); |
3846 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; +
+it) | 3846 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
3847 (*it)->didRemoveText(text, offset, length); | 3847 (*it)->didRemoveText(text, offset, length); |
3848 } | 3848 } |
3849 | 3849 |
3850 // Update the markers for spelling and grammar checking. | 3850 // Update the markers for spelling and grammar checking. |
3851 m_markers->removeMarkers(text, offset, length); | 3851 m_markers->removeMarkers(text, offset, length); |
3852 m_markers->shiftMarkers(text, offset + length, 0 - length); | 3852 m_markers->shiftMarkers(text, offset + length, 0 - length); |
3853 } | 3853 } |
3854 | 3854 |
3855 void Document::didMergeTextNodes(Text& oldNode, unsigned offset) | 3855 void Document::didMergeTextNodes(Text& oldNode, unsigned offset) |
3856 { | 3856 { |
3857 if (!m_ranges.isEmpty()) { | 3857 if (!m_ranges.isEmpty()) { |
3858 NodeWithIndex oldNodeWithIndex(oldNode); | 3858 NodeWithIndex oldNodeWithIndex(oldNode); |
3859 HashSet<Range*>::const_iterator end = m_ranges.end(); | 3859 AttachedRangeSet::const_iterator end = m_ranges.end(); |
3860 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; +
+it) | 3860 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
3861 (*it)->didMergeTextNodes(oldNodeWithIndex, offset); | 3861 (*it)->didMergeTextNodes(oldNodeWithIndex, offset); |
3862 } | 3862 } |
3863 | 3863 |
3864 if (m_frame) | 3864 if (m_frame) |
3865 m_frame->selection().didMergeTextNodes(oldNode, offset); | 3865 m_frame->selection().didMergeTextNodes(oldNode, offset); |
3866 | 3866 |
3867 // FIXME: This should update markers for spelling and grammar checking. | 3867 // FIXME: This should update markers for spelling and grammar checking. |
3868 } | 3868 } |
3869 | 3869 |
3870 void Document::didSplitTextNode(Text& oldNode) | 3870 void Document::didSplitTextNode(Text& oldNode) |
3871 { | 3871 { |
3872 if (!m_ranges.isEmpty()) { | 3872 if (!m_ranges.isEmpty()) { |
3873 HashSet<Range*>::const_iterator end = m_ranges.end(); | 3873 AttachedRangeSet::const_iterator end = m_ranges.end(); |
3874 for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; +
+it) | 3874 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
3875 (*it)->didSplitTextNode(oldNode); | 3875 (*it)->didSplitTextNode(oldNode); |
3876 } | 3876 } |
3877 | 3877 |
3878 if (m_frame) | 3878 if (m_frame) |
3879 m_frame->selection().didSplitTextNode(oldNode); | 3879 m_frame->selection().didSplitTextNode(oldNode); |
3880 | 3880 |
3881 // FIXME: This should update markers for spelling and grammar checking. | 3881 // FIXME: This should update markers for spelling and grammar checking. |
3882 } | 3882 } |
3883 | 3883 |
3884 void Document::setWindowAttributeEventListener(const AtomicString& eventType, Pa
ssRefPtr<EventListener> listener) | 3884 void Document::setWindowAttributeEventListener(const AtomicString& eventType, Pa
ssRefPtr<EventListener> listener) |
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4647 // Reset the text autosizing multipliers on main frame when DOM is loade
d. | 4647 // Reset the text autosizing multipliers on main frame when DOM is loade
d. |
4648 // This is to allow for a fresh text autosizing pass when the page layou
t | 4648 // This is to allow for a fresh text autosizing pass when the page layou
t |
4649 // changes significantly in the end. | 4649 // changes significantly in the end. |
4650 if (TextAutosizer* textAutosizer = this->textAutosizer()) | 4650 if (TextAutosizer* textAutosizer = this->textAutosizer()) |
4651 textAutosizer->recalculateMultipliers(); | 4651 textAutosizer->recalculateMultipliers(); |
4652 } | 4652 } |
4653 | 4653 |
4654 // The loader's finishedParsing() method may invoke script that causes this
object to | 4654 // The loader's finishedParsing() method may invoke script that causes this
object to |
4655 // be dereferenced (when this document is in an iframe and the onload causes
the iframe's src to change). | 4655 // be dereferenced (when this document is in an iframe and the onload causes
the iframe's src to change). |
4656 // Keep it alive until we are done. | 4656 // Keep it alive until we are done. |
4657 RefPtr<Document> protect(this); | 4657 RefPtrWillBeRawPtr<Document> protect(this); |
4658 | 4658 |
4659 if (RefPtr<LocalFrame> f = frame()) { | 4659 if (RefPtr<LocalFrame> f = frame()) { |
4660 // Don't update the render tree if we haven't requested the main resourc
e yet to avoid | 4660 // Don't update the render tree if we haven't requested the main resourc
e yet to avoid |
4661 // adding extra latency. Note that the first render tree update can be e
xpensive since it | 4661 // adding extra latency. Note that the first render tree update can be e
xpensive since it |
4662 // triggers the parsing of the default stylesheets which are compiled-in
. | 4662 // triggers the parsing of the default stylesheets which are compiled-in
. |
4663 const bool mainResourceWasAlreadyRequested = | 4663 const bool mainResourceWasAlreadyRequested = |
4664 m_frame->loader().stateMachine()->committedFirstRealDocumentLoad(); | 4664 m_frame->loader().stateMachine()->committedFirstRealDocumentLoad(); |
4665 | 4665 |
4666 // FrameLoader::finishedParsing() might end up calling Document::implici
tClose() if all | 4666 // FrameLoader::finishedParsing() might end up calling Document::implici
tClose() if all |
4667 // resource loads are complete. HTMLObjectElements can start loading the
ir resources from | 4667 // resource loads are complete. HTMLObjectElements can start loading the
ir resources from |
(...skipping 1129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5797 visitor->trace(m_transformSourceDocument); | 5797 visitor->trace(m_transformSourceDocument); |
5798 visitor->trace(m_listsInvalidatedAtDocument); | 5798 visitor->trace(m_listsInvalidatedAtDocument); |
5799 #if ENABLE(OILPAN) | 5799 #if ENABLE(OILPAN) |
5800 for (int i = 0; i < numNodeListInvalidationTypes; ++i) | 5800 for (int i = 0; i < numNodeListInvalidationTypes; ++i) |
5801 visitor->trace(m_nodeLists[i]); | 5801 visitor->trace(m_nodeLists[i]); |
5802 #endif | 5802 #endif |
5803 visitor->trace(m_cssCanvasElements); | 5803 visitor->trace(m_cssCanvasElements); |
5804 visitor->trace(m_topLayerElements); | 5804 visitor->trace(m_topLayerElements); |
5805 visitor->trace(m_elemSheet); | 5805 visitor->trace(m_elemSheet); |
5806 visitor->trace(m_nodeIterators); | 5806 visitor->trace(m_nodeIterators); |
| 5807 visitor->trace(m_ranges); |
5807 visitor->trace(m_styleEngine); | 5808 visitor->trace(m_styleEngine); |
5808 visitor->trace(m_formController); | 5809 visitor->trace(m_formController); |
5809 visitor->trace(m_domWindow); | 5810 visitor->trace(m_domWindow); |
5810 visitor->trace(m_fetcher); | 5811 visitor->trace(m_fetcher); |
5811 visitor->trace(m_parser); | 5812 visitor->trace(m_parser); |
5812 visitor->trace(m_contextFeatures); | 5813 visitor->trace(m_contextFeatures); |
5813 visitor->trace(m_styleSheetList); | 5814 visitor->trace(m_styleSheetList); |
5814 visitor->trace(m_mediaQueryMatcher); | 5815 visitor->trace(m_mediaQueryMatcher); |
5815 visitor->trace(m_registrationContext); | 5816 visitor->trace(m_registrationContext); |
5816 visitor->trace(m_associatedFormControls); | 5817 visitor->trace(m_associatedFormControls); |
5817 visitor->trace(m_templateDocument); | 5818 visitor->trace(m_templateDocument); |
5818 visitor->trace(m_templateDocumentHost); | 5819 visitor->trace(m_templateDocumentHost); |
5819 visitor->trace(m_visibilityObservers); | 5820 visitor->trace(m_visibilityObservers); |
5820 visitor->trace(m_userActionElements); | 5821 visitor->trace(m_userActionElements); |
5821 visitor->trace(m_svgExtensions); | 5822 visitor->trace(m_svgExtensions); |
5822 visitor->trace(m_timeline); | 5823 visitor->trace(m_timeline); |
5823 visitor->trace(m_compositorPendingAnimations); | 5824 visitor->trace(m_compositorPendingAnimations); |
5824 visitor->trace(m_contextDocument); | 5825 visitor->trace(m_contextDocument); |
5825 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this); | 5826 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this); |
5826 DocumentSupplementable::trace(visitor); | 5827 DocumentSupplementable::trace(visitor); |
5827 TreeScope::trace(visitor); | 5828 TreeScope::trace(visitor); |
5828 ContainerNode::trace(visitor); | 5829 ContainerNode::trace(visitor); |
5829 ExecutionContext::trace(visitor); | 5830 ExecutionContext::trace(visitor); |
5830 } | 5831 } |
5831 | 5832 |
5832 } // namespace WebCore | 5833 } // namespace WebCore |
OLD | NEW |