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

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

Issue 368973003: MacViews: Partially implement OSExchangeDataProviderMac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: lastObject -> objectAtIndex Created 6 years, 5 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') | 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 e8e60c3942cffd1546e946adb97e493d73a49765..096b8066209089cce5ff82ab57b3b8c6a7011bc3 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_mac.mm
+++ b/ui/base/dragdrop/os_exchange_data_provider_mac.mm
@@ -4,19 +4,30 @@
#include "ui/base/dragdrop/os_exchange_data_provider_mac.h"
+#import <Cocoa/Cocoa.h>
+
#include "base/logging.h"
+#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 {
-OSExchangeDataProviderMac::OSExchangeDataProviderMac() {
+OSExchangeDataProviderMac::OSExchangeDataProviderMac()
+ : pasteboard_([[NSPasteboard pasteboardWithUniqueName] retain]) {
+}
+
+OSExchangeDataProviderMac::OSExchangeDataProviderMac(NSPasteboard* pasteboard)
+ : pasteboard_([pasteboard retain]) {
}
OSExchangeDataProviderMac::~OSExchangeDataProviderMac() {
}
OSExchangeData::Provider* OSExchangeDataProviderMac::Clone() const {
- NOTIMPLEMENTED();
- return new OSExchangeDataProviderMac();
+ return new OSExchangeDataProviderMac(pasteboard_);
}
void OSExchangeDataProviderMac::MarkOriginatedFromRenderer() {
@@ -29,12 +40,13 @@ bool OSExchangeDataProviderMac::DidOriginateFromRenderer() const {
}
void OSExchangeDataProviderMac::SetString(const base::string16& string) {
- NOTIMPLEMENTED();
+ [pasteboard_ writeObjects:@[ base::SysUTF16ToNSString(string) ]];
}
void OSExchangeDataProviderMac::SetURL(const GURL& url,
const base::string16& title) {
- NOTIMPLEMENTED();
+ [pasteboard_ setDataForURL:base::SysUTF8ToNSString(url.spec())
+ title:base::SysUTF16ToNSString(title)];
}
void OSExchangeDataProviderMac::SetFilename(const base::FilePath& path) {
@@ -49,20 +61,27 @@ void OSExchangeDataProviderMac::SetFilenames(
void OSExchangeDataProviderMac::SetPickledData(
const OSExchangeData::CustomFormat& format,
const Pickle& data) {
- NOTIMPLEMENTED();
+ NSData* ns_data = [NSData dataWithBytes:data.data() length:data.size()];
+ [pasteboard_ setData:ns_data forType:format.ToNSString()];
}
bool OSExchangeDataProviderMac::GetString(base::string16* data) const {
- NOTIMPLEMENTED();
- return false;
+ DCHECK(data);
+ NSArray* items = [pasteboard_ readObjectsForClasses:@[ [NSString class] ]
+ options:@{ }];
+ if ([items count] == 0)
+ return false;
+
+ *data = base::SysNSStringToUTF16([items objectAtIndex:0]);
+ return true;
}
bool OSExchangeDataProviderMac::GetURLAndTitle(
OSExchangeData::FilenameToURLPolicy policy,
GURL* url,
base::string16* title) const {
- NOTIMPLEMENTED();
- return false;
+ return PopulateURLAndTitleFromPasteboard(
+ url, title, pasteboard_, policy == OSExchangeData::CONVERT_FILENAMES);
}
bool OSExchangeDataProviderMac::GetFilename(base::FilePath* path) const {
@@ -79,19 +98,25 @@ bool OSExchangeDataProviderMac::GetFilenames(
bool OSExchangeDataProviderMac::GetPickledData(
const OSExchangeData::CustomFormat& format,
Pickle* data) const {
- NOTIMPLEMENTED();
- return false;
+ DCHECK(data);
+ NSData* ns_data = [pasteboard_ dataForType:format.ToNSString()];
+ if (!ns_data)
+ return false;
+
+ *data = Pickle(static_cast<const char*>([ns_data bytes]), [ns_data length]);
+ return true;
}
bool OSExchangeDataProviderMac::HasString() const {
- NOTIMPLEMENTED();
- return false;
+ NSArray* classes = @[ [NSString class] ];
+ return [pasteboard_ canReadObjectForClasses:classes options:nil];
}
bool OSExchangeDataProviderMac::HasURL(
OSExchangeData::FilenameToURLPolicy policy) const {
- NOTIMPLEMENTED();
- return false;
+ GURL url;
+ base::string16 title;
+ return GetURLAndTitle(policy, &url, &title);
}
bool OSExchangeDataProviderMac::HasFile() const {
@@ -101,8 +126,7 @@ bool OSExchangeDataProviderMac::HasFile() const {
bool OSExchangeDataProviderMac::HasCustomFormat(
const OSExchangeData::CustomFormat& format) const {
- NOTIMPLEMENTED();
- return false;
+ return [[pasteboard_ types] containsObject:format.ToNSString()];
}
///////////////////////////////////////////////////////////////////////////////
« no previous file with comments | « ui/base/dragdrop/os_exchange_data_provider_mac.h ('k') | ui/base/dragdrop/os_exchange_data_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698