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

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

Issue 542203004: MacViews: Get OSExchangeDataTest to pass (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 | « no previous file | ui/base/dragdrop/os_exchange_data_unittest.cc » ('j') | 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 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(
« no previous file with comments | « no previous file | ui/base/dragdrop/os_exchange_data_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698