| 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 096b8066209089cce5ff82ab57b3b8c6a7011bc3..94e4bed9c32e82d7ea934bc8bfb878116d50d385 100644
|
| --- a/ui/base/dragdrop/os_exchange_data_provider_mac.mm
|
| +++ b/ui/base/dragdrop/os_exchange_data_provider_mac.mm
|
| @@ -10,7 +10,6 @@
|
| #include "base/pickle.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| #import "third_party/mozilla/NSPasteboard+Utils.h"
|
| -#import "ui/base/dragdrop/cocoa_dnd_util.h"
|
| #include "url/gurl.h"
|
|
|
| namespace ui {
|
| @@ -45,12 +44,16 @@ void OSExchangeDataProviderMac::SetString(const base::string16& string) {
|
|
|
| void OSExchangeDataProviderMac::SetURL(const GURL& url,
|
| const base::string16& title) {
|
| - [pasteboard_ setDataForURL:base::SysUTF8ToNSString(url.spec())
|
| - title:base::SysUTF16ToNSString(title)];
|
| + NSURL* ns_url = [NSURL URLWithString:base::SysUTF8ToNSString(url.spec())];
|
| + [pasteboard_ writeObjects:@[ ns_url ]];
|
| +
|
| + [pasteboard_ setString:base::SysUTF16ToNSString(title)
|
| + forType:kCorePasteboardFlavorType_urln];
|
| }
|
|
|
| void OSExchangeDataProviderMac::SetFilename(const base::FilePath& path) {
|
| - NOTIMPLEMENTED();
|
| + [pasteboard_ setPropertyList:@[ base::SysUTF8ToNSString(path.value()) ]
|
| + forType:NSFilenamesPboardType];
|
| }
|
|
|
| void OSExchangeDataProviderMac::SetFilenames(
|
| @@ -80,13 +83,39 @@ bool OSExchangeDataProviderMac::GetURLAndTitle(
|
| OSExchangeData::FilenameToURLPolicy policy,
|
| GURL* url,
|
| base::string16* title) const {
|
| - return PopulateURLAndTitleFromPasteboard(
|
| - url, title, pasteboard_, policy == OSExchangeData::CONVERT_FILENAMES);
|
| + DCHECK(url);
|
| + DCHECK(title);
|
| + NSArray* items = [pasteboard_ readObjectsForClasses:@[ [NSURL class] ]
|
| + options:@{ }];
|
| + if ([items count] == 0)
|
| + return false;
|
| +
|
| + NSURL* ns_url = [items objectAtIndex:0];
|
| +
|
| + if (policy == OSExchangeData::DO_NOT_CONVERT_FILENAMES) {
|
| + // If the URL matches a filename, assume that it came from SetFilename().
|
| + // Don't return it if we are not supposed to convert filename to URL.
|
| + NSArray* paths = [pasteboard_ propertyListForType:NSFilenamesPboardType];
|
| + NSString* url_path = [[ns_url path] stringByStandardizingPath];
|
| + for (NSString* path in paths) {
|
| + if ([[path stringByStandardizingPath] isEqualToString:url_path])
|
| + return false;
|
| + }
|
| + }
|
| +
|
| + *url = GURL([[ns_url absoluteString] UTF8String]);
|
| + *title = base::SysNSStringToUTF16(
|
| + [pasteboard_ stringForType:kCorePasteboardFlavorType_urln]);
|
| + return true;
|
| }
|
|
|
| bool OSExchangeDataProviderMac::GetFilename(base::FilePath* path) const {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| + NSArray* paths = [pasteboard_ propertyListForType:NSFilenamesPboardType];
|
| + if ([paths count] == 0)
|
| + return false;
|
| +
|
| + *path = base::FilePath([[paths objectAtIndex:0] UTF8String]);
|
| + return true;
|
| }
|
|
|
| bool OSExchangeDataProviderMac::GetFilenames(
|
| @@ -120,8 +149,7 @@ bool OSExchangeDataProviderMac::HasURL(
|
| }
|
|
|
| bool OSExchangeDataProviderMac::HasFile() const {
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| + return [[pasteboard_ types] containsObject:NSFilenamesPboardType];
|
| }
|
|
|
| bool OSExchangeDataProviderMac::HasCustomFormat(
|
|
|