Chromium Code Reviews| Index: content/test/mock_webclipboard_impl.cc |
| diff --git a/content/test/mock_webclipboard_impl.cc b/content/test/mock_webclipboard_impl.cc |
| index 02b5ba96336a655de8d1cf73ddebf8dc170ac267..f5ca0a9f1b4f8d1713f83d766fc943d6e63ef8ec 100644 |
| --- a/content/test/mock_webclipboard_impl.cc |
| +++ b/content/test/mock_webclipboard_impl.cc |
| @@ -8,13 +8,17 @@ |
| #include <algorithm> |
| +#include "base/guid.h" |
| #include "base/strings/string_util.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "build/build_config.h" |
| #include "content/renderer/clipboard_utils.h" |
| +#include "third_party/WebKit/public/platform/Platform.h" |
| +#include "third_party/WebKit/public/platform/WebBlobRegistry.h" |
| #include "third_party/WebKit/public/platform/WebCommon.h" |
| #include "third_party/WebKit/public/platform/WebDragData.h" |
| #include "third_party/WebKit/public/platform/WebImage.h" |
| +#include "third_party/WebKit/public/platform/WebThreadSafeData.h" |
| #include "third_party/WebKit/public/platform/WebURL.h" |
| #include "ui/base/clipboard/clipboard.h" |
| #include "ui/gfx/codec/png_codec.h" |
| @@ -94,28 +98,28 @@ blink::WebString MockWebClipboardImpl::readHTML( |
| return m_htmlText; |
| } |
| -blink::WebData MockWebClipboardImpl::readImage( |
| +blink::WebBlobInfo MockWebClipboardImpl::readImage( |
| blink::WebClipboard::Buffer buffer) { |
| - std::string data; |
| - std::vector<unsigned char> encoded_image; |
| - // TODO(dcheng): Verify that we can assume the image is ARGB8888. Note that |
| - // for endianess reasons, it will be BGRA8888 on Windows. |
| + std::vector<unsigned char> output; |
| const SkBitmap& bitmap = m_image.getSkBitmap(); |
| - SkAutoLockPixels lock(bitmap); |
| - gfx::PNGCodec::Encode(static_cast<unsigned char*>(bitmap.getPixels()), |
|
dcheng
2016/04/11 03:22:54
I don't really remember why I made it so complicat
|
| -#if defined(OS_ANDROID) |
| - gfx::PNGCodec::FORMAT_RGBA, |
| -#else |
| - gfx::PNGCodec::FORMAT_BGRA, |
| -#endif |
| - gfx::Size(bitmap.width(), bitmap.height()), |
| - static_cast<int>(bitmap.rowBytes()), |
| - false /* discard_transparency */, |
| - std::vector<gfx::PNGCodec::Comment>(), |
| - &encoded_image); |
| - data.assign(reinterpret_cast<char*>(encoded_image.data()), |
| - encoded_image.size()); |
| - return data; |
| + if (!gfx::PNGCodec::FastEncodeBGRASkBitmap( |
| + bitmap, false /* discard_transparency */, &output)) { |
| + return blink::WebBlobInfo(); |
| + } |
| + const WebString& uuid = base::ASCIIToUTF16(base::GenerateGUID()); |
| + std::unique_ptr<blink::WebBlobRegistry::Builder> blob_builder( |
| + blink::Platform::current()->blobRegistry()->createBuilder( |
| + uuid, blink::WebString())); |
| + blob_builder->appendData(blink::WebThreadSafeData( |
| + reinterpret_cast<char*>(output.data()), output.size())); |
| + blob_builder->build(); |
| + return blink::WebBlobInfo( |
| + uuid, base::ASCIIToUTF16(ui::Clipboard::kMimeTypePNG), output.size()); |
| +} |
| + |
| +blink::WebImage MockWebClipboardImpl::readRawImage( |
| + blink::WebClipboard::Buffer buffer) { |
| + return m_image; |
| } |
| blink::WebString MockWebClipboardImpl::readCustomData( |