Index: Source/core/editing/Editor.cpp |
diff --git a/Source/core/editing/Editor.cpp b/Source/core/editing/Editor.cpp |
index 46c228337d3a554e165cde4a54143eaba723b84d..2f1f978fc83c26205711186bd0344dc82c7e029a 100644 |
--- a/Source/core/editing/Editor.cpp |
+++ b/Source/core/editing/Editor.cpp |
@@ -69,6 +69,7 @@ |
#include "core/frame/LocalFrame.h" |
#include "core/frame/Settings.h" |
#include "core/frame/UseCounter.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(); |
yosin_UTC9
2014/06/20 04:24:10
It seems it is better to call |node->document().up
zino
2014/06/20 07:07:09
Done.
|
+ if (!renderer) |
return; |
- RenderImage* renderer = toRenderImage(node->renderer()); |
- ImageResource* cachedImage = renderer->cachedImage(); |
- if (!cachedImage || cachedImage->errorOccurred()) |
+ Image* image = 0; |
yosin_UTC9
2014/06/20 04:24:10
nit: How about having helper function to return |I
zino
2014/06/20 07:07:08
Done.
|
+ 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:,[canvas]"); |
yosin_UTC9
2014/06/20 04:24:10
Just curiosity, what "data:,[canvas]" is? Where do
zino
2014/06/20 07:07:09
I thought that the URL is not needed in the case o
|
KURL url = urlString.isEmpty() ? KURL() : node->document().completeURL(stripLeadingAndTrailingHTMLSpaces(urlString)); |
pasteboard->writeImage(image, url, title); |