| 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 72d647f140684e8f9a646be045c90fcb46c5edee..030d0d084121808976d4e6ff1ec56bc82c9fd16e 100644
|
| --- a/ui/base/dragdrop/os_exchange_data_provider_mac.mm
|
| +++ b/ui/base/dragdrop/os_exchange_data_provider_mac.mm
|
| @@ -11,17 +11,17 @@
|
| #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"
|
| #include "url/gurl.h"
|
|
|
| namespace ui {
|
|
|
| OSExchangeDataProviderMac::OSExchangeDataProviderMac()
|
| - : pasteboard_([[NSPasteboard pasteboardWithUniqueName] retain]) {
|
| -}
|
| + : pasteboard_(new ui::UniquePasteboard) {}
|
|
|
| -OSExchangeDataProviderMac::OSExchangeDataProviderMac(NSPasteboard* pasteboard)
|
| - : pasteboard_([pasteboard retain]) {
|
| -}
|
| +OSExchangeDataProviderMac::OSExchangeDataProviderMac(
|
| + scoped_refptr<ui::UniquePasteboard> pb)
|
| + : pasteboard_(pb) {}
|
|
|
| OSExchangeDataProviderMac::~OSExchangeDataProviderMac() {
|
| }
|
| @@ -40,21 +40,21 @@ bool OSExchangeDataProviderMac::DidOriginateFromRenderer() const {
|
| }
|
|
|
| void OSExchangeDataProviderMac::SetString(const base::string16& string) {
|
| - [pasteboard_ writeObjects:@[ base::SysUTF16ToNSString(string) ]];
|
| + [pasteboard_->get() writeObjects:@[ base::SysUTF16ToNSString(string) ]];
|
| }
|
|
|
| void OSExchangeDataProviderMac::SetURL(const GURL& url,
|
| const base::string16& title) {
|
| NSURL* ns_url = [NSURL URLWithString:base::SysUTF8ToNSString(url.spec())];
|
| - [pasteboard_ writeObjects:@[ ns_url ]];
|
| + [pasteboard_->get() writeObjects:@[ ns_url ]];
|
|
|
| - [pasteboard_ setString:base::SysUTF16ToNSString(title)
|
| - forType:kCorePasteboardFlavorType_urln];
|
| + [pasteboard_->get() setString:base::SysUTF16ToNSString(title)
|
| + forType:kCorePasteboardFlavorType_urln];
|
| }
|
|
|
| void OSExchangeDataProviderMac::SetFilename(const base::FilePath& path) {
|
| - [pasteboard_ setPropertyList:@[ base::SysUTF8ToNSString(path.value()) ]
|
| - forType:NSFilenamesPboardType];
|
| + [pasteboard_->get() setPropertyList:@[ base::SysUTF8ToNSString(path.value()) ]
|
| + forType:NSFilenamesPboardType];
|
| }
|
|
|
| void OSExchangeDataProviderMac::SetFilenames(
|
| @@ -66,13 +66,14 @@ void OSExchangeDataProviderMac::SetPickledData(
|
| const Clipboard::FormatType& format,
|
| const base::Pickle& data) {
|
| NSData* ns_data = [NSData dataWithBytes:data.data() length:data.size()];
|
| - [pasteboard_ setData:ns_data forType:format.ToNSString()];
|
| + [pasteboard_->get() setData:ns_data forType:format.ToNSString()];
|
| }
|
|
|
| bool OSExchangeDataProviderMac::GetString(base::string16* data) const {
|
| DCHECK(data);
|
| - NSArray* items = [pasteboard_ readObjectsForClasses:@[ [NSString class] ]
|
| - options:@{ }];
|
| + NSArray* items =
|
| + [pasteboard_->get() readObjectsForClasses:@[ [NSString class] ]
|
| + options:@{}];
|
|
|
| // There was no NSString, check for an NSURL.
|
| if ([items count] == 0) {
|
| @@ -95,8 +96,8 @@ bool OSExchangeDataProviderMac::GetURLAndTitle(
|
| base::string16* title) const {
|
| DCHECK(url);
|
| DCHECK(title);
|
| - NSArray* items = [pasteboard_ readObjectsForClasses:@[ [NSURL class] ]
|
| - options:@{ }];
|
| + NSArray* items =
|
| + [pasteboard_->get() readObjectsForClasses:@[ [NSURL class] ] options:@{}];
|
| if ([items count] == 0)
|
| return false;
|
|
|
| @@ -105,7 +106,8 @@ bool OSExchangeDataProviderMac::GetURLAndTitle(
|
| 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];
|
| + NSArray* paths =
|
| + [pasteboard_->get() propertyListForType:NSFilenamesPboardType];
|
| NSString* url_path = [[ns_url path] stringByStandardizingPath];
|
| for (NSString* path in paths) {
|
| if ([[path stringByStandardizingPath] isEqualToString:url_path])
|
| @@ -115,12 +117,13 @@ bool OSExchangeDataProviderMac::GetURLAndTitle(
|
|
|
| *url = GURL([[ns_url absoluteString] UTF8String]);
|
| *title = base::SysNSStringToUTF16(
|
| - [pasteboard_ stringForType:kCorePasteboardFlavorType_urln]);
|
| + [pasteboard_->get() stringForType:kCorePasteboardFlavorType_urln]);
|
| return true;
|
| }
|
|
|
| bool OSExchangeDataProviderMac::GetFilename(base::FilePath* path) const {
|
| - NSArray* paths = [pasteboard_ propertyListForType:NSFilenamesPboardType];
|
| + NSArray* paths =
|
| + [pasteboard_->get() propertyListForType:NSFilenamesPboardType];
|
| if ([paths count] == 0)
|
| return false;
|
|
|
| @@ -138,7 +141,7 @@ bool OSExchangeDataProviderMac::GetPickledData(
|
| const Clipboard::FormatType& format,
|
| base::Pickle* data) const {
|
| DCHECK(data);
|
| - NSData* ns_data = [pasteboard_ dataForType:format.ToNSString()];
|
| + NSData* ns_data = [pasteboard_->get() dataForType:format.ToNSString()];
|
| if (!ns_data)
|
| return false;
|
|
|
| @@ -149,7 +152,7 @@ bool OSExchangeDataProviderMac::GetPickledData(
|
|
|
| bool OSExchangeDataProviderMac::HasString() const {
|
| NSArray* classes = @[ [NSString class] ];
|
| - return [pasteboard_ canReadObjectForClasses:classes options:nil];
|
| + return [pasteboard_->get() canReadObjectForClasses:classes options:nil];
|
| }
|
|
|
| bool OSExchangeDataProviderMac::HasURL(
|
| @@ -160,12 +163,12 @@ bool OSExchangeDataProviderMac::HasURL(
|
| }
|
|
|
| bool OSExchangeDataProviderMac::HasFile() const {
|
| - return [[pasteboard_ types] containsObject:NSFilenamesPboardType];
|
| + return [[pasteboard_->get() types] containsObject:NSFilenamesPboardType];
|
| }
|
|
|
| bool OSExchangeDataProviderMac::HasCustomFormat(
|
| const Clipboard::FormatType& format) const {
|
| - return [[pasteboard_ types] containsObject:format.ToNSString()];
|
| + return [[pasteboard_->get() types] containsObject:format.ToNSString()];
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|