Index: Source/core/editing/Editor.cpp |
diff --git a/Source/core/editing/Editor.cpp b/Source/core/editing/Editor.cpp |
index a91f9e264bb4617b32adb3b991b1cf02e02eb208..ae29f6e56d910bdbf2bd2bc50de903e15d535369 100644 |
--- a/Source/core/editing/Editor.cpp |
+++ b/Source/core/editing/Editor.cpp |
@@ -68,6 +68,7 @@ |
#include "core/frame/FrameView.h" |
#include "core/frame/LocalFrame.h" |
#include "core/frame/Settings.h" |
+#include "core/html/HTMLCanvasElement.h" |
#include "core/html/HTMLImageElement.h" |
#include "core/html/HTMLInputElement.h" |
#include "core/html/HTMLTextAreaElement.h" |
@@ -426,14 +427,22 @@ static void writeImageNodeToPasteboard(Pasteboard* pasteboard, Node* node, const |
ASSERT(pasteboard); |
ASSERT(node); |
- if (!(node->renderer() && node->renderer()->isImage())) |
+ RenderObject* renderer = node->renderer(); |
+ if (!renderer) |
return; |
- RenderImage* renderer = toRenderImage(node->renderer()); |
- ImageResource* cachedImage = renderer->cachedImage(); |
- if (!cachedImage || cachedImage->errorOccurred()) |
+ Image* image = 0; |
+ if (renderer->isImage()) { |
+ RenderImage* renderImage = toRenderImage(renderer); |
+ ImageResource* cachedImage = renderImage->cachedImage(); |
+ if (!cachedImage || cachedImage->errorOccurred()) |
+ return; |
+ image = cachedImage->imageForRenderer(renderImage); |
+ } else if (renderer->isCanvas()) { |
+ image = toHTMLCanvasElement(node)->copiedImage(); |
+ } else { |
return; |
- Image* image = cachedImage->imageForRenderer(renderer); |
+ } |
ASSERT(image); |
// FIXME: This should probably be reconciled with HitTestResult::absoluteImageURL. |
@@ -444,6 +453,8 @@ static void writeImageNodeToPasteboard(Pasteboard* pasteboard, Node* node, const |
urlString = toElement(node)->getAttribute(XLinkNames::hrefAttr); |
else if (isHTMLEmbedElement(*node) || isHTMLObjectElement(*node)) |
urlString = toElement(node)->imageSourceURL(); |
+ else if (isHTMLCanvasElement(*node)) |
+ urlString = AtomicString("data:image/png"); |
Justin Novosad
2014/05/09 19:56:38
This URL does not seem useful. Why not leave urlSt
|
KURL url = urlString.isEmpty() ? KURL() : node->document().completeURL(stripLeadingAndTrailingHTMLSpaces(urlString)); |
pasteboard->writeImage(image, url, title); |