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 {
std::move(png_data)));
}
// An empty vector indicates that the encoding step failed.
void NextRead(Vector<uint8_t> png_data) {
void NextRead(Vector<uint8_t> utf8_bytes) override {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
Blob* blob = nullptr;
if (png_data.size())
blob = Blob::Create(png_data.data(), png_data.size(), kMimeTypeImagePng);
if (utf8_bytes.size()) {
blob =
Blob::Create(utf8_bytes.data(), utf8_bytes.size(), kMimeTypeImagePng);
}
promise_->OnRead(blob);
}
......@@ -135,7 +136,7 @@ class ClipboardTextReader final : public ClipboardReader {
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_);
Blob* blob = nullptr;
if (utf8_bytes.size()) {
......@@ -208,7 +209,7 @@ class ClipboardHtmlReader final : public ClipboardReader {
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_);
Blob* blob = nullptr;
if (utf8_bytes.size()) {
......@@ -284,7 +285,7 @@ class ClipboardSvgReader final : public ClipboardReader {
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_);
Blob* blob = nullptr;
if (utf8_bytes.size()) {
......@@ -295,8 +296,10 @@ class ClipboardSvgReader final : public ClipboardReader {
}
};
} // anonymous namespace
// ClipboardReader functions.
// static
ClipboardReader* ClipboardReader::Create(SystemClipboard* system_clipboard,
const String& mime_type,
ClipboardPromise* promise) {
......
......@@ -25,7 +25,8 @@ class ClipboardPromise;
//
// ClipboardReader takes as input a ClipboardPromise, from which it expects
// 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
// format. Subclasses should:
......@@ -52,10 +53,13 @@ class ClipboardReader : public GarbageCollected<ClipboardReader> {
// TaskRunner for interacting with the system clipboard.
const scoped_refptr<base::SingleThreadTaskRunner> clipboard_task_runner_;
explicit ClipboardReader(SystemClipboard* system_clipboard,
ClipboardPromise* promise);
ClipboardReader(SystemClipboard* system_clipboard, 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_; }
// This ClipboardPromise owns this ClipboardReader.
Member<ClipboardPromise> promise_;
SEQUENCE_CHECKER(sequence_checker_);
......
......@@ -63,7 +63,7 @@ class ClipboardWriter : public GarbageCollected<ClipboardWriter>,
virtual void StartWrite(
DOMArrayBuffer* raw_data,
scoped_refptr<base::SingleThreadTaskRunner> task_runner) = 0;
// This ClipboardPromise owns this.
// This ClipboardPromise owns this ClipboardWriter.
Member<ClipboardPromise> promise_;
// 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