summaryrefslogtreecommitdiffstats
path: root/webkit/glue/webclipboard_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/glue/webclipboard_impl.cc')
-rw-r--r--webkit/glue/webclipboard_impl.cc17
1 files changed, 14 insertions, 3 deletions
diff --git a/webkit/glue/webclipboard_impl.cc b/webkit/glue/webclipboard_impl.cc
index dd96dca..e2be557 100644
--- a/webkit/glue/webclipboard_impl.cc
+++ b/webkit/glue/webclipboard_impl.cc
@@ -9,12 +9,18 @@
#include "base/string_util.h"
#include "googleurl/src/gurl.h"
#include "net/base/escape.h"
+#include "third_party/skia/include/core/SkBitmap.h"
#include "webkit/api/public/WebImage.h"
+#include "webkit/api/public/WebSize.h"
#include "webkit/api/public/WebString.h"
#include "webkit/api/public/WebURL.h"
#include "webkit/glue/scoped_clipboard_writer_glue.h"
#include "webkit/glue/webkit_glue.h"
+#if WEBKIT_USING_CG
+#include "skia/ext/skia_utils_mac.h"
+#endif
+
using WebKit::WebClipboard;
using WebKit::WebImage;
using WebKit::WebString;
@@ -121,10 +127,15 @@ void WebClipboardImpl::writeImage(
const WebImage& image, const WebURL& url, const WebString& title) {
ScopedClipboardWriterGlue scw(ClipboardGetClipboard());
-#if defined(OS_WIN) || defined(OS_LINUX)
- if (!image.isNull())
- scw.WriteBitmapFromPixels(image.pixels(), image.size());
+ if (!image.isNull()) {
+#if WEBKIT_USING_SKIA
+ const SkBitmap& bitmap = image.getSkBitmap();
+#elif WEBKIT_USING_CG
+ const SkBitmap& bitmap = gfx::CGImageToSkBitmap(image.getCGImageRef());
#endif
+ SkAutoLockPixels locked(bitmap);
+ scw.WriteBitmapFromPixels(bitmap.getPixels(), image.size());
+ }
if (!url.isEmpty()) {
scw.WriteBookmark(title, url.spec());