| 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()),
|
| -#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(
|
|
|