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