Chromium Code Reviews| Index: ui/base/clipboard/scoped_clipboard_writer.cc |
| diff --git a/ui/base/clipboard/scoped_clipboard_writer.cc b/ui/base/clipboard/scoped_clipboard_writer.cc |
| index 50a7ba39fec8544eec497a55c851387c578a3909..d1dc1b24645c136b921a83199def4569d63deba8 100644 |
| --- a/ui/base/clipboard/scoped_clipboard_writer.cc |
| +++ b/ui/base/clipboard/scoped_clipboard_writer.cc |
| @@ -86,6 +86,23 @@ void ScopedClipboardWriter::WriteWebSmartPaste() { |
| objects_[Clipboard::CBF_WEBKIT] = Clipboard::ObjectMapParams(); |
| } |
| +void ScopedClipboardWriter::WriteImage(const SkBitmap& bitmap) { |
| + if (bitmap.drawsNothing()) { |
| + NOTREACHED(); |
| + return; |
| + } |
| + bitmap_ = bitmap; |
| + // TODO(dcheng): This is slightly less horrible than what we used to do, but |
| + // only very slightly less. |
| + SkBitmap* bitmap_pointer = &bitmap_; |
| + Clipboard::ObjectMapParam packed_pointer; |
|
jamesr
2014/09/22 22:38:41
can you use bit_cast<Clipboard::ObjectMapParam>(&b
dcheng
2014/09/22 23:06:25
I don't think I can use bit_cast directly here, be
|
| + for (size_t i = 0; i < sizeof(bitmap_pointer); ++i) |
|
jamesr
2014/09/22 22:38:41
oh god
dcheng
2014/09/22 23:06:25
Yeah... I think that is the only appropriate respo
|
| + packed_pointer.push_back(reinterpret_cast<uint8_t*>(&bitmap_pointer)[i]); |
| + Clipboard::ObjectMapParams parameters; |
| + parameters.push_back(packed_pointer); |
| + objects_[Clipboard::CBF_SMBITMAP] = parameters; |
| +} |
| + |
| void ScopedClipboardWriter::WritePickledData( |
| const Pickle& pickle, const Clipboard::FormatType& format) { |
| std::string format_string = format.Serialize(); |
| @@ -106,6 +123,7 @@ void ScopedClipboardWriter::WritePickledData( |
| void ScopedClipboardWriter::Reset() { |
| url_text_.clear(); |
| objects_.clear(); |
| + bitmap_.reset(); |
| } |
| void ScopedClipboardWriter::WriteTextOrURL(const base::string16& text, |