From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Henri Torgemane Date: Thu, 23 Sep 2021 21:30:33 -0500 Subject: add ui::ScopedCliboardWriter::WriteUnsafeRawData This restores some ability to write to the clipboard using raw formats, which was removed as part of the Raw Clipboard API scrubbing. https://bugs.chromium.org/p/chromium/issues/detail?id=1217643 diff --git a/ui/base/clipboard/scoped_clipboard_writer.cc b/ui/base/clipboard/scoped_clipboard_writer.cc index 6022a0af4241fe65bd03d7cbf95785e8879dc78e..ec9e4c6ece9014b66e7d65e99cda2b956a9a5d80 100644 --- a/ui/base/clipboard/scoped_clipboard_writer.cc +++ b/ui/base/clipboard/scoped_clipboard_writer.cc @@ -229,6 +229,16 @@ void ScopedClipboardWriter::WriteEncodedDataTransferEndpointForTesting( } #endif // BUILDFLAG(IS_CHROMEOS_ASH) +void ScopedClipboardWriter::WriteUnsafeRawData(const std::u16string& format, + mojo_base::BigBuffer data) { + static constexpr int kMaxRegisteredFormats = 100; + if (counter_ >= kMaxRegisteredFormats) + return; + counter_++; + platform_representations_.push_back( + {base::UTF16ToUTF8(format), std::move(data)}); +} + void ScopedClipboardWriter::Reset() { objects_.clear(); platform_representations_.clear(); diff --git a/ui/base/clipboard/scoped_clipboard_writer.h b/ui/base/clipboard/scoped_clipboard_writer.h index 96ba9abb9b7efab79adbf299c6bd3b4f7a4501e1..0916b81ec5b3cb123185b7cff332120ee498fb57 100644 --- a/ui/base/clipboard/scoped_clipboard_writer.h +++ b/ui/base/clipboard/scoped_clipboard_writer.h @@ -89,6 +89,10 @@ class COMPONENT_EXPORT(UI_BASE_CLIPBOARD) ScopedClipboardWriter { // This is only used to write custom format data. void WriteData(const std::u16string& format, mojo_base::BigBuffer data); + // write raw (non-pickled) data to the clipboard + void WriteUnsafeRawData(const std::u16string& format, + mojo_base::BigBuffer data); + void WriteImage(const SkBitmap& bitmap); #if BUILDFLAG(IS_CHROMEOS_LACROS)