| Index: ui/base/clipboard/clipboard_android.cc
|
| diff --git a/ui/base/clipboard/clipboard_android.cc b/ui/base/clipboard/clipboard_android.cc
|
| index b3df9742fe0d4d445b63664b836533e263515179..e972a3a71e3bb94af4aec824a6213bfc0e2afe9d 100644
|
| --- a/ui/base/clipboard/clipboard_android.cc
|
| +++ b/ui/base/clipboard/clipboard_android.cc
|
| @@ -40,6 +40,7 @@ const char kWebKitSmartPasteFormat[] = "webkit_smart";
|
| const char kBookmarkFormat[] = "bookmark";
|
| const char kMimeTypePepperCustomData[] = "chromium/x-pepper-custom-data";
|
| const char kMimeTypeWebCustomData[] = "chromium/x-web-custom-data";
|
| +const char kSourceTagFormat[] = "source_tag";
|
|
|
| class ClipboardMap {
|
| public:
|
| @@ -198,13 +199,16 @@ Clipboard::~Clipboard() {
|
| }
|
|
|
| // Main entry point used to write several values in the clipboard.
|
| -void Clipboard::WriteObjects(Buffer buffer, const ObjectMap& objects) {
|
| +void Clipboard::WriteObjectsImpl(Buffer buffer,
|
| + const ObjectMap& objects,
|
| + SourceTag tag) {
|
| DCHECK_EQ(buffer, BUFFER_STANDARD);
|
| g_map.Get().Clear();
|
| for (ObjectMap::const_iterator iter = objects.begin();
|
| iter != objects.end(); ++iter) {
|
| DispatchObject(static_cast<ObjectType>(iter->first), iter->second);
|
| }
|
| + WriteSourceTag(tag);
|
| }
|
|
|
| uint64 Clipboard::GetSequenceNumber(Clipboard::Buffer /* buffer */) {
|
| @@ -310,6 +314,13 @@ void Clipboard::ReadData(const Clipboard::FormatType& format,
|
| *result = g_map.Get().Get(format.data());
|
| }
|
|
|
| +Clipboard::SourceTag Clipboard::ReadSourceTag(Buffer buffer) const {
|
| + DCHECK_EQ(buffer, BUFFER_STANDARD);
|
| + std::string result;
|
| + ReadData(GetSourceTagFormatType(), &result);
|
| + return Binary2SourceTag(result);
|
| +}
|
| +
|
| // static
|
| Clipboard::FormatType Clipboard::GetFormatType(
|
| const std::string& format_string) {
|
| @@ -364,6 +375,12 @@ const Clipboard::FormatType& Clipboard::GetPepperCustomDataFormatType() {
|
| return type;
|
| }
|
|
|
| +// static
|
| +const Clipboard::FormatType& Clipboard::GetSourceTagFormatType() {
|
| + CR_DEFINE_STATIC_LOCAL(FormatType, type, (kSourceTagFormat));
|
| + return type;
|
| +}
|
| +
|
| void Clipboard::WriteText(const char* text_data, size_t text_len) {
|
| g_map.Get().Set(kPlainTextFormat, std::string(text_data, text_len));
|
| }
|
| @@ -410,4 +427,11 @@ void Clipboard::WriteData(const Clipboard::FormatType& format,
|
| g_map.Get().Set(format.data(), std::string(data_data, data_len));
|
| }
|
|
|
| +void Clipboard::WriteSourceTag(SourceTag tag) {
|
| + if (tag != SourceTag()) {
|
| + ObjectMapParam binary = SourceTag2Binary(tag);
|
| + WriteData(GetSourceTagFormatType(), &binary[0], binary.size());
|
| + }
|
| +}
|
| +
|
| } // namespace ui
|
|
|