Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(496)

Side by Side Diff: Source/core/page/DragController.cpp

Issue 517043003: Move Frame to the Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Update OilpanExpectations Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2009, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Google Inc. 3 * Copyright (C) 2008 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 DragSession DragController::dragUpdated(DragData* dragData) 231 DragSession DragController::dragUpdated(DragData* dragData)
232 { 232 {
233 return dragEnteredOrUpdated(dragData); 233 return dragEnteredOrUpdated(dragData);
234 } 234 }
235 235
236 bool DragController::performDrag(DragData* dragData) 236 bool DragController::performDrag(DragData* dragData)
237 { 237 {
238 ASSERT(dragData); 238 ASSERT(dragData);
239 m_documentUnderMouse = m_page->deprecatedLocalMainFrame()->documentAtPoint(d ragData->clientPosition()); 239 m_documentUnderMouse = m_page->deprecatedLocalMainFrame()->documentAtPoint(d ragData->clientPosition());
240 if ((m_dragDestinationAction & DragDestinationActionDHTML) && m_documentIsHa ndlingDrag) { 240 if ((m_dragDestinationAction & DragDestinationActionDHTML) && m_documentIsHa ndlingDrag) {
241 RefPtr<LocalFrame> mainFrame = m_page->deprecatedLocalMainFrame(); 241 RefPtrWillBeRawPtr<LocalFrame> mainFrame = m_page->deprecatedLocalMainFr ame();
242 bool preventedDefault = false; 242 bool preventedDefault = false;
243 if (mainFrame->view()) { 243 if (mainFrame->view()) {
244 // Sending an event can result in the destruction of the view and pa rt. 244 // Sending an event can result in the destruction of the view and pa rt.
245 RefPtrWillBeRawPtr<DataTransfer> dataTransfer = createDraggingDataTr ansfer(DataTransferReadable, dragData); 245 RefPtrWillBeRawPtr<DataTransfer> dataTransfer = createDraggingDataTr ansfer(DataTransferReadable, dragData);
246 dataTransfer->setSourceOperation(dragData->draggingSourceOperationMa sk()); 246 dataTransfer->setSourceOperation(dragData->draggingSourceOperationMa sk());
247 preventedDefault = mainFrame->eventHandler().performDragAndDrop(crea teMouseEvent(dragData), dataTransfer.get()); 247 preventedDefault = mainFrame->eventHandler().performDragAndDrop(crea teMouseEvent(dragData), dataTransfer.get());
248 dataTransfer->setAccessPolicy(DataTransferNumb); // Invalidate clipb oard here for security 248 dataTransfer->setAccessPolicy(DataTransferNumb); // Invalidate clipb oard here for security
249 } 249 }
250 if (preventedDefault) { 250 if (preventedDefault) {
251 m_documentUnderMouse = nullptr; 251 m_documentUnderMouse = nullptr;
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 m_fileInputElementUnderMouse = nullptr; 452 m_fileInputElementUnderMouse = nullptr;
453 } 453 }
454 454
455 if (!m_documentUnderMouse) 455 if (!m_documentUnderMouse)
456 return false; 456 return false;
457 457
458 IntPoint point = m_documentUnderMouse->view()->windowToContents(dragData->cl ientPosition()); 458 IntPoint point = m_documentUnderMouse->view()->windowToContents(dragData->cl ientPosition());
459 Element* element = elementUnderMouse(m_documentUnderMouse.get(), point); 459 Element* element = elementUnderMouse(m_documentUnderMouse.get(), point);
460 if (!element) 460 if (!element)
461 return false; 461 return false;
462 RefPtr<LocalFrame> innerFrame = element->ownerDocument()->frame(); 462 RefPtrWillBeRawPtr<LocalFrame> innerFrame = element->ownerDocument()->frame( );
463 ASSERT(innerFrame); 463 ASSERT(innerFrame);
464 464
465 if (m_page->dragCaretController().hasCaret() && !dispatchTextInputEventFor(i nnerFrame.get(), dragData)) 465 if (m_page->dragCaretController().hasCaret() && !dispatchTextInputEventFor(i nnerFrame.get(), dragData))
466 return true; 466 return true;
467 467
468 if (dragData->containsFiles() && fileInput) { 468 if (dragData->containsFiles() && fileInput) {
469 // fileInput should be the element we hit tested for, unless it was made 469 // fileInput should be the element we hit tested for, unless it was made
470 // display:none in a drop event handler. 470 // display:none in a drop event handler.
471 ASSERT(fileInput == element || !fileInput->renderer()); 471 ASSERT(fileInput == element || !fileInput->renderer());
472 if (fileInput->isDisabledFormControl()) 472 if (fileInput->isDisabledFormControl())
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 return DragOperationLink; 582 return DragOperationLink;
583 583
584 // FIXME: Does IE really return "generic" even if no operations were allowed by the source? 584 // FIXME: Does IE really return "generic" even if no operations were allowed by the source?
585 return DragOperationGeneric; 585 return DragOperationGeneric;
586 } 586 }
587 587
588 bool DragController::tryDHTMLDrag(DragData* dragData, DragOperation& operation) 588 bool DragController::tryDHTMLDrag(DragData* dragData, DragOperation& operation)
589 { 589 {
590 ASSERT(dragData); 590 ASSERT(dragData);
591 ASSERT(m_documentUnderMouse); 591 ASSERT(m_documentUnderMouse);
592 RefPtr<LocalFrame> mainFrame = m_page->deprecatedLocalMainFrame(); 592 RefPtrWillBeRawPtr<LocalFrame> mainFrame = m_page->deprecatedLocalMainFrame( );
593 RefPtr<FrameView> viewProtector = mainFrame->view(); 593 if (!mainFrame->view())
594 if (!viewProtector)
595 return false; 594 return false;
596 595
596 RefPtr<FrameView> viewProtector(mainFrame->view());
597 DataTransferAccessPolicy policy = m_documentUnderMouse->securityOrigin()->is Local() ? DataTransferReadable : DataTransferTypesReadable; 597 DataTransferAccessPolicy policy = m_documentUnderMouse->securityOrigin()->is Local() ? DataTransferReadable : DataTransferTypesReadable;
598 RefPtrWillBeRawPtr<DataTransfer> dataTransfer = createDraggingDataTransfer(p olicy, dragData); 598 RefPtrWillBeRawPtr<DataTransfer> dataTransfer = createDraggingDataTransfer(p olicy, dragData);
599 DragOperation srcOpMask = dragData->draggingSourceOperationMask(); 599 DragOperation srcOpMask = dragData->draggingSourceOperationMask();
600 dataTransfer->setSourceOperation(srcOpMask); 600 dataTransfer->setSourceOperation(srcOpMask);
601 601
602 PlatformMouseEvent event = createMouseEvent(dragData); 602 PlatformMouseEvent event = createMouseEvent(dragData);
603 if (!mainFrame->eventHandler().updateDragAndDrop(event, dataTransfer.get())) { 603 if (!mainFrame->eventHandler().updateDragAndDrop(event, dataTransfer.get())) {
604 dataTransfer->setAccessPolicy(DataTransferNumb); // invalidate clipboard here for security 604 dataTransfer->setAccessPolicy(DataTransferNumb); // invalidate clipboard here for security
605 return false; 605 return false;
606 } 606 }
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 } 920 }
921 921
922 return true; 922 return true;
923 } 923 }
924 924
925 void DragController::doSystemDrag(DragImage* image, const IntPoint& dragLocation , const IntPoint& eventPos, DataTransfer* dataTransfer, LocalFrame* frame, bool forLink) 925 void DragController::doSystemDrag(DragImage* image, const IntPoint& dragLocation , const IntPoint& eventPos, DataTransfer* dataTransfer, LocalFrame* frame, bool forLink)
926 { 926 {
927 m_didInitiateDrag = true; 927 m_didInitiateDrag = true;
928 m_dragInitiator = frame->document(); 928 m_dragInitiator = frame->document();
929 // Protect this frame and view, as a load may occur mid drag and attempt to unload this frame 929 // Protect this frame and view, as a load may occur mid drag and attempt to unload this frame
930 RefPtr<LocalFrame> frameProtector = m_page->deprecatedLocalMainFrame(); 930 RefPtrWillBeRawPtr<LocalFrame> mainFrame = m_page->deprecatedLocalMainFrame( );
931 RefPtr<FrameView> viewProtector = frameProtector->view(); 931 RefPtr<FrameView> mainFrameView = mainFrame->view();
932 m_client->startDrag(image, viewProtector->rootViewToContents(frame->view()-> contentsToRootView(dragLocation)), 932
933 viewProtector->rootViewToContents(frame->view()->contentsToRootView(even tPos)), dataTransfer, frameProtector.get(), forLink); 933 m_client->startDrag(image, mainFrameView->rootViewToContents(frame->view()-> contentsToRootView(dragLocation)),
934 mainFrameView->rootViewToContents(frame->view()->contentsToRootView(even tPos)), dataTransfer, frame, forLink);
934 // DragClient::startDrag can cause our Page to dispear, deallocating |this|. 935 // DragClient::startDrag can cause our Page to dispear, deallocating |this|.
935 if (!frameProtector->page()) 936 if (!frame->page())
936 return; 937 return;
937 938
938 cleanupAfterSystemDrag(); 939 cleanupAfterSystemDrag();
939 } 940 }
940 941
941 DragOperation DragController::dragOperation(DragData* dragData) 942 DragOperation DragController::dragOperation(DragData* dragData)
942 { 943 {
943 // FIXME: To match the MacOS behaviour we should return DragOperationNone 944 // FIXME: To match the MacOS behaviour we should return DragOperationNone
944 // if we are a modal window, we are the drag source, or the window is an 945 // if we are a modal window, we are the drag source, or the window is an
945 // attached sheet If this can be determined from within WebCore 946 // attached sheet If this can be determined from within WebCore
(...skipping 19 matching lines...) Expand all
965 966
966 void DragController::trace(Visitor* visitor) 967 void DragController::trace(Visitor* visitor)
967 { 968 {
968 visitor->trace(m_page); 969 visitor->trace(m_page);
969 visitor->trace(m_documentUnderMouse); 970 visitor->trace(m_documentUnderMouse);
970 visitor->trace(m_dragInitiator); 971 visitor->trace(m_dragInitiator);
971 visitor->trace(m_fileInputElementUnderMouse); 972 visitor->trace(m_fileInputElementUnderMouse);
972 } 973 }
973 974
974 } // namespace blink 975 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698