summaryrefslogtreecommitdiff
path: root/chromium/content/browser/renderer_host/clipboard_host_impl.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2021-10-26 13:57:00 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2021-11-02 11:31:01 +0000
commit1943b3c2a1dcee36c233724fc4ee7613d71b9cf6 (patch)
tree8c1b5f12357025c197da5427ae02cfdc2f3570d6 /chromium/content/browser/renderer_host/clipboard_host_impl.h
parent21ba0c5d4bf8fba15dddd97cd693bad2358b77fd (diff)
downloadqtwebengine-chromium-1943b3c2a1dcee36c233724fc4ee7613d71b9cf6.tar.gz
BASELINE: Update Chromium to 94.0.4606.111
Change-Id: I924781584def20fc800bedf6ff41fdb96c438193 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/content/browser/renderer_host/clipboard_host_impl.h')
-rw-r--r--chromium/content/browser/renderer_host/clipboard_host_impl.h42
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};
};