Commit 3281a54f authored by Darwin Huang's avatar Darwin Huang Committed by Commit Bot

DataTransfer: Replace ImageEncoder with gfx::PNGCodec.

Using ImageEncoder will allow for further customization of options.
Additionally, as mentioned in [1], we should delete the ui/gfx image encoder,
so moving from this encoder may streamline future deletion.

No intended functional change.

[1]: https://codereview.chromium.org/2891373002

Bug: 1004867
Change-Id: I97ec05b40996f4130dad834d79228dda91d4c14e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1827244Reviewed-by: default avatarVictor Costan <pwnall@chromium.org>
Commit-Queue: Darwin Huang <huangdarwin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700409}
parent 93908f35
...@@ -31,10 +31,6 @@ blink_core_sources("clipboard") { ...@@ -31,10 +31,6 @@ blink_core_sources("clipboard") {
if (is_win) { if (is_win) {
sources += [ "clipboard_utilities_win.cc" ] sources += [ "clipboard_utilities_win.cc" ]
} }
deps = [
"//ui/gfx/codec",
]
} }
blink_core_tests("unit_tests") { blink_core_tests("unit_tests") {
......
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
#include "third_party/blink/renderer/core/clipboard/clipboard_mime_types.h" #include "third_party/blink/renderer/core/clipboard/clipboard_mime_types.h"
#include "third_party/blink/renderer/core/clipboard/system_clipboard.h" #include "third_party/blink/renderer/core/clipboard/system_clipboard.h"
#include "third_party/blink/renderer/core/fileapi/blob.h" #include "third_party/blink/renderer/core/fileapi/blob.h"
#include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
#include "third_party/blink/renderer/platform/network/mime/mime_type_registry.h" #include "third_party/blink/renderer/platform/network/mime/mime_type_registry.h"
#include "ui/gfx/codec/png_codec.h"
namespace blink { namespace blink {
...@@ -135,18 +135,25 @@ File* DataObjectItem::GetAsFile() const { ...@@ -135,18 +135,25 @@ File* DataObjectItem::GetAsFile() const {
DCHECK_EQ(source_, kClipboardSource); DCHECK_EQ(source_, kClipboardSource);
if (GetType() == kMimeTypeImagePng) { if (GetType() == kMimeTypeImagePng) {
SkBitmap image = SystemClipboard::GetInstance().ReadImage( SkBitmap bitmap = SystemClipboard::GetInstance().ReadImage(
mojom::ClipboardBuffer::kStandard); mojom::ClipboardBuffer::kStandard);
std::vector<unsigned char> png_data;
if (gfx::PNGCodec::FastEncodeBGRASkBitmap(image, false, &png_data)) { SkPixmap pixmap;
auto data = std::make_unique<BlobData>(); bitmap.peekPixels(&pixmap);
data->SetContentType(kMimeTypeImagePng);
data->AppendBytes(png_data.data(), png_data.size()); Vector<uint8_t> png_data;
const uint64_t length = data->length(); SkPngEncoder::Options options;
auto blob = BlobDataHandle::Create(std::move(data), length); options.fZLibLevel = 1; // Fastest compression.
return File::Create("image.png", base::Time::Now().ToDoubleT() * 1000.0, if (!ImageEncoder::Encode(&png_data, pixmap, options))
std::move(blob)); return nullptr;
}
auto data = std::make_unique<BlobData>();
data->SetContentType(kMimeTypeImagePng);
data->AppendBytes(png_data.data(), png_data.size());
const uint64_t length = data->length();
auto blob = BlobDataHandle::Create(std::move(data), length);
return File::Create("image.png", base::Time::Now().ToDoubleT() * 1000.0,
std::move(blob));
} }
return nullptr; return nullptr;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment