| Index: ui/base/clipboard/clipboard_android.cc
|
| diff --git a/ui/base/clipboard/clipboard_android.cc b/ui/base/clipboard/clipboard_android.cc
|
| index 22f75c194eba4e98758a7abdabc2b3bb3d8aac85..34d4a83bdaaaac38400bb66ec504c345c8669788 100644
|
| --- a/ui/base/clipboard/clipboard_android.cc
|
| +++ b/ui/base/clipboard/clipboard_android.cc
|
| @@ -97,10 +97,26 @@ void ClipboardMap::Set(const std::string& format, const std::string& data) {
|
|
|
| map_[format] = data;
|
| if (format == kPlainTextFormat) {
|
| - ScopedJavaLocalRef<jstring> str = ConvertUTF8ToJavaString(
|
| - env, data.c_str());
|
| - DCHECK(str.obj() && !ClearException(env));
|
| + ScopedJavaLocalRef<jstring> str = ConvertUTF8ToJavaString(env, data);
|
| + DCHECK(str.obj());
|
| +
|
| Java_Clipboard_setText(env, clipboard_manager_.obj(), str.obj());
|
| + } else if (format == kHTMLFormat) {
|
| + // Android's API for storing HTML content on the clipboard requires a plain-
|
| + // text representation to be available as well. ScopedClipboardWriter has a
|
| + // stable order for setting clipboard data, ensuring that plain-text data
|
| + // is available first. Do not write to the clipboard when only HTML data is
|
| + // available, because otherwise others apps may not be able to paste it.
|
| + if (!ContainsKey(map_, kPlainTextFormat))
|
| + return;
|
| +
|
| + ScopedJavaLocalRef<jstring> html = ConvertUTF8ToJavaString(env, data);
|
| + ScopedJavaLocalRef<jstring> text = ConvertUTF8ToJavaString(
|
| + env, map_[kPlainTextFormat].c_str());
|
| +
|
| + DCHECK(html.obj() && text.obj());
|
| + Java_Clipboard_setHTMLText(
|
| + env, clipboard_manager_.obj(), html.obj(), text.obj());
|
| }
|
| }
|
|
|
|
|