Commit b30d27af authored by Darwin Huang's avatar Darwin Huang Committed by Commit Bot

Clipboard: Make ClipboardReader::NextRead a pure virtual function.

Also, add some comments...

Bug: 1145787
Change-Id: I64fc705e671f5534d523d2b9c1ec1d7f01b64c1b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2522575
Commit-Queue: Darwin Huang <huangdarwin@chromium.org>
Reviewed-by: default avatarJarryd Goodman <jarrydg@chromium.org>
Auto-Submit: Darwin Huang <huangdarwin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#825097}
parent 740a350c
...@@ -78,12 +78,13 @@ class ClipboardImageReader final : public ClipboardReader { ...@@ -78,12 +78,13 @@ class ClipboardImageReader final : public ClipboardReader {
std::move(png_data))); std::move(png_data)));
} }
// An empty vector indicates that the encoding step failed. void NextRead(Vector<uint8_t> utf8_bytes) override {
void NextRead(Vector<uint8_t> png_data) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
Blob* blob = nullptr; Blob* blob = nullptr;
if (png_data.size()) if (utf8_bytes.size()) {
blob = Blob::Create(png_data.data(), png_data.size(), kMimeTypeImagePng); blob =
Blob::Create(utf8_bytes.data(), utf8_bytes.size(), kMimeTypeImagePng);
}
promise_->OnRead(blob); promise_->OnRead(blob);
} }
...@@ -135,7 +136,7 @@ class ClipboardTextReader final : public ClipboardReader { ...@@ -135,7 +136,7 @@ class ClipboardTextReader final : public ClipboardReader {
std::move(utf8_bytes))); std::move(utf8_bytes)));
} }
void NextRead(Vector<uint8_t> utf8_bytes) { void NextRead(Vector<uint8_t> utf8_bytes) override {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
Blob* blob = nullptr; Blob* blob = nullptr;
if (utf8_bytes.size()) { if (utf8_bytes.size()) {
...@@ -208,7 +209,7 @@ class ClipboardHtmlReader final : public ClipboardReader { ...@@ -208,7 +209,7 @@ class ClipboardHtmlReader final : public ClipboardReader {
std::move(utf8_bytes))); std::move(utf8_bytes)));
} }
void NextRead(Vector<uint8_t> utf8_bytes) { void NextRead(Vector<uint8_t> utf8_bytes) override {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
Blob* blob = nullptr; Blob* blob = nullptr;
if (utf8_bytes.size()) { if (utf8_bytes.size()) {
...@@ -284,7 +285,7 @@ class ClipboardSvgReader final : public ClipboardReader { ...@@ -284,7 +285,7 @@ class ClipboardSvgReader final : public ClipboardReader {
std::move(utf8_bytes))); std::move(utf8_bytes)));
} }
void NextRead(Vector<uint8_t> utf8_bytes) { void NextRead(Vector<uint8_t> utf8_bytes) override {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
Blob* blob = nullptr; Blob* blob = nullptr;
if (utf8_bytes.size()) { if (utf8_bytes.size()) {
...@@ -295,8 +296,10 @@ class ClipboardSvgReader final : public ClipboardReader { ...@@ -295,8 +296,10 @@ class ClipboardSvgReader final : public ClipboardReader {
} }
}; };
} // anonymous namespace } // anonymous namespace
// ClipboardReader functions. // ClipboardReader functions.
// static
ClipboardReader* ClipboardReader::Create(SystemClipboard* system_clipboard, ClipboardReader* ClipboardReader::Create(SystemClipboard* system_clipboard,
const String& mime_type, const String& mime_type,
ClipboardPromise* promise) { ClipboardPromise* promise) {
......
...@@ -25,7 +25,8 @@ class ClipboardPromise; ...@@ -25,7 +25,8 @@ class ClipboardPromise;
// //
// ClipboardReader takes as input a ClipboardPromise, from which it expects // ClipboardReader takes as input a ClipboardPromise, from which it expects
// a clipboard format, and to which it provides a Blob containing an encoded // a clipboard format, and to which it provides a Blob containing an encoded
// SystemClipboard-originated clipboard payload. // SystemClipboard-originated clipboard payload. All System Clipboard
// operations should be called from the main thread.
// //
// Subclasses of ClipboardReader should be implemented for each supported // Subclasses of ClipboardReader should be implemented for each supported
// format. Subclasses should: // format. Subclasses should:
...@@ -52,10 +53,13 @@ class ClipboardReader : public GarbageCollected<ClipboardReader> { ...@@ -52,10 +53,13 @@ class ClipboardReader : public GarbageCollected<ClipboardReader> {
// TaskRunner for interacting with the system clipboard. // TaskRunner for interacting with the system clipboard.
const scoped_refptr<base::SingleThreadTaskRunner> clipboard_task_runner_; const scoped_refptr<base::SingleThreadTaskRunner> clipboard_task_runner_;
explicit ClipboardReader(SystemClipboard* system_clipboard, ClipboardReader(SystemClipboard* system_clipboard, ClipboardPromise* promise);
ClipboardPromise* promise); // Send a Blob holding `utf8_bytes` to the owning ClipboardPromise.
// An empty `utf8_bytes` indicates that the encoding step failed.
virtual void NextRead(Vector<uint8_t> utf8_bytes) = 0;
SystemClipboard* system_clipboard() { return system_clipboard_; } SystemClipboard* system_clipboard() { return system_clipboard_; }
// This ClipboardPromise owns this ClipboardReader.
Member<ClipboardPromise> promise_; Member<ClipboardPromise> promise_;
SEQUENCE_CHECKER(sequence_checker_); SEQUENCE_CHECKER(sequence_checker_);
......
...@@ -63,7 +63,7 @@ class ClipboardWriter : public GarbageCollected<ClipboardWriter>, ...@@ -63,7 +63,7 @@ class ClipboardWriter : public GarbageCollected<ClipboardWriter>,
virtual void StartWrite( virtual void StartWrite(
DOMArrayBuffer* raw_data, DOMArrayBuffer* raw_data,
scoped_refptr<base::SingleThreadTaskRunner> task_runner) = 0; scoped_refptr<base::SingleThreadTaskRunner> task_runner) = 0;
// This ClipboardPromise owns this. // This ClipboardPromise owns this ClipboardWriter.
Member<ClipboardPromise> promise_; Member<ClipboardPromise> promise_;
// Ensure that System Clipboard operations occur on the main thread. // Ensure that System Clipboard operations occur on the main thread.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment