Chromium Code Reviews| 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); |