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

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

Issue 16715002: Refactor WebCore::DragImage. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 6 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
11 * notice, this list of conditions and the following disclaimer in the 11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 12 * documentation and/or other materials provided with the distribution.
13 * 13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */ 25 */
26 26
27 #include "config.h" 27 #include "config.h"
28 #include "core/page/DragController.h" 28 #include "core/page/DragController.h"
29 29
30 #include <wtf/CurrentTime.h>
31 #include <wtf/RefPtr.h>
32 #include "HTMLNames.h" 30 #include "HTMLNames.h"
33 #include "core/dom/Clipboard.h" 31 #include "core/dom/Clipboard.h"
34 #include "core/dom/ClipboardAccessPolicy.h" 32 #include "core/dom/ClipboardAccessPolicy.h"
35 #include "core/dom/Document.h" 33 #include "core/dom/Document.h"
36 #include "core/dom/DocumentFragment.h" 34 #include "core/dom/DocumentFragment.h"
37 #include "core/dom/Element.h" 35 #include "core/dom/Element.h"
38 #include "core/dom/ExceptionCodePlaceholder.h" 36 #include "core/dom/ExceptionCodePlaceholder.h"
39 #include "core/dom/Node.h" 37 #include "core/dom/Node.h"
40 #include "core/dom/Text.h" 38 #include "core/dom/Text.h"
41 #include "core/dom/TextEvent.h" 39 #include "core/dom/TextEvent.h"
(...skipping 14 matching lines...) Expand all
56 #include "core/page/DragActions.h" 54 #include "core/page/DragActions.h"
57 #include "core/page/DragClient.h" 55 #include "core/page/DragClient.h"
58 #include "core/page/DragSession.h" 56 #include "core/page/DragSession.h"
59 #include "core/page/DragState.h" 57 #include "core/page/DragState.h"
60 #include "core/page/EventHandler.h" 58 #include "core/page/EventHandler.h"
61 #include "core/page/Frame.h" 59 #include "core/page/Frame.h"
62 #include "core/page/FrameView.h" 60 #include "core/page/FrameView.h"
63 #include "core/page/Page.h" 61 #include "core/page/Page.h"
64 #include "core/page/Settings.h" 62 #include "core/page/Settings.h"
65 #include "core/platform/DragData.h" 63 #include "core/platform/DragData.h"
64 #include "core/platform/DragImage.h"
66 #include "core/platform/graphics/FloatRect.h" 65 #include "core/platform/graphics/FloatRect.h"
67 #include "core/platform/graphics/Image.h" 66 #include "core/platform/graphics/Image.h"
68 #include "core/platform/graphics/ImageOrientation.h" 67 #include "core/platform/graphics/ImageOrientation.h"
69 #include "core/platform/network/ResourceRequest.h" 68 #include "core/platform/network/ResourceRequest.h"
70 #include "core/rendering/HitTestRequest.h" 69 #include "core/rendering/HitTestRequest.h"
71 #include "core/rendering/HitTestResult.h" 70 #include "core/rendering/HitTestResult.h"
72 #include "core/rendering/RenderImage.h" 71 #include "core/rendering/RenderImage.h"
73 #include "core/rendering/RenderView.h" 72 #include "core/rendering/RenderView.h"
74 #include "weborigin/SecurityOrigin.h" 73 #include "weborigin/SecurityOrigin.h"
74 #include "wtf/CurrentTime.h"
75 #include "wtf/OwnPtr.h"
76 #include "wtf/PassOwnPtr.h"
77 #include "wtf/RefPtr.h"
75 78
76 #if OS(WINDOWS) 79 #if OS(WINDOWS)
77 #include <windows.h> 80 #include <windows.h>
78 #endif 81 #endif
79 82
80 namespace WebCore { 83 namespace WebCore {
81 84
82 const int DragController::LinkDragBorderInset = 2; 85 const int DragController::LinkDragBorderInset = 2;
83 const int DragController::MaxOriginalImageArea = 1500 * 1500; 86 const int DragController::MaxOriginalImageArea = 1500 * 1500;
84 const int DragController::DragIconRightInset = 7; 87 const int DragController::DragIconRightInset = 7;
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 // something that's not actually under the drag origin. 721 // something that's not actually under the drag origin.
719 return false; 722 return false;
720 KURL linkURL = hitTestResult.absoluteLinkURL(); 723 KURL linkURL = hitTestResult.absoluteLinkURL();
721 KURL imageURL = hitTestResult.absoluteImageURL(); 724 KURL imageURL = hitTestResult.absoluteImageURL();
722 725
723 IntPoint mouseDraggedPoint = src->view()->windowToContents(dragEvent.positio n()); 726 IntPoint mouseDraggedPoint = src->view()->windowToContents(dragEvent.positio n());
724 727
725 m_draggingImageURL = KURL(); 728 m_draggingImageURL = KURL();
726 m_sourceDragOperation = srcOp; 729 m_sourceDragOperation = srcOp;
727 730
728 DragImageRef dragImage = 0; 731 OwnPtr<DragImage> dragImage;
729 IntPoint dragLoc(0, 0); 732 IntPoint dragLoc(0, 0);
730 IntPoint dragImageOffset(0, 0); 733 IntPoint dragImageOffset(0, 0);
731 734
732 Clipboard* clipboard = state.m_dragClipboard.get(); 735 Clipboard* clipboard = state.m_dragClipboard.get();
733 if (state.m_dragType == DragSourceActionDHTML) 736 if (state.m_dragType == DragSourceActionDHTML)
734 dragImage = clipboard->createDragImage(dragImageOffset); 737 dragImage = clipboard->createDragImage(dragImageOffset);
735 if (state.m_dragType == DragSourceActionSelection || !imageURL.isEmpty() || !linkURL.isEmpty()) 738 if (state.m_dragType == DragSourceActionSelection || !imageURL.isEmpty() || !linkURL.isEmpty())
736 // Selection, image, and link drags receive a default set of allowed dra g operations that 739 // Selection, image, and link drags receive a default set of allowed dra g operations that
737 // follows from: 740 // follows from:
738 // http://trac.webkit.org/browser/trunk/WebKit/mac/WebView/WebHTMLView.m m?rev=48526#L3430 741 // http://trac.webkit.org/browser/trunk/WebKit/mac/WebView/WebHTMLView.m m?rev=48526#L3430
739 m_sourceDragOperation = static_cast<DragOperation>(m_sourceDragOperation | DragOperationGeneric | DragOperationCopy); 742 m_sourceDragOperation = static_cast<DragOperation>(m_sourceDragOperation | DragOperationGeneric | DragOperationCopy);
740 743
741 // We allow DHTML/JS to set the drag image, even if its a link, image or tex t we're dragging. 744 // We allow DHTML/JS to set the drag image, even if its a link, image or tex t we're dragging.
742 // This is in the spirit of the IE API, which allows overriding of pasteboar d data and DragOp. 745 // This is in the spirit of the IE API, which allows overriding of pasteboar d data and DragOp.
743 if (dragImage) { 746 if (dragImage) {
744 dragLoc = dragLocForDHTMLDrag(mouseDraggedPoint, dragOrigin, dragImageOf fset, !linkURL.isEmpty()); 747 dragLoc = dragLocForDHTMLDrag(mouseDraggedPoint, dragOrigin, dragImageOf fset, !linkURL.isEmpty());
745 m_dragOffset = dragImageOffset; 748 m_dragOffset = dragImageOffset;
746 } 749 }
747 750
748 bool startedDrag = true; // optimism - we almost always manage to start the drag 751 bool startedDrag = true; // optimism - we almost always manage to start the drag
749 752
750 Node* node = state.m_dragSrc.get(); 753 Node* node = state.m_dragSrc.get();
751 754
752 Image* image = node->isElementNode() ? getImage(toElement(node)) : 0; 755 Image* image = node->isElementNode() ? getImage(toElement(node)) : 0;
753 if (state.m_dragType == DragSourceActionSelection) { 756 if (state.m_dragType == DragSourceActionSelection) {
754 if (!clipboard->hasData()) { 757 if (!clipboard->hasData()) {
755 if (enclosingTextFormControl(src->selection()->start())) 758 if (enclosingTextFormControl(src->selection()->start())) {
756 clipboard->writePlainText(src->editor()->selectedTextForClipboar d()); 759 clipboard->writePlainText(src->editor()->selectedTextForClipboar d());
757 else { 760 } else {
758 RefPtr<Range> selectionRange = src->selection()->toNormalizedRan ge(); 761 RefPtr<Range> selectionRange = src->selection()->toNormalizedRan ge();
759 ASSERT(selectionRange); 762 ASSERT(selectionRange);
760 763
761 clipboard->writeRange(selectionRange.get(), src); 764 clipboard->writeRange(selectionRange.get(), src);
762 } 765 }
763 } 766 }
764 if (!dragImage) { 767 if (!dragImage) {
765 dragImage = createDragImageForSelection(src->dragImageForSelection() , DragImageAlpha); 768 dragImage = src->dragImageForSelection();
769 if (dragImage)
770 dragImage->dissolveToFraction(DragImageAlpha);
766 dragLoc = dragLocForSelectionDrag(src); 771 dragLoc = dragLocForSelectionDrag(src);
767 m_dragOffset = IntPoint(dragOrigin.x() - dragLoc.x(), dragOrigin.y() - dragLoc.y()); 772 m_dragOffset = IntPoint(dragOrigin.x() - dragLoc.x(), dragOrigin.y() - dragLoc.y());
768 } 773 }
769 doSystemDrag(dragImage, dragLoc, dragOrigin, clipboard, src, false); 774 doSystemDrag(dragImage.get(), dragLoc, dragOrigin, clipboard, src, false );
770 } else if (!imageURL.isEmpty() && node && node->isElementNode() && image && !image->isNull() 775 } else if (!imageURL.isEmpty() && node && node->isElementNode() && image && !image->isNull()
771 && (m_dragSourceAction & DragSourceActionImage)) { 776 && (m_dragSourceAction & DragSourceActionImage)) {
772 // We shouldn't be starting a drag for an image that can't provide an ex tension. 777 // We shouldn't be starting a drag for an image that can't provide an ex tension.
773 // This is an early detection for problems encountered later upon drop. 778 // This is an early detection for problems encountered later upon drop.
774 ASSERT(!image->filenameExtension().isEmpty()); 779 ASSERT(!image->filenameExtension().isEmpty());
775 Element* element = toElement(node); 780 Element* element = toElement(node);
776 if (!clipboard->hasData()) { 781 if (!clipboard->hasData()) {
777 m_draggingImageURL = imageURL; 782 m_draggingImageURL = imageURL;
778 prepareClipboardForImageDrag(src, clipboard, element, linkURL, image URL, hitTestResult.altDisplayString()); 783 prepareClipboardForImageDrag(src, clipboard, element, linkURL, image URL, hitTestResult.altDisplayString());
779 } 784 }
780 785
781 if (!dragImage) { 786 if (!dragImage) {
782 IntRect imageRect = hitTestResult.imageRect(); 787 IntRect imageRect = hitTestResult.imageRect();
783 imageRect.setLocation(m_page->mainFrame()->view()->rootViewToContent s(src->view()->contentsToRootView(imageRect.location()))); 788 imageRect.setLocation(m_page->mainFrame()->view()->rootViewToContent s(src->view()->contentsToRootView(imageRect.location())));
784 doImageDrag(element, dragOrigin, hitTestResult.imageRect(), clipboar d, src, m_dragOffset); 789 doImageDrag(element, dragOrigin, hitTestResult.imageRect(), clipboar d, src, m_dragOffset);
785 } else 790 } else {
786 // DHTML defined drag image 791 // DHTML defined drag image
787 doSystemDrag(dragImage, dragLoc, dragOrigin, clipboard, src, false); 792 doSystemDrag(dragImage.get(), dragLoc, dragOrigin, clipboard, src, f alse);
788 793 }
789 } else if (!linkURL.isEmpty() && (m_dragSourceAction & DragSourceActionLink) ) { 794 } else if (!linkURL.isEmpty() && (m_dragSourceAction & DragSourceActionLink) ) {
790 if (!clipboard->hasData()) 795 if (!clipboard->hasData())
791 // Simplify whitespace so the title put on the clipboard resembles w hat the user sees 796 // Simplify whitespace so the title put on the clipboard resembles w hat the user sees
792 // on the web page. This includes replacing newlines with spaces. 797 // on the web page. This includes replacing newlines with spaces.
793 clipboard->writeURL(linkURL, hitTestResult.textContent().simplifyWhi teSpace(), src); 798 clipboard->writeURL(linkURL, hitTestResult.textContent().simplifyWhi teSpace(), src);
794 799
795 if (src->selection()->isCaret() && src->selection()->isContentEditable() ) { 800 if (src->selection()->isCaret() && src->selection()->isContentEditable() ) {
796 // a user can initiate a drag on a link without having any text 801 // a user can initiate a drag on a link without having any text
797 // selected. In this case, we should expand the selection to 802 // selected. In this case, we should expand the selection to
798 // the enclosing anchor element 803 // the enclosing anchor element
799 Position pos = src->selection()->base(); 804 Position pos = src->selection()->base();
800 Node* node = enclosingAnchorElement(pos); 805 Node* node = enclosingAnchorElement(pos);
801 if (node) 806 if (node)
802 src->selection()->setSelection(VisibleSelection::selectionFromCo ntentsOfNode(node)); 807 src->selection()->setSelection(VisibleSelection::selectionFromCo ntentsOfNode(node));
803 } 808 }
804 809
805 if (!dragImage) { 810 if (!dragImage) {
806 FontRenderingMode renderingMode = src->settings() ? src->settings()- >fontRenderingMode() : NormalRenderingMode; 811 FontRenderingMode renderingMode = src->settings() ? src->settings()- >fontRenderingMode() : NormalRenderingMode;
807 float deviceScaleFactor = src->page() ? src->page()->deviceScaleFact or() : 1; 812 float deviceScaleFactor = src->page() ? src->page()->deviceScaleFact or() : 1;
808 dragImage = createDragImageForLink(linkURL, hitTestResult.textConten t(), renderingMode, deviceScaleFactor); 813 dragImage = DragImage::create(linkURL, hitTestResult.textContent(), renderingMode, deviceScaleFactor);
809 IntSize size = dragImageSize(dragImage); 814 IntSize size = dragImage ? dragImage->size() : IntSize();
810 m_dragOffset = IntPoint(-size.width() / 2, -LinkDragBorderInset); 815 m_dragOffset = IntPoint(-size.width() / 2, -LinkDragBorderInset);
811 dragLoc = IntPoint(mouseDraggedPoint.x() + m_dragOffset.x(), mouseDr aggedPoint.y() + m_dragOffset.y()); 816 dragLoc = IntPoint(mouseDraggedPoint.x() + m_dragOffset.x(), mouseDr aggedPoint.y() + m_dragOffset.y());
812 } 817 }
813 doSystemDrag(dragImage, dragLoc, mouseDraggedPoint, clipboard, src, true ); 818 doSystemDrag(dragImage.get(), dragLoc, mouseDraggedPoint, clipboard, src , true);
814 } else if (state.m_dragType == DragSourceActionDHTML) { 819 } else if (state.m_dragType == DragSourceActionDHTML) {
815 ASSERT(m_dragSourceAction & DragSourceActionDHTML); 820 ASSERT(m_dragSourceAction & DragSourceActionDHTML);
816 doSystemDrag(dragImage, dragLoc, dragOrigin, clipboard, src, false); 821 doSystemDrag(dragImage.get(), dragLoc, dragOrigin, clipboard, src, false );
817 } else { 822 } else {
818 // draggableNode() determined an image or link node was draggable, but i t turns out the 823 // draggableNode() determined an image or link node was draggable, but i t turns out the
819 // image or link had no URL, so there is nothing to drag. 824 // image or link had no URL, so there is nothing to drag.
820 startedDrag = false; 825 startedDrag = false;
821 } 826 }
822 827
823 if (dragImage)
824 deleteDragImage(dragImage);
825 return startedDrag; 828 return startedDrag;
826 } 829 }
827 830
828 void DragController::doImageDrag(Element* element, const IntPoint& dragOrigin, c onst IntRect& rect, Clipboard* clipboard, Frame* frame, IntPoint& dragImageOffse t) 831 void DragController::doImageDrag(Element* element, const IntPoint& dragOrigin, c onst IntRect& rect, Clipboard* clipboard, Frame* frame, IntPoint& dragImageOffse t)
829 { 832 {
830 IntPoint mouseDownPoint = dragOrigin; 833 IntPoint mouseDownPoint = dragOrigin;
831 DragImageRef dragImage; 834 OwnPtr<DragImage> dragImage;
832 IntPoint origin; 835 IntPoint origin;
833 836
834 Image* image = getImage(element); 837 Image* image = getImage(element);
835 if (image && image->size().height() * image->size().width() <= MaxOriginalIm ageArea 838 if (image && image->size().height() * image->size().width() <= MaxOriginalIm ageArea
836 && (dragImage = createDragImageFromImage(image, element->renderer() ? el ement->renderer()->shouldRespectImageOrientation() : DoNotRespectImageOrientatio n))) { 839 && (dragImage = DragImage::create(image, element->renderer() ? element-> renderer()->shouldRespectImageOrientation() : DoNotRespectImageOrientation))) {
837 IntSize originalSize = rect.size(); 840 IntSize originalSize = rect.size();
838 origin = rect.location(); 841 origin = rect.location();
839 842
840 dragImage = fitDragImageToMaxSize(dragImage, rect.size(), maxDragImageSi ze()); 843 dragImage->fitToMaxSize(rect.size(), maxDragImageSize());
841 dragImage = dissolveDragImageToFraction(dragImage, DragImageAlpha); 844 dragImage->dissolveToFraction(DragImageAlpha);
842 IntSize newSize = dragImageSize(dragImage); 845 IntSize newSize = dragImage->size();
843 846
844 // Properly orient the drag image and orient it differently if it's smal ler than the original 847 // Properly orient the drag image and orient it differently if it's smal ler than the original
845 float scale = newSize.width() / (float)originalSize.width(); 848 float scale = newSize.width() / (float)originalSize.width();
846 float dx = origin.x() - mouseDownPoint.x(); 849 float dx = origin.x() - mouseDownPoint.x();
847 dx *= scale; 850 dx *= scale;
848 origin.setX((int)(dx + 0.5)); 851 origin.setX((int)(dx + 0.5));
849 float dy = origin.y() - mouseDownPoint.y(); 852 float dy = origin.y() - mouseDownPoint.y();
850 dy *= scale; 853 dy *= scale;
851 origin.setY((int)(dy + 0.5)); 854 origin.setY((int)(dy + 0.5));
852 } else {
853 dragImage = createDragImageIconForCachedImage(getCachedImage(element));
854 if (dragImage)
855 origin = IntPoint(DragIconRightInset - dragImageSize(dragImage).widt h(), DragIconBottomInset);
856 } 855 }
857 856
858 dragImageOffset = mouseDownPoint + origin; 857 dragImageOffset = mouseDownPoint + origin;
859 doSystemDrag(dragImage, dragImageOffset, dragOrigin, clipboard, frame, false ); 858 doSystemDrag(dragImage.get(), dragImageOffset, dragOrigin, clipboard, frame, false);
860
861 deleteDragImage(dragImage);
862 } 859 }
863 860
864 void DragController::doSystemDrag(DragImageRef image, const IntPoint& dragLoc, c onst IntPoint& eventPos, Clipboard* clipboard, Frame* frame, bool forLink) 861 void DragController::doSystemDrag(DragImage* image, const IntPoint& dragLoc, con st IntPoint& eventPos, Clipboard* clipboard, Frame* frame, bool forLink)
865 { 862 {
866 m_didInitiateDrag = true; 863 m_didInitiateDrag = true;
867 m_dragInitiator = frame->document(); 864 m_dragInitiator = frame->document();
868 // Protect this frame and view, as a load may occur mid drag and attempt to unload this frame 865 // Protect this frame and view, as a load may occur mid drag and attempt to unload this frame
869 RefPtr<Frame> frameProtector = m_page->mainFrame(); 866 RefPtr<Frame> frameProtector = m_page->mainFrame();
870 RefPtr<FrameView> viewProtector = frameProtector->view(); 867 RefPtr<FrameView> viewProtector = frameProtector->view();
871 m_client->startDrag(image, viewProtector->rootViewToContents(frame->view()-> contentsToRootView(dragLoc)), 868 m_client->startDrag(image, viewProtector->rootViewToContents(frame->view()-> contentsToRootView(dragLoc)),
872 viewProtector->rootViewToContents(frame->view()->contentsToRootView(even tPos)), clipboard, frameProtector.get(), forLink); 869 viewProtector->rootViewToContents(frame->view()->contentsToRootView(even tPos)), clipboard, frameProtector.get(), forLink);
873 // DragClient::startDrag can cause our Page to dispear, deallocating |this|. 870 // DragClient::startDrag can cause our Page to dispear, deallocating |this|.
874 if (!frameProtector->page()) 871 if (!frameProtector->page())
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 #endif 919 #endif
923 return maxDragImageSize; 920 return maxDragImageSize;
924 } 921 }
925 922
926 void DragController::cleanupAfterSystemDrag() 923 void DragController::cleanupAfterSystemDrag()
927 { 924 {
928 } 925 }
929 926
930 } // namespace WebCore 927 } // namespace WebCore
931 928
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698