| Index: Source/core/rendering/RenderView.cpp
|
| diff --git a/Source/core/rendering/RenderView.cpp b/Source/core/rendering/RenderView.cpp
|
| index daaca7672da57e2e6242d5aec8c9ab8d328a4d8e..c257d333486830b065e532efd36ba4c215fab8d2 100644
|
| --- a/Source/core/rendering/RenderView.cpp
|
| +++ b/Source/core/rendering/RenderView.cpp
|
| @@ -542,7 +542,7 @@ static RenderObject* rendererAfterPosition(RenderObject* object, unsigned offset
|
|
|
| IntRect RenderView::selectionBounds(bool clipToVisibleContent) const
|
| {
|
| - typedef HashMap<RenderObject*, OwnPtr<RenderSelectionInfo> > SelectionMap;
|
| + typedef WillBeHeapHashMap<RawPtrWillBeMember<RenderObject>, OwnPtrWillBeMember<RenderSelectionInfo> > SelectionMap;
|
| SelectionMap selectedObjects;
|
|
|
| RenderObject* os = m_selectionStart;
|
| @@ -550,13 +550,13 @@ IntRect RenderView::selectionBounds(bool clipToVisibleContent) const
|
| while (os && os != stop) {
|
| if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selectionEnd) && os->selectionState() != SelectionNone) {
|
| // Blocks are responsible for painting line gaps and margin gaps. They must be examined as well.
|
| - selectedObjects.set(os, adoptPtr(new RenderSelectionInfo(os, clipToVisibleContent)));
|
| + selectedObjects.set(os, adoptPtrWillBeNoop(new RenderSelectionInfo(os, clipToVisibleContent)));
|
| RenderBlock* cb = os->containingBlock();
|
| while (cb && !cb->isRenderView()) {
|
| - OwnPtr<RenderSelectionInfo>& blockInfo = selectedObjects.add(cb, nullptr).storedValue->value;
|
| + OwnPtrWillBeMember<RenderSelectionInfo>& blockInfo = selectedObjects.add(cb, nullptr).storedValue->value;
|
| if (blockInfo)
|
| break;
|
| - blockInfo = adoptPtr(new RenderSelectionInfo(cb, clipToVisibleContent));
|
| + blockInfo = adoptPtrWillBeNoop(new RenderSelectionInfo(cb, clipToVisibleContent));
|
| cb = cb->containingBlock();
|
| }
|
| }
|
| @@ -646,14 +646,14 @@ void RenderView::setSelection(RenderObject* start, int startPos, RenderObject* e
|
| int oldEndPos = m_selectionEndPos;
|
|
|
| // Objects each have a single selection rect to examine.
|
| - typedef HashMap<RenderObject*, OwnPtr<RenderSelectionInfo> > SelectedObjectMap;
|
| + typedef WillBeHeapHashMap<RawPtrWillBeMember<RenderObject>, OwnPtrWillBeMember<RenderSelectionInfo> > SelectedObjectMap;
|
| SelectedObjectMap oldSelectedObjects;
|
| SelectedObjectMap newSelectedObjects;
|
|
|
| // Blocks contain selected objects and fill gaps between them, either on the left, right, or in between lines and blocks.
|
| // In order to get the repaint rect right, we have to examine left, middle, and right rects individually, since otherwise
|
| // the union of those rects might remain the same even when changes have occurred.
|
| - typedef HashMap<RenderBlock*, OwnPtr<RenderBlockSelectionInfo> > SelectedBlockMap;
|
| + typedef WillBeHeapHashMap<RawPtrWillBeMember<RenderBlock>, OwnPtrWillBeMember<RenderBlockSelectionInfo> > SelectedBlockMap;
|
| SelectedBlockMap oldSelectedBlocks;
|
| SelectedBlockMap newSelectedBlocks;
|
|
|
| @@ -664,14 +664,14 @@ void RenderView::setSelection(RenderObject* start, int startPos, RenderObject* e
|
| while (continueExploring) {
|
| if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selectionEnd) && os->selectionState() != SelectionNone) {
|
| // Blocks are responsible for painting line gaps and margin gaps. They must be examined as well.
|
| - oldSelectedObjects.set(os, adoptPtr(new RenderSelectionInfo(os, true)));
|
| + oldSelectedObjects.set(os, adoptPtrWillBeNoop(new RenderSelectionInfo(os, true)));
|
| if (blockRepaintMode == RepaintNewXOROld) {
|
| RenderBlock* cb = os->containingBlock();
|
| while (cb && !cb->isRenderView()) {
|
| - OwnPtr<RenderBlockSelectionInfo>& blockInfo = oldSelectedBlocks.add(cb, nullptr).storedValue->value;
|
| + OwnPtrWillBeMember<RenderBlockSelectionInfo>& blockInfo = oldSelectedBlocks.add(cb, nullptr).storedValue->value;
|
| if (blockInfo)
|
| break;
|
| - blockInfo = adoptPtr(new RenderBlockSelectionInfo(cb));
|
| + blockInfo = adoptPtrWillBeNoop(new RenderBlockSelectionInfo(cb));
|
| cb = cb->containingBlock();
|
| }
|
| }
|
| @@ -720,13 +720,13 @@ void RenderView::setSelection(RenderObject* start, int startPos, RenderObject* e
|
| continueExploring = o && (o != stop);
|
| while (continueExploring) {
|
| if ((o->canBeSelectionLeaf() || o == start || o == end) && o->selectionState() != SelectionNone) {
|
| - newSelectedObjects.set(o, adoptPtr(new RenderSelectionInfo(o, true)));
|
| + newSelectedObjects.set(o, adoptPtrWillBeNoop(new RenderSelectionInfo(o, true)));
|
| RenderBlock* cb = o->containingBlock();
|
| while (cb && !cb->isRenderView()) {
|
| - OwnPtr<RenderBlockSelectionInfo>& blockInfo = newSelectedBlocks.add(cb, nullptr).storedValue->value;
|
| + OwnPtrWillBeMember<RenderBlockSelectionInfo>& blockInfo = newSelectedBlocks.add(cb, nullptr).storedValue->value;
|
| if (blockInfo)
|
| break;
|
| - blockInfo = adoptPtr(new RenderBlockSelectionInfo(cb));
|
| + blockInfo = adoptPtrWillBeNoop(new RenderBlockSelectionInfo(cb));
|
| cb = cb->containingBlock();
|
| }
|
| }
|
|
|