Diff
Modified: trunk/Source/WebCore/ChangeLog (147911 => 147912)
--- trunk/Source/WebCore/ChangeLog 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/ChangeLog 2013-04-08 13:35:18 UTC (rev 147912)
@@ -1,3 +1,54 @@
+2013-04-08 Carlos Garcia Campos <[email protected]>
+
+ DragImage should not depend on Frame and CachedImage
+ https://bugs.webkit.org/show_bug.cgi?id=21357
+
+ Reviewed by Sam Weinig.
+
+ Remove Frame and CachedImage dependencies from DragImage.
+
+ * dom/Clipboard.h:
+ (WebCore): Add forward delcaration for CacheImage since it's not
+ included anymore in DragImage.h.
+ * page/DragController.cpp:
+ (WebCore::DragController::startDrag): Use
+ Frame::dragImageForSelection() and call
+ dissolveDragImageToFraction() for the returned DragImage. Pass the
+ font rendering mode to createDragImageForLink, instead of a Frame
+ that is only used to get the font rendering mode.
+ (WebCore::DragController::doImageDrag): Get the suggested filename
+ for the cached image and pass it to
+ createDragImageIconForCachedImageFilename().
+ * platform/DragImage.cpp:
+ (WebCore::createDragImageForLink): Receive a FontRenderingMode
+ instead of a Frame.
+ * platform/DragImage.h:
+ (WebCore): Remove createDragImageForSelection, change
+ createDragImageForLink to receive a FontRenderingMode instead of a
+ frame, and rename createDragImageIconForCachedImage as
+ createDragImageIconForCachedImageFilename since it nows received
+ the suggested filename of the cached image.
+ * platform/blackberry/DragImageBlackBerry.cpp:
+ (WebCore::createDragImageIconForCachedImageFilename): Adapt to API
+ changes.
+ * platform/efl/DragImageEfl.cpp:
+ (WebCore::createDragImageIconForCachedImageFilename): Ditto.
+ * platform/gtk/DragImageGtk.cpp:
+ (WebCore::createDragImageIconForCachedImageFilename): Ditto.
+ * platform/mac/DragImageMac.mm:
+ (WebCore::dissolveDragImageToFraction): Return early if the passed
+ image is NULL.
+ (WebCore::createDragImageIconForCachedImageFilename): Adapt to API
+ changes.
+ (WebCore::createDragImageForLink): Ditto.
+ * platform/qt/DragImageQt.cpp:
+ (WebCore::createDragImageIconForCachedImageFilename): Ditto.
+ * platform/win/DragImageWin.cpp:
+ (WebCore::createDragImageIconForCachedImageFilename): Ditto.
+ (WebCore::createDragImageForLink): Ditto.
+ * platform/wx/DragImageWx.cpp:
+ (WebCore::createDragImageIconForCachedImageFilename): Ditto.
+
2013-04-08 Raphael Kubo da Costa <[email protected]>
[EFL] REGRESSION(r147743): Use the correct `operator new' override in RenderThemeEfl.
Modified: trunk/Source/WebCore/dom/Clipboard.h (147911 => 147912)
--- trunk/Source/WebCore/dom/Clipboard.h 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/dom/Clipboard.h 2013-04-08 13:35:18 UTC (rev 147912)
@@ -33,6 +33,7 @@
namespace WebCore {
+ class CachedImage;
class DataTransferItemList;
class DragData;
class FileList;
Modified: trunk/Source/WebCore/page/DragController.cpp (147911 => 147912)
--- trunk/Source/WebCore/page/DragController.cpp 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/page/DragController.cpp 2013-04-08 13:35:18 UTC (rev 147912)
@@ -799,7 +799,7 @@
}
m_client->willPerformDragSourceAction(DragSourceActionSelection, dragOrigin, clipboard);
if (!dragImage) {
- dragImage = createDragImageForSelection(src);
+ dragImage = dissolveDragImageToFraction(src->dragImageForSelection(), DragImageAlpha);
dragLoc = dragLocForSelectionDrag(src);
m_dragOffset = IntPoint(dragOrigin.x() - dragLoc.x(), dragOrigin.y() - dragLoc.y());
}
@@ -843,7 +843,7 @@
m_client->willPerformDragSourceAction(DragSourceActionLink, dragOrigin, clipboard);
if (!dragImage) {
- dragImage = createDragImageForLink(linkURL, hitTestResult.textContent(), src);
+ dragImage = createDragImageForLink(linkURL, hitTestResult.textContent(), src->settings() ? src->settings()->fontRenderingMode() : NormalRenderingMode);
IntSize size = dragImageSize(dragImage);
m_dragOffset = IntPoint(-size.width() / 2, -LinkDragBorderInset);
dragLoc = IntPoint(mouseDraggedPoint.x() + m_dragOffset.x(), mouseDraggedPoint.y() + m_dragOffset.y());
@@ -893,9 +893,11 @@
dy *= scale;
origin.setY((int)(dy + 0.5));
} else {
- dragImage = createDragImageIconForCachedImage(getCachedImage(element));
- if (dragImage)
- origin = IntPoint(DragIconRightInset - dragImageSize(dragImage).width(), DragIconBottomInset);
+ if (CachedImage* cachedImage = getCachedImage(element)) {
+ dragImage = createDragImageIconForCachedImageFilename(cachedImage->response().suggestedFilename());
+ if (dragImage)
+ origin = IntPoint(DragIconRightInset - dragImageSize(dragImage).width(), DragIconBottomInset);
+ }
}
dragImageOffset = mouseDownPoint + origin;
Modified: trunk/Source/WebCore/platform/DragImage.cpp (147911 => 147912)
--- trunk/Source/WebCore/platform/DragImage.cpp 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/DragImage.cpp 2013-04-08 13:35:18 UTC (rev 147912)
@@ -29,7 +29,7 @@
#if ENABLE(DRAG_SUPPORT)
#include "DragController.h"
-#include "Frame.h"
+#include "FontRenderingMode.h"
namespace WebCore {
@@ -64,17 +64,9 @@
return scaleDragImage(image, FloatSize(scalex, scaley));
}
-
-DragImageRef createDragImageForSelection(Frame* frame)
-{
- DragImageRef image = frame->dragImageForSelection();
- if (image)
- image = dissolveDragImageToFraction(image, DragController::DragImageAlpha);
- return image;
-}
#if !PLATFORM(MAC) && (!PLATFORM(WIN) || OS(WINCE))
-DragImageRef createDragImageForLink(KURL&, const String&, Frame*)
+DragImageRef createDragImageForLink(KURL&, const String&, FontRenderingMode)
{
return 0;
}
Modified: trunk/Source/WebCore/platform/DragImage.h (147911 => 147912)
--- trunk/Source/WebCore/platform/DragImage.h 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/DragImage.h 2013-04-08 13:35:18 UTC (rev 147912)
@@ -26,6 +26,7 @@
#ifndef DragImage_h
#define DragImage_h
+#include "FontRenderingMode.h"
#include "ImageOrientation.h"
#include "IntSize.h"
#include "FloatSize.h"
@@ -50,9 +51,7 @@
#define DragLabelBorderYOffset 2
namespace WebCore {
-
- class CachedImage;
- class Frame;
+
class Image;
class KURL;
class Range;
@@ -81,9 +80,8 @@
DragImageRef dissolveDragImageToFraction(DragImageRef image, float delta);
DragImageRef createDragImageFromImage(Image*, RespectImageOrientationEnum = DoNotRespectImageOrientation);
- DragImageRef createDragImageForSelection(Frame*);
- DragImageRef createDragImageIconForCachedImage(CachedImage*);
- DragImageRef createDragImageForLink(KURL&, const String& label, Frame*);
+ DragImageRef createDragImageIconForCachedImageFilename(const String&);
+ DragImageRef createDragImageForLink(KURL&, const String& label, FontRenderingMode);
void deleteDragImage(DragImageRef);
}
Modified: trunk/Source/WebCore/platform/blackberry/DragImageBlackBerry.cpp (147911 => 147912)
--- trunk/Source/WebCore/platform/blackberry/DragImageBlackBerry.cpp 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/blackberry/DragImageBlackBerry.cpp 2013-04-08 13:35:18 UTC (rev 147912)
@@ -19,7 +19,6 @@
#include "config.h"
#include "DragImage.h"
-#include "CachedImage.h"
#include "FloatSize.h"
#include "Image.h"
#include "NotImplemented.h"
@@ -32,7 +31,7 @@
return 0;
}
-void* createDragImageIconForCachedImage(CachedImage*)
+void* createDragImageIconForCachedImageFilename(const String&)
{
notImplemented();
return 0;
Modified: trunk/Source/WebCore/platform/efl/DragImageEfl.cpp (147911 => 147912)
--- trunk/Source/WebCore/platform/efl/DragImageEfl.cpp 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/efl/DragImageEfl.cpp 2013-04-08 13:35:18 UTC (rev 147912)
@@ -21,7 +21,6 @@
#include "config.h"
#include "DragImage.h"
-#include "CachedImage.h"
#include "Image.h"
#include "NotImplemented.h"
@@ -56,7 +55,7 @@
return 0;
}
-DragImageRef createDragImageIconForCachedImage(CachedImage*)
+DragImageRef createDragImageIconForCachedImageFilename(const String&)
{
notImplemented();
return 0;
Modified: trunk/Source/WebCore/platform/gtk/DragImageGtk.cpp (147911 => 147912)
--- trunk/Source/WebCore/platform/gtk/DragImageGtk.cpp 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/gtk/DragImageGtk.cpp 2013-04-08 13:35:18 UTC (rev 147912)
@@ -19,7 +19,6 @@
#include "config.h"
#include "DragImage.h"
-#include "CachedImage.h"
#include "Image.h"
#include "RefPtrCairo.h"
#include <cairo.h>
@@ -82,7 +81,7 @@
return image->nativeImageForCurrentFrame().leakRef();
}
-DragImageRef createDragImageIconForCachedImage(CachedImage*)
+DragImageRef createDragImageIconForCachedImageFilename(const String&)
{
return 0;
}
Modified: trunk/Source/WebCore/platform/mac/DragImageMac.mm (147911 => 147912)
--- trunk/Source/WebCore/platform/mac/DragImageMac.mm 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/mac/DragImageMac.mm 2013-04-08 13:35:18 UTC (rev 147912)
@@ -28,7 +28,6 @@
#if ENABLE(DRAG_SUPPORT)
#import "BitmapImage.h"
-#import "CachedImage.h"
#import "Font.h"
#import "FontCache.h"
#import "FontDescription.h"
@@ -37,7 +36,6 @@
#import "Image.h"
#import "KURL.h"
#import "ResourceResponse.h"
-#import "Settings.h"
#import "StringTruncator.h"
#import "TextRun.h"
@@ -67,6 +65,9 @@
RetainPtr<NSImage> dissolveDragImageToFraction(RetainPtr<NSImage> image, float delta)
{
+ if (!image)
+ return nil;
+
RetainPtr<NSImage> dissolvedImage(AdoptNS, [[NSImage alloc] initWithSize:[image.get() size]]);
[dissolvedImage.get() lockFocus];
@@ -123,9 +124,8 @@
return dragImage;
}
-RetainPtr<NSImage> createDragImageIconForCachedImage(CachedImage* image)
+RetainPtr<NSImage> createDragImageIconForCachedImageFilename(const String& filename)
{
- const String& filename = image->response().suggestedFilename();
NSString *extension = nil;
size_t dotIndex = filename.reverseFind('.');
@@ -267,10 +267,8 @@
drawAtPoint(string, textPoint, font, topColor);
}
-DragImageRef createDragImageForLink(KURL& url, const String& title, Frame* frame)
+DragImageRef createDragImageForLink(KURL& url, const String& title, FontRenderingMode)
{
- if (!frame)
- return nil;
NSString *label = nsStringNilIfEmpty(title);
NSURL *cocoaURL = url;
NSString *urlString = [cocoaURL absoluteString];
Modified: trunk/Source/WebCore/platform/qt/DragImageQt.cpp (147911 => 147912)
--- trunk/Source/WebCore/platform/qt/DragImageQt.cpp 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/qt/DragImageQt.cpp 2013-04-08 13:35:18 UTC (rev 147912)
@@ -26,7 +26,6 @@
#include "config.h"
#include "DragImage.h"
-#include "CachedImage.h"
#include "Image.h"
namespace WebCore {
@@ -69,7 +68,7 @@
return new QPixmap(*image->nativeImageForCurrentFrame());
}
-DragImageRef createDragImageIconForCachedImage(CachedImage*)
+DragImageRef createDragImageIconForCachedImageFilename(const String&)
{
return 0;
}
Modified: trunk/Source/WebCore/platform/win/DragImageWin.cpp (147911 => 147912)
--- trunk/Source/WebCore/platform/win/DragImageWin.cpp 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/win/DragImageWin.cpp 2013-04-08 13:35:18 UTC (rev 147912)
@@ -26,16 +26,13 @@
#include "config.h"
#include "DragImage.h"
-#include "CachedImage.h"
#include "Font.h"
#include "FontCache.h"
#include "FontDescription.h"
#include "FontSelector.h"
-#include "Frame.h"
#include "GraphicsContext.h"
#include "HWndDC.h"
#include "Image.h"
-#include "Settings.h"
#include "StringTruncator.h"
#include "TextRun.h"
#include "WebCoreTextRenderer.h"
@@ -69,13 +66,8 @@
return image;
}
-DragImageRef createDragImageIconForCachedImage(CachedImage* image)
+DragImageRef createDragImageIconForCachedImageFilename(const String& filename)
{
- if (!image)
- return 0;
-
- String filename = image->response().suggestedFilename();
-
SHFILEINFO shfi = {0};
if (FAILED(SHGetFileInfo(static_cast<LPCWSTR>(filename.charactersWithNullTermination()), FILE_ATTRIBUTE_NORMAL,
&shfi, sizeof(shfi), SHGFI_ICON | SHGFI_USEFILEATTRIBUTES)))
@@ -129,7 +121,7 @@
return result;
}
-DragImageRef createDragImageForLink(KURL& url, const String& inLabel, Frame* frame)
+DragImageRef createDragImageForLink(KURL& url, const String& inLabel, FontRenderingMode fontRenderingMode)
{
// This is more or less an exact match for the Mac OS X code.
@@ -137,7 +129,7 @@
const Font* urlFont;
FontCachePurgePreventer fontCachePurgePreventer;
- if (frame->settings() && frame->settings()->fontRenderingMode() == AlternateRenderingMode) {
+ if (fontRenderingMode == AlternateRenderingMode) {
static const Font alternateRenderingModeLabelFont = dragLabelFont(DragLinkLabelFontsize, true, AlternateRenderingMode);
static const Font alternateRenderingModeURLFont = dragLabelFont(DragLinkUrlFontSize, false, AlternateRenderingMode);
labelFont = &alternateRenderingModeLabelFont;
Modified: trunk/Source/WebCore/platform/wx/DragImageWx.cpp (147911 => 147912)
--- trunk/Source/WebCore/platform/wx/DragImageWx.cpp 2013-04-08 13:11:06 UTC (rev 147911)
+++ trunk/Source/WebCore/platform/wx/DragImageWx.cpp 2013-04-08 13:35:18 UTC (rev 147912)
@@ -25,7 +25,7 @@
#include "config.h"
#include "DragImage.h"
-#include "CachedImage.h"
+
#include "FloatSize.h"
#include "Image.h"
@@ -55,7 +55,7 @@
return 0;
}
-DragImageRef createDragImageIconForCachedImage(CachedImage*)
+DragImageRef createDragImageIconForCachedImageFilename(const String&)
{
return 0;
}