Changeset 58441 in webkit


Ignore:
Timestamp:
Apr 28, 2010 3:48:23 PM (14 years ago)
Author:
eric@webkit.org
Message:

2010-04-28 Abhishek Arya <inferno@chromium.org>

Reviewed by Eric Seidel.

Tests for a crash when an image drag-drop operation happens inside a continuously refreshing iframe.
https://bugs.webkit.org/show_bug.cgi?id=37618

  • editing/pasteboard/drag-drop-iframe-refresh-crash-expected.txt: Added.
  • editing/pasteboard/drag-drop-iframe-refresh-crash.html: Added.
  • editing/resources/drag-drop.html: Added.

2010-04-28 Abhishek Arya <inferno@chromium.org>

Reviewed by Eric Seidel.

Convert m_documentUnderMouse, m_dragInitiator to RefPtr.
Eliminated unused m_dragInitiator accessor to prevent dereferencing.
https://bugs.webkit.org/show_bug.cgi?id=37618

Test: editing/pasteboard/drag-drop-iframe-refresh-crash.html

  • page/DragController.cpp: (WebCore::DragController::tryDocumentDrag): (WebCore::DragController::concludeEditDrag):
  • page/DragController.h: (WebCore::DragController::draggingImageURL): (WebCore::DragController::documentUnderMouse):
Location:
trunk
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r58439 r58441  
     12010-04-28  Abhishek Arya  <inferno@chromium.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Tests for a crash when an image drag-drop operation happens inside a continuously refreshing iframe.
     6        https://bugs.webkit.org/show_bug.cgi?id=37618
     7
     8        * editing/pasteboard/drag-drop-iframe-refresh-crash-expected.txt: Added.
     9        * editing/pasteboard/drag-drop-iframe-refresh-crash.html: Added.
     10        * editing/resources/drag-drop.html: Added.
     11
    1122010-04-28  Adam Langley  <agl@chromium.org>
    213
  • trunk/WebCore/ChangeLog

    r58440 r58441  
     12010-04-28  Abhishek Arya  <inferno@chromium.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Convert m_documentUnderMouse, m_dragInitiator to RefPtr.
     6        Eliminated unused m_dragInitiator accessor to prevent dereferencing.
     7        https://bugs.webkit.org/show_bug.cgi?id=37618
     8
     9        Test: editing/pasteboard/drag-drop-iframe-refresh-crash.html
     10
     11        * page/DragController.cpp:
     12        (WebCore::DragController::tryDocumentDrag):
     13        (WebCore::DragController::concludeEditDrag):
     14        * page/DragController.h:
     15        (WebCore::DragController::draggingImageURL):
     16        (WebCore::DragController::documentUnderMouse):
     17
    1182010-04-28  Dumitru Daniliuc  <dumi@chromium.org>
    219
  • trunk/WebCore/page/DragController.cpp

    r56175 r58441  
    314314
    315315        IntPoint point = frameView->windowToContents(dragData->clientPosition());
    316         Element* element = elementUnderMouse(m_documentUnderMouse, point);
     316        Element* element = elementUnderMouse(m_documentUnderMouse.get(), point);
    317317        if (!asFileInput(element)) {
    318318            VisibleSelection dragCaret = m_documentUnderMouse->frame()->visiblePositionForPoint(point);
     
    364364
    365365    IntPoint point = m_documentUnderMouse->view()->windowToContents(dragData->clientPosition());
    366     Element* element = elementUnderMouse(m_documentUnderMouse, point);
     366    Element* element = elementUnderMouse(m_documentUnderMouse.get(), point);
    367367    Frame* innerFrame = element->ownerDocument()->frame();
    368368    ASSERT(innerFrame);
     
    440440        } else {
    441441            if (setSelectionToDragCaret(innerFrame, dragCaret, range, point))
    442                 applyCommand(ReplaceSelectionCommand::create(m_documentUnderMouse, fragment, true, dragData->canSmartReplace(), chosePlainText));
     442                applyCommand(ReplaceSelectionCommand::create(m_documentUnderMouse.get(), fragment, true, dragData->canSmartReplace(), chosePlainText));
    443443        }
    444444    } else {
     
    451451        m_client->willPerformDragDestinationAction(DragDestinationActionEdit, dragData);
    452452        if (setSelectionToDragCaret(innerFrame, dragCaret, range, point))
    453             applyCommand(ReplaceSelectionCommand::create(m_documentUnderMouse, createFragmentFromText(range.get(), text), true, false, true));
     453            applyCommand(ReplaceSelectionCommand::create(m_documentUnderMouse.get(), createFragmentFromText(range.get(), text), true, false, true));
    454454    }
    455455    loader->setAllowStaleResources(false);
  • trunk/WebCore/page/DragController.h

    r55353 r58441  
    6868        void setDraggingImageURL(const KURL& url) { m_draggingImageURL = url; }
    6969        const KURL& draggingImageURL() const { return m_draggingImageURL; }
    70         void setDragInitiator(Document* initiator) { m_dragInitiator = initiator; m_didInitiateDrag = true; }
    71         Document* dragInitiator() const { return m_dragInitiator; }
    7270        void setDragOffset(const IntPoint& offset) { m_dragOffset = offset; }
    7371        const IntPoint& dragOffset() const { return m_dragOffset; }
    7472        DragSourceAction dragSourceAction() const { return m_dragSourceAction; }
    7573
    76         Document* documentUnderMouse() const { return m_documentUnderMouse; }
     74        Document* documentUnderMouse() const { return m_documentUnderMouse.get(); }
    7775        DragDestinationAction dragDestinationAction() const { return m_dragDestinationAction; }
    7876        DragSourceAction delegateDragSourceAction(const IntPoint& pagePoint);
     
    115113        DragClient* m_client;
    116114       
    117         Document* m_documentUnderMouse; // The document the mouse was last dragged over.
    118         Document* m_dragInitiator; // The Document (if any) that initiated the drag.
     115        RefPtr<Document> m_documentUnderMouse; // The document the mouse was last dragged over.
     116        RefPtr<Document> m_dragInitiator; // The Document (if any) that initiated the drag.
    119117       
    120118        DragDestinationAction m_dragDestinationAction;
Note: See TracChangeset for help on using the changeset viewer.