diff options
-rw-r--r-- | chrome/browser/cocoa/web_drag_source.mm | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/chrome/browser/cocoa/web_drag_source.mm b/chrome/browser/cocoa/web_drag_source.mm index 70c144c..fdbb516 100644 --- a/chrome/browser/cocoa/web_drag_source.mm +++ b/chrome/browser/cocoa/web_drag_source.mm @@ -142,6 +142,12 @@ void PromiseWriterTask::Run() { } - (void)lazyWriteToPasteboard:(NSPasteboard*)pboard forType:(NSString*)type { + // NSHTMLPboardType requires the character set to be declared. Otherwise, it + // assumes US-ASCII. Awesome. + static const string16 kHtmlHeader = + ASCIIToUTF16("<meta http-equiv=\"Content-Type\" " + "content=\"text/html;charset=UTF-8\">"); + // Be extra paranoid; avoid crashing. if (!dropData_.get()) { NOTREACHED() << "No drag-and-drop data available for lazy write."; @@ -151,7 +157,8 @@ void PromiseWriterTask::Run() { // HTML. if ([type isEqualToString:NSHTMLPboardType]) { DCHECK(!dropData_->text_html.empty()); - [pboard setString:SysUTF16ToNSString(dropData_->text_html) + // See comment on |kHtmlHeader| above. + [pboard setString:SysUTF16ToNSString(kHtmlHeader + dropData_->text_html) forType:NSHTMLPboardType]; // URL. |