From 691dce7bf41c6fbc8ce3bf9fc3fb4ec0ef0cca21 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Thu, 20 Sep 2018 17:46:32 -0700 Subject: scoped_clipboard_writer.patch diff --git a/ui/base/clipboard/scoped_clipboard_writer.cc b/ui/base/clipboard/scoped_clipboard_writer.cc index 12680a66d17c..6b95e46e3558 100644 --- a/ui/base/clipboard/scoped_clipboard_writer.cc +++ b/ui/base/clipboard/scoped_clipboard_writer.cc @@ -103,17 +103,16 @@ void ScopedClipboardWriter::WriteImage(const SkBitmap& bitmap) { objects_[Clipboard::CBF_SMBITMAP] = parameters; } -void ScopedClipboardWriter::WritePickledData( - const base::Pickle& pickle, - const Clipboard::FormatType& format) { +void ScopedClipboardWriter::WriteData(const char* data, + int size, + const Clipboard::FormatType& format) { std::string format_string = format.Serialize(); Clipboard::ObjectMapParam format_parameter(format_string.begin(), format_string.end()); Clipboard::ObjectMapParam data_parameter; - data_parameter.resize(pickle.size()); - memcpy(const_cast(&data_parameter.front()), - pickle.data(), pickle.size()); + data_parameter.resize(size); + memcpy(const_cast(&data_parameter.front()), data, size); Clipboard::ObjectMapParams parameters; parameters.push_back(format_parameter); @@ -131,6 +130,13 @@ void ScopedClipboardWriter::WriteData(const std::string& type, objects_[Clipboard::CBF_DATA] = parameters; } +void ScopedClipboardWriter::WritePickledData( + const base::Pickle& pickle, + const Clipboard::FormatType& format) { + WriteData(reinterpret_cast(pickle.data()), pickle.size(), + format); +} + void ScopedClipboardWriter::Reset() { objects_.clear(); bitmap_.reset(); diff --git a/ui/base/clipboard/scoped_clipboard_writer.h b/ui/base/clipboard/scoped_clipboard_writer.h index 385900eb67de..cf1f803ec123 100644 --- a/ui/base/clipboard/scoped_clipboard_writer.h +++ b/ui/base/clipboard/scoped_clipboard_writer.h @@ -57,6 +57,11 @@ class UI_BASE_EXPORT ScopedClipboardWriter { // Used by WebKit to determine whether WebKit wrote the clipboard last void WriteWebSmartPaste(); + // Adds arbitrary data to clipboard. + void WriteData(const char* data, + int size, + const Clipboard::FormatType& format); + // Adds arbitrary pickled data to clipboard. void WritePickledData(const base::Pickle& pickle, const Clipboard::FormatType& format); -- 2.17.0