Chromium Code Reviews| Index: ui/base/dragdrop/os_exchange_data_provider_mac.mm |
| diff --git a/ui/base/dragdrop/os_exchange_data_provider_mac.mm b/ui/base/dragdrop/os_exchange_data_provider_mac.mm |
| index 5be2c7994894db9f8d33df4df0781fdede8dd5b6..8a3c5dbe7f9687ad85434bf9d219f0aa7c8e590b 100644 |
| --- a/ui/base/dragdrop/os_exchange_data_provider_mac.mm |
| +++ b/ui/base/dragdrop/os_exchange_data_provider_mac.mm |
| @@ -7,13 +7,22 @@ |
| #import <Cocoa/Cocoa.h> |
| #include "base/logging.h" |
| +#include "base/memory/ptr_util.h" |
| #include "base/pickle.h" |
| #include "base/strings/sys_string_conversions.h" |
| #include "base/strings/utf_string_conversions.h" |
| #import "third_party/mozilla/NSPasteboard+Utils.h" |
| #import "ui/base/clipboard/clipboard_util_mac.h" |
| +#import "ui/base/dragdrop/cocoa_dnd_util.h" |
| #include "url/gurl.h" |
| +namespace { |
| + |
| +// The MIME type for the clipboard format for OSExchangeData. |
| +const std::string kClipboardFormatString = "chromium/x-os-exchange-data"; |
|
tapted
2016/05/31 11:49:57
I don't really understand this bit -- what's the u
spqchan
2016/05/31 23:06:12
Ah, good point. I switched to kWebCustomDataPboard
|
| + |
| +} // namespace |
| + |
| namespace ui { |
| OSExchangeDataProviderMac::OSExchangeDataProviderMac() |
| @@ -169,6 +178,43 @@ bool OSExchangeDataProviderMac::HasCustomFormat( |
| return [[pasteboard_->get() types] containsObject:format.ToNSString()]; |
| } |
| +void OSExchangeDataProviderMac::SetDragImage( |
| + const gfx::ImageSkia& image, |
| + const gfx::Vector2d& cursor_offset) { |
| + drag_image_ = image; |
| + cursor_offset_ = cursor_offset; |
| +} |
| + |
| +const gfx::ImageSkia& OSExchangeDataProviderMac::GetDragImage() const { |
| + return drag_image_; |
| +} |
| + |
| +const gfx::Vector2d& OSExchangeDataProviderMac::GetDragImageOffset() const { |
| + return cursor_offset_; |
| +} |
| + |
| +NSData* OSExchangeDataProviderMac::GetNSDataForType(NSString* type) const { |
| + return [pasteboard_->get() dataForType:type]; |
| +} |
| + |
| +std::unique_ptr<OSExchangeData> |
| +OSExchangeDataProviderMac::CreateDataFromPasteboard(NSPasteboard* pasteboard) { |
| + OSExchangeDataProviderMac* provider = new OSExchangeDataProviderMac(); |
| + |
| + for (NSPasteboardItem* item in [pasteboard pasteboardItems]) |
| + ClipboardUtil::AddDataToPasteboard(provider->pasteboard_->get(), item); |
| + |
| + return base::WrapUnique(new OSExchangeData(provider)); |
| +} |
| + |
| +NSArray* OSExchangeDataProviderMac::SupportedPasteboardTypes() { |
| + return @[ |
| + base::SysUTF8ToNSString(kClipboardFormatString), |
| + ui::ClipboardUtil::UTIForWebURLsAndTitles(), NSURLPboardType, |
| + NSPasteboardTypeString, NSFilenamesPboardType |
| + ]; |
| +} |
| + |
| /////////////////////////////////////////////////////////////////////////////// |
| // OSExchangeData, public: |