| Index: Source/core/dom/Document.cpp
|
| diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp
|
| index 298c602884fe7b76f02d5a09127feda70e1e4d00..6c41759e9075fa40a77611faadd2d4b1d84d57d9 100644
|
| --- a/Source/core/dom/Document.cpp
|
| +++ b/Source/core/dom/Document.cpp
|
| @@ -531,9 +531,9 @@ Document::Document(const DocumentInit& initializer, DocumentClassFlags documentC
|
| Document::~Document()
|
| {
|
| ASSERT(!renderView());
|
| - ASSERT(m_ranges.isEmpty());
|
| ASSERT(!parentTreeScope());
|
| #if !ENABLE(OILPAN)
|
| + ASSERT(m_ranges.isEmpty());
|
| ASSERT(!hasGuardRefCount());
|
| // With Oilpan, either the document outlives the visibility observers
|
| // or the visibility observers and the document die in the same GC round.
|
| @@ -2645,7 +2645,7 @@ bool Document::dispatchBeforeUnloadEvent(Chrome& chrome, bool& didAllowNavigatio
|
| if (!body())
|
| return true;
|
|
|
| - RefPtr<Document> protect(this);
|
| + RefPtrWillBeRawPtr<Document> protect(this);
|
|
|
| RefPtrWillBeRawPtr<BeforeUnloadEvent> beforeUnloadEvent = BeforeUnloadEvent::create();
|
| m_loadEventProgress = BeforeUnloadEventInProgress;
|
| @@ -2671,7 +2671,7 @@ bool Document::dispatchBeforeUnloadEvent(Chrome& chrome, bool& didAllowNavigatio
|
|
|
| void Document::dispatchUnloadEvents()
|
| {
|
| - RefPtr<Document> protect(this);
|
| + RefPtrWillBeRawPtr<Document> protect(this);
|
| if (m_parser)
|
| m_parser->stopParsing();
|
|
|
| @@ -3778,8 +3778,8 @@ void Document::moveNodeIteratorsToNewDocument(Node& node, Document& newDocument)
|
| void Document::updateRangesAfterChildrenChanged(ContainerNode* container)
|
| {
|
| if (!m_ranges.isEmpty()) {
|
| - HashSet<Range*>::const_iterator end = m_ranges.end();
|
| - for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| + AttachedRangeSet::const_iterator end = m_ranges.end();
|
| + for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| (*it)->nodeChildrenChanged(container);
|
| }
|
| }
|
| @@ -3788,8 +3788,8 @@ void Document::nodeChildrenWillBeRemoved(ContainerNode& container)
|
| {
|
| NoEventDispatchAssertion assertNoEventDispatch;
|
| if (!m_ranges.isEmpty()) {
|
| - HashSet<Range*>::const_iterator end = m_ranges.end();
|
| - for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| + AttachedRangeSet::const_iterator end = m_ranges.end();
|
| + for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| (*it)->nodeChildrenWillBeRemoved(container);
|
| }
|
|
|
| @@ -3815,8 +3815,8 @@ void Document::nodeWillBeRemoved(Node& n)
|
| (*it)->nodeWillBeRemoved(n);
|
|
|
| if (!m_ranges.isEmpty()) {
|
| - HashSet<Range*>::const_iterator rangesEnd = m_ranges.end();
|
| - for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != rangesEnd; ++it)
|
| + AttachedRangeSet::const_iterator rangesEnd = m_ranges.end();
|
| + for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != rangesEnd; ++it)
|
| (*it)->nodeWillBeRemoved(n);
|
| }
|
|
|
| @@ -3830,8 +3830,8 @@ void Document::nodeWillBeRemoved(Node& n)
|
| void Document::didInsertText(Node* text, unsigned offset, unsigned length)
|
| {
|
| if (!m_ranges.isEmpty()) {
|
| - HashSet<Range*>::const_iterator end = m_ranges.end();
|
| - for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| + AttachedRangeSet::const_iterator end = m_ranges.end();
|
| + for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| (*it)->didInsertText(text, offset, length);
|
| }
|
|
|
| @@ -3842,8 +3842,8 @@ void Document::didInsertText(Node* text, unsigned offset, unsigned length)
|
| void Document::didRemoveText(Node* text, unsigned offset, unsigned length)
|
| {
|
| if (!m_ranges.isEmpty()) {
|
| - HashSet<Range*>::const_iterator end = m_ranges.end();
|
| - for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| + AttachedRangeSet::const_iterator end = m_ranges.end();
|
| + for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| (*it)->didRemoveText(text, offset, length);
|
| }
|
|
|
| @@ -3856,8 +3856,8 @@ void Document::didMergeTextNodes(Text& oldNode, unsigned offset)
|
| {
|
| if (!m_ranges.isEmpty()) {
|
| NodeWithIndex oldNodeWithIndex(oldNode);
|
| - HashSet<Range*>::const_iterator end = m_ranges.end();
|
| - for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| + AttachedRangeSet::const_iterator end = m_ranges.end();
|
| + for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| (*it)->didMergeTextNodes(oldNodeWithIndex, offset);
|
| }
|
|
|
| @@ -3870,8 +3870,8 @@ void Document::didMergeTextNodes(Text& oldNode, unsigned offset)
|
| void Document::didSplitTextNode(Text& oldNode)
|
| {
|
| if (!m_ranges.isEmpty()) {
|
| - HashSet<Range*>::const_iterator end = m_ranges.end();
|
| - for (HashSet<Range*>::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| + AttachedRangeSet::const_iterator end = m_ranges.end();
|
| + for (AttachedRangeSet::const_iterator it = m_ranges.begin(); it != end; ++it)
|
| (*it)->didSplitTextNode(oldNode);
|
| }
|
|
|
| @@ -4654,7 +4654,7 @@ void Document::finishedParsing()
|
| // The loader's finishedParsing() method may invoke script that causes this object to
|
| // be dereferenced (when this document is in an iframe and the onload causes the iframe's src to change).
|
| // Keep it alive until we are done.
|
| - RefPtr<Document> protect(this);
|
| + RefPtrWillBeRawPtr<Document> protect(this);
|
|
|
| if (RefPtr<LocalFrame> f = frame()) {
|
| // Don't update the render tree if we haven't requested the main resource yet to avoid
|
| @@ -5804,6 +5804,7 @@ void Document::trace(Visitor* visitor)
|
| visitor->trace(m_topLayerElements);
|
| visitor->trace(m_elemSheet);
|
| visitor->trace(m_nodeIterators);
|
| + visitor->trace(m_ranges);
|
| visitor->trace(m_styleEngine);
|
| visitor->trace(m_formController);
|
| visitor->trace(m_domWindow);
|
|
|