Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(363)

Unified Diff: ui/base/dragdrop/os_exchange_data_provider_mac.mm

Issue 1852433004: Fix NSPasteboard leaks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compile error. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/dragdrop/os_exchange_data_provider_mac.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()];
}
///////////////////////////////////////////////////////////////////////////////
« no previous file with comments | « ui/base/dragdrop/os_exchange_data_provider_mac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698