diff options
Diffstat (limited to 'chromium/content/browser/renderer_host/clipboard_host_impl.h')
-rw-r--r-- | chromium/content/browser/renderer_host/clipboard_host_impl.h | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/chromium/content/browser/renderer_host/clipboard_host_impl.h b/chromium/content/browser/renderer_host/clipboard_host_impl.h index 05cbbbaaedf..8778ab78d93 100644 --- a/chromium/content/browser/renderer_host/clipboard_host_impl.h +++ b/chromium/content/browser/renderer_host/clipboard_host_impl.h @@ -17,6 +17,7 @@ #include "build/build_config.h" #include "content/browser/renderer_host/render_frame_host_impl.h" #include "content/common/content_export.h" +#include "content/public/browser/document_service_base.h" #include "mojo/public/cpp/base/big_buffer.h" #include "mojo/public/cpp/bindings/receiver.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -33,7 +34,8 @@ namespace content { class ClipboardHostImplTest; -class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { +class CONTENT_EXPORT ClipboardHostImpl + : public DocumentServiceBase<blink::mojom::ClipboardHost> { public: ~ClipboardHostImpl() override; @@ -93,7 +95,9 @@ class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { // A paste allowed request is obsolete if it is older than this time. static const base::TimeDelta kIsPasteContentAllowedRequestTooOld; - explicit ClipboardHostImpl(RenderFrameHost* render_frame_host); + explicit ClipboardHostImpl( + RenderFrameHost* render_frame_host, + mojo::PendingReceiver<blink::mojom::ClipboardHost> receiver); // Performs a check to see if pasting `data` is allowed by data transfer // policies and invokes PasteIfPolicyAllowedCallback upon completion. @@ -109,7 +113,7 @@ class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { // already been checked. |data| and |seqno| should corresponds to the same // clipboard data. void PerformPasteIfContentAllowed( - uint64_t seqno, + const ui::ClipboardSequenceNumberToken& seqno, const ui::ClipboardFormatType& data_type, std::string data, IsClipboardPasteContentAllowedCallback callback); @@ -123,10 +127,12 @@ class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { // Completion callback of PerformPasteIfContentAllowed(). Sets the allowed // status for the clipboard data corresponding to sequence number |seqno|. - void FinishPasteIfContentAllowed(uint64_t seqno, - ClipboardPasteContentAllowed allowed); + void FinishPasteIfContentAllowed( + const ui::ClipboardSequenceNumberToken& seqno, + ClipboardPasteContentAllowed allowed); - const std::map<uint64_t, IsPasteContentAllowedRequest>& + const std::map<ui::ClipboardSequenceNumberToken, + IsPasteContentAllowedRequest>& is_paste_allowed_requests_for_testing() { return is_allowed_requests_; } @@ -145,9 +151,6 @@ class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { FRIEND_TEST_ALL_PREFIXES(ClipboardHostImplScanTest, PerformPasteIfContentAllowed); - // TODO(crbug.com/1201018): Integrate this with mojo. - using ReadPngCallback = base::OnceCallback<void(mojo_base::BigBuffer)>; - // mojom::ClipboardHost void GetSequenceNumber(ui::ClipboardBuffer clipboard_buffer, GetSequenceNumberCallback callback) override; @@ -164,7 +167,8 @@ class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { ReadSvgCallback callback) override; void ReadRtf(ui::ClipboardBuffer clipboard_buffer, ReadRtfCallback callback) override; - void ReadPng(ui::ClipboardBuffer clipboard_buffer, ReadPngCallback callback); + void ReadPng(ui::ClipboardBuffer clipboard_buffer, + ReadPngCallback callback) override; void ReadImage(ui::ClipboardBuffer clipboard_buffer, ReadImageCallback callback) override; void ReadFiles(ui::ClipboardBuffer clipboard_buffer, @@ -172,6 +176,13 @@ class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { void ReadCustomData(ui::ClipboardBuffer clipboard_buffer, const std::u16string& type, ReadCustomDataCallback callback) override; + void ReadAvailableCustomAndStandardFormats( + ReadAvailableCustomAndStandardFormatsCallback callback) override; + void ReadUnsanitizedCustomFormat( + const std::u16string& format, + ReadUnsanitizedCustomFormatCallback callback) override; + void WriteUnsanitizedCustomFormat(const std::u16string& format, + mojo_base::BigBuffer data) override; void WriteText(const std::u16string& text) override; void WriteHtml(const std::u16string& markup, const GURL& url) override; void WriteSvg(const std::u16string& markup) override; @@ -186,10 +197,14 @@ class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { void WriteStringToFindPboard(const std::u16string& text) override; #endif + // Returns true if custom format is allowed to be read/written from/to the + // clipboard, else, fails. + bool IsUnsanitizedCustomFormatContentAllowed(); + // Called by PerformPasteIfContentAllowed() when an is allowed request is // needed. Virtual to be overridden in tests. virtual void StartIsPasteContentAllowedRequest( - uint64_t seqno, + const ui::ClipboardSequenceNumberToken& seqno, const ui::ClipboardFormatType& data_type, std::string data); @@ -212,13 +227,12 @@ class CONTENT_EXPORT ClipboardHostImpl : public blink::mojom::ClipboardHost { std::unique_ptr<ui::DataTransferEndpoint> CreateDataEndpoint(); - ui::Clipboard* const clipboard_; // Not owned - GlobalFrameRoutingId render_frame_routing_id_; std::unique_ptr<ui::ScopedClipboardWriter> clipboard_writer_; // Outstanding is allowed requests per clipboard contents. Maps a clipboard // sequence number to an outstanding request. - std::map<uint64_t, IsPasteContentAllowedRequest> is_allowed_requests_; + std::map<ui::ClipboardSequenceNumberToken, IsPasteContentAllowedRequest> + is_allowed_requests_; base::WeakPtrFactory<ClipboardHostImpl> weak_ptr_factory_{this}; }; |