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 |