| 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 3745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3756 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterato
r it = nodeIteratorsList.begin(); it != nodeIteratorsEnd; ++it) { | 3756 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterato
r it = nodeIteratorsList.begin(); it != nodeIteratorsEnd; ++it) { |
| 3757 if ((*it)->root() == node) { | 3757 if ((*it)->root() == node) { |
| 3758 detachNodeIterator(*it); | 3758 detachNodeIterator(*it); |
| 3759 newDocument.attachNodeIterator(*it); | 3759 newDocument.attachNodeIterator(*it); |
| 3760 } | 3760 } |
| 3761 } | 3761 } |
| 3762 } | 3762 } |
| 3763 | 3763 |
| 3764 void Document::updateRangesAfterChildrenChanged(ContainerNode* container) | 3764 void Document::updateRangesAfterChildrenChanged(ContainerNode* container) |
| 3765 { | 3765 { |
| 3766 ASSERT(!TemporaryRangeScope::active()); |
| 3766 if (!m_ranges.isEmpty()) { | 3767 if (!m_ranges.isEmpty()) { |
| 3767 AttachedRangeSet::const_iterator end = m_ranges.end(); | 3768 AttachedRangeSet::const_iterator end = m_ranges.end(); |
| 3768 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) | 3769 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
| 3769 (*it)->nodeChildrenChanged(container); | 3770 (*it)->nodeChildrenChanged(container); |
| 3770 } | 3771 } |
| 3771 } | 3772 } |
| 3772 | 3773 |
| 3773 void Document::updateRangesAfterNodeMovedToAnotherDocument(const Node& node) | 3774 void Document::updateRangesAfterNodeMovedToAnotherDocument(const Node& node) |
| 3774 { | 3775 { |
| 3776 ASSERT(!TemporaryRangeScope::active()); |
| 3775 ASSERT(node.document() != this); | 3777 ASSERT(node.document() != this); |
| 3776 if (m_ranges.isEmpty()) | 3778 if (m_ranges.isEmpty()) |
| 3777 return; | 3779 return; |
| 3778 AttachedRangeSet ranges = m_ranges; | 3780 AttachedRangeSet ranges = m_ranges; |
| 3779 AttachedRangeSet::const_iterator end = ranges.end(); | 3781 AttachedRangeSet::const_iterator end = ranges.end(); |
| 3780 for (AttachedRangeSet::const_iterator it = ranges.begin(); it != end; ++it) | 3782 for (AttachedRangeSet::const_iterator it = ranges.begin(); it != end; ++it) |
| 3781 (*it)->updateOwnerDocumentIfNeeded(); | 3783 (*it)->updateOwnerDocumentIfNeeded(); |
| 3782 } | 3784 } |
| 3783 | 3785 |
| 3784 void Document::nodeChildrenWillBeRemoved(ContainerNode& container) | 3786 void Document::nodeChildrenWillBeRemoved(ContainerNode& container) |
| 3785 { | 3787 { |
| 3788 ASSERT(!TemporaryRangeScope::active()); |
| 3786 NoEventDispatchAssertion assertNoEventDispatch; | 3789 NoEventDispatchAssertion assertNoEventDispatch; |
| 3787 if (!m_ranges.isEmpty()) { | 3790 if (!m_ranges.isEmpty()) { |
| 3788 AttachedRangeSet::const_iterator end = m_ranges.end(); | 3791 AttachedRangeSet::const_iterator end = m_ranges.end(); |
| 3789 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) | 3792 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
| 3790 (*it)->nodeChildrenWillBeRemoved(container); | 3793 (*it)->nodeChildrenWillBeRemoved(container); |
| 3791 } | 3794 } |
| 3792 | 3795 |
| 3793 WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterator nod
eIteratorsEnd = m_nodeIterators.end(); | 3796 WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterator nod
eIteratorsEnd = m_nodeIterators.end(); |
| 3794 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) { |
| 3795 for (Node* n = container.firstChild(); n; n = n->nextSibling()) | 3798 for (Node* n = container.firstChild(); n; n = n->nextSibling()) |
| 3796 (*it)->nodeWillBeRemoved(*n); | 3799 (*it)->nodeWillBeRemoved(*n); |
| 3797 } | 3800 } |
| 3798 | 3801 |
| 3799 if (LocalFrame* frame = this->frame()) { | 3802 if (LocalFrame* frame = this->frame()) { |
| 3800 for (Node* n = container.firstChild(); n; n = n->nextSibling()) { | 3803 for (Node* n = container.firstChild(); n; n = n->nextSibling()) { |
| 3801 frame->eventHandler().nodeWillBeRemoved(*n); | 3804 frame->eventHandler().nodeWillBeRemoved(*n); |
| 3802 frame->selection().nodeWillBeRemoved(*n); | 3805 frame->selection().nodeWillBeRemoved(*n); |
| 3803 frame->page()->dragCaretController().nodeWillBeRemoved(*n); | 3806 frame->page()->dragCaretController().nodeWillBeRemoved(*n); |
| 3804 } | 3807 } |
| 3805 } | 3808 } |
| 3806 } | 3809 } |
| 3807 | 3810 |
| 3808 void Document::nodeWillBeRemoved(Node& n) | 3811 void Document::nodeWillBeRemoved(Node& n) |
| 3809 { | 3812 { |
| 3813 ASSERT(!TemporaryRangeScope::active()); |
| 3810 WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterator nod
eIteratorsEnd = m_nodeIterators.end(); | 3814 WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterator nod
eIteratorsEnd = m_nodeIterators.end(); |
| 3811 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterato
r it = m_nodeIterators.begin(); it != nodeIteratorsEnd; ++it) | 3815 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<NodeIterator> >::const_iterato
r it = m_nodeIterators.begin(); it != nodeIteratorsEnd; ++it) |
| 3812 (*it)->nodeWillBeRemoved(n); | 3816 (*it)->nodeWillBeRemoved(n); |
| 3813 | 3817 |
| 3814 if (!m_ranges.isEmpty()) { | 3818 if (!m_ranges.isEmpty()) { |
| 3815 AttachedRangeSet::const_iterator rangesEnd = m_ranges.end(); | 3819 AttachedRangeSet::const_iterator rangesEnd = m_ranges.end(); |
| 3816 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != range
sEnd; ++it) | 3820 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != range
sEnd; ++it) |
| 3817 (*it)->nodeWillBeRemoved(n); | 3821 (*it)->nodeWillBeRemoved(n); |
| 3818 } | 3822 } |
| 3819 | 3823 |
| 3820 if (LocalFrame* frame = this->frame()) { | 3824 if (LocalFrame* frame = this->frame()) { |
| 3821 frame->eventHandler().nodeWillBeRemoved(n); | 3825 frame->eventHandler().nodeWillBeRemoved(n); |
| 3822 frame->selection().nodeWillBeRemoved(n); | 3826 frame->selection().nodeWillBeRemoved(n); |
| 3823 frame->page()->dragCaretController().nodeWillBeRemoved(n); | 3827 frame->page()->dragCaretController().nodeWillBeRemoved(n); |
| 3824 } | 3828 } |
| 3825 } | 3829 } |
| 3826 | 3830 |
| 3827 void Document::didInsertText(Node* text, unsigned offset, unsigned length) | 3831 void Document::didInsertText(Node* text, unsigned offset, unsigned length) |
| 3828 { | 3832 { |
| 3833 ASSERT(!TemporaryRangeScope::active()); |
| 3829 if (!m_ranges.isEmpty()) { | 3834 if (!m_ranges.isEmpty()) { |
| 3830 AttachedRangeSet::const_iterator end = m_ranges.end(); | 3835 AttachedRangeSet::const_iterator end = m_ranges.end(); |
| 3831 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) | 3836 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
| 3832 (*it)->didInsertText(text, offset, length); | 3837 (*it)->didInsertText(text, offset, length); |
| 3833 } | 3838 } |
| 3834 | 3839 |
| 3835 // Update the markers for spelling and grammar checking. | 3840 // Update the markers for spelling and grammar checking. |
| 3836 m_markers->shiftMarkers(text, offset, length); | 3841 m_markers->shiftMarkers(text, offset, length); |
| 3837 } | 3842 } |
| 3838 | 3843 |
| 3839 void Document::didRemoveText(Node* text, unsigned offset, unsigned length) | 3844 void Document::didRemoveText(Node* text, unsigned offset, unsigned length) |
| 3840 { | 3845 { |
| 3846 ASSERT(!TemporaryRangeScope::active()); |
| 3841 if (!m_ranges.isEmpty()) { | 3847 if (!m_ranges.isEmpty()) { |
| 3842 AttachedRangeSet::const_iterator end = m_ranges.end(); | 3848 AttachedRangeSet::const_iterator end = m_ranges.end(); |
| 3843 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) | 3849 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
| 3844 (*it)->didRemoveText(text, offset, length); | 3850 (*it)->didRemoveText(text, offset, length); |
| 3845 } | 3851 } |
| 3846 | 3852 |
| 3847 // Update the markers for spelling and grammar checking. | 3853 // Update the markers for spelling and grammar checking. |
| 3848 m_markers->removeMarkers(text, offset, length); | 3854 m_markers->removeMarkers(text, offset, length); |
| 3849 m_markers->shiftMarkers(text, offset + length, 0 - length); | 3855 m_markers->shiftMarkers(text, offset + length, 0 - length); |
| 3850 } | 3856 } |
| 3851 | 3857 |
| 3852 void Document::didMergeTextNodes(Text& oldNode, unsigned offset) | 3858 void Document::didMergeTextNodes(Text& oldNode, unsigned offset) |
| 3853 { | 3859 { |
| 3860 ASSERT(!TemporaryRangeScope::active()); |
| 3854 if (!m_ranges.isEmpty()) { | 3861 if (!m_ranges.isEmpty()) { |
| 3855 NodeWithIndex oldNodeWithIndex(oldNode); | 3862 NodeWithIndex oldNodeWithIndex(oldNode); |
| 3856 AttachedRangeSet::const_iterator end = m_ranges.end(); | 3863 AttachedRangeSet::const_iterator end = m_ranges.end(); |
| 3857 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) | 3864 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
| 3858 (*it)->didMergeTextNodes(oldNodeWithIndex, offset); | 3865 (*it)->didMergeTextNodes(oldNodeWithIndex, offset); |
| 3859 } | 3866 } |
| 3860 | 3867 |
| 3861 if (m_frame) | 3868 if (m_frame) |
| 3862 m_frame->selection().didMergeTextNodes(oldNode, offset); | 3869 m_frame->selection().didMergeTextNodes(oldNode, offset); |
| 3863 | 3870 |
| 3864 // FIXME: This should update markers for spelling and grammar checking. | 3871 // FIXME: This should update markers for spelling and grammar checking. |
| 3865 } | 3872 } |
| 3866 | 3873 |
| 3867 void Document::didSplitTextNode(Text& oldNode) | 3874 void Document::didSplitTextNode(Text& oldNode) |
| 3868 { | 3875 { |
| 3876 ASSERT(!TemporaryRangeScope::active()); |
| 3869 if (!m_ranges.isEmpty()) { | 3877 if (!m_ranges.isEmpty()) { |
| 3870 AttachedRangeSet::const_iterator end = m_ranges.end(); | 3878 AttachedRangeSet::const_iterator end = m_ranges.end(); |
| 3871 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) | 3879 for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end;
++it) |
| 3872 (*it)->didSplitTextNode(oldNode); | 3880 (*it)->didSplitTextNode(oldNode); |
| 3873 } | 3881 } |
| 3874 | 3882 |
| 3875 if (m_frame) | 3883 if (m_frame) |
| 3876 m_frame->selection().didSplitTextNode(oldNode); | 3884 m_frame->selection().didSplitTextNode(oldNode); |
| 3877 | 3885 |
| 3878 // FIXME: This should update markers for spelling and grammar checking. | 3886 // FIXME: This should update markers for spelling and grammar checking. |
| (...skipping 1992 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5871 visitor->trace(m_compositorPendingAnimations); | 5879 visitor->trace(m_compositorPendingAnimations); |
| 5872 visitor->trace(m_contextDocument); | 5880 visitor->trace(m_contextDocument); |
| 5873 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this); | 5881 visitor->registerWeakMembers<Document, &Document::clearWeakMembers>(this); |
| 5874 DocumentSupplementable::trace(visitor); | 5882 DocumentSupplementable::trace(visitor); |
| 5875 TreeScope::trace(visitor); | 5883 TreeScope::trace(visitor); |
| 5876 ContainerNode::trace(visitor); | 5884 ContainerNode::trace(visitor); |
| 5877 ExecutionContext::trace(visitor); | 5885 ExecutionContext::trace(visitor); |
| 5878 } | 5886 } |
| 5879 | 5887 |
| 5880 } // namespace WebCore | 5888 } // namespace WebCore |
| OLD | NEW |