| Index: ui/base/clipboard/clipboard_chromeos.cc
|
| diff --git a/ui/base/clipboard/clipboard_chromeos.cc b/ui/base/clipboard/clipboard_chromeos.cc
|
| index d810c6fe27ea74a8ca7808dc197420f880e081dc..6bce4577441e350eb68a670ac83a8381622b1baf 100644
|
| --- a/ui/base/clipboard/clipboard_chromeos.cc
|
| +++ b/ui/base/clipboard/clipboard_chromeos.cc
|
| @@ -34,6 +34,7 @@ enum AuraClipboardFormat {
|
| BITMAP = 1 << 4,
|
| CUSTOM = 1 << 5,
|
| WEB = 1 << 6,
|
| + SOURCETAG = 1 << 7,
|
| };
|
|
|
| // ClipboardData contains data copied to the Clipboard for a variety of formats.
|
| @@ -42,6 +43,7 @@ class ClipboardData {
|
| public:
|
| ClipboardData()
|
| : bitmap_data_(),
|
| + source_tag_(),
|
| web_smart_paste_(false),
|
| format_(0) {}
|
|
|
| @@ -118,6 +120,12 @@ class ClipboardData {
|
| format_ |= WEB;
|
| }
|
|
|
| + Clipboard::SourceTag source_tag() const { return source_tag_; }
|
| + void set_source_tag(Clipboard::SourceTag tag) {
|
| + source_tag_ = tag;
|
| + format_ |= SOURCETAG;
|
| + }
|
| +
|
| private:
|
| // Plain text in UTF8 format.
|
| std::string text_;
|
| @@ -144,6 +152,9 @@ class ClipboardData {
|
| std::string custom_data_format_;
|
| std::string custom_data_data_;
|
|
|
| + // SourceTag.
|
| + Clipboard::SourceTag source_tag_;
|
| +
|
| // WebKit smart paste data.
|
| bool web_smart_paste_;
|
|
|
| @@ -296,6 +307,13 @@ class AuraClipboard {
|
| *result = data->custom_data_data();
|
| }
|
|
|
| + Clipboard::SourceTag ReadSourceTag() const {
|
| + if (!HasFormat(SOURCETAG))
|
| + return Clipboard::SourceTag();
|
| + const ClipboardData* data = GetData();
|
| + return data->source_tag();
|
| + }
|
| +
|
| // Writes |data| to the top of the clipboard stack.
|
| void WriteData(ClipboardData* data) {
|
| DCHECK(data);
|
| @@ -399,6 +417,11 @@ class ClipboardDataBuilder {
|
| data->SetCustomData(format, std::string(data_data, data_len));
|
| }
|
|
|
| + static void WriteSourceTag(Clipboard::SourceTag tag) {
|
| + ClipboardData* data = GetCurrentData();
|
| + data->set_source_tag(tag);
|
| + }
|
| +
|
| private:
|
| static ClipboardData* GetCurrentData() {
|
| if (!current_data_)
|
| @@ -448,13 +471,16 @@ Clipboard::~Clipboard() {
|
| DeleteClipboard();
|
| }
|
|
|
| -void Clipboard::WriteObjects(Buffer buffer, const ObjectMap& objects) {
|
| +void Clipboard::WriteObjectsImpl(Buffer buffer,
|
| + const ObjectMap& objects,
|
| + SourceTag tag) {
|
| DCHECK(CalledOnValidThread());
|
| DCHECK(IsValidBuffer(buffer));
|
| for (ObjectMap::const_iterator iter = objects.begin();
|
| iter != objects.end(); ++iter) {
|
| DispatchObject(static_cast<ObjectType>(iter->first), iter->second);
|
| }
|
| + WriteSourceTag(tag);
|
| ClipboardDataBuilder::CommitToClipboard();
|
| }
|
|
|
| @@ -561,6 +587,12 @@ void Clipboard::ReadData(const FormatType& format, std::string* result) const {
|
| GetClipboard()->ReadData(format.ToString(), result);
|
| }
|
|
|
| +Clipboard::SourceTag Clipboard::ReadSourceTag(Buffer buffer) const {
|
| + DCHECK(CalledOnValidThread());
|
| + DCHECK_EQ(BUFFER_STANDARD, buffer);
|
| + return GetClipboard()->ReadSourceTag();
|
| +}
|
| +
|
| uint64 Clipboard::GetSequenceNumber(Buffer buffer) {
|
| DCHECK(CalledOnValidThread());
|
| return GetClipboard()->GetNumClipboardEntries();
|
| @@ -602,6 +634,11 @@ void Clipboard::WriteData(const FormatType& format,
|
| ClipboardDataBuilder::WriteData(format.ToString(), data_data, data_len);
|
| }
|
|
|
| +void Clipboard::WriteSourceTag(SourceTag tag) {
|
| + if (tag != SourceTag())
|
| + ClipboardDataBuilder::WriteSourceTag(tag);
|
| +}
|
| +
|
| // static
|
| Clipboard::FormatType Clipboard::GetFormatType(
|
| const std::string& format_string) {
|
|
|