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

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

Issue 1964283002: MacViews: Implemented Drag & Drop (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Forgot to add the test Created 4 years, 7 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
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 5be2c7994894db9f8d33df4df0781fdede8dd5b6..8671ddce54005e8b497b5a2d9745a8a6eb1791b5 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_mac.mm
+++ b/ui/base/dragdrop/os_exchange_data_provider_mac.mm
@@ -7,11 +7,13 @@
#import <Cocoa/Cocoa.h>
#include "base/logging.h"
+#include "base/memory/ptr_util.h"
#include "base/pickle.h"
#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"
+#import "ui/base/dragdrop/cocoa_dnd_util.h"
#include "url/gurl.h"
namespace ui {
@@ -69,6 +71,17 @@ void OSExchangeDataProviderMac::SetPickledData(
[pasteboard_->get() setData:ns_data forType:format.ToNSString()];
}
+void OSExchangeDataProviderMac::SetDragImage(
+ const gfx::ImageSkia& image,
+ const gfx::Vector2d& cursor_offset) {
+ drag_image_ = image;
+ cursor_offset_ = cursor_offset;
+}
+
+void OSExchangeDataProviderMac::SetEvent(const Event& event) {
+ event_ = Event::Clone(event);
+}
+
bool OSExchangeDataProviderMac::GetString(base::string16* data) const {
DCHECK(data);
NSString* item = [pasteboard_->get() stringForType:NSPasteboardTypeString];
@@ -76,7 +89,6 @@ bool OSExchangeDataProviderMac::GetString(base::string16* data) const {
*data = base::SysNSStringToUTF16(item);
return true;
}
-
// There was no NSString, check for an NSURL.
tapted 2016/05/24 08:06:00 nit: put back blank line above?
spqchan 2016/05/26 01:56:53 Done.
GURL url;
base::string16 title;
@@ -148,6 +160,23 @@ bool OSExchangeDataProviderMac::GetPickledData(
return true;
}
+const gfx::ImageSkia& OSExchangeDataProviderMac::GetDragImage() const {
+ return drag_image_;
+}
+
+const gfx::Vector2d& OSExchangeDataProviderMac::GetDragImageOffset() const {
+ return cursor_offset_;
+}
+
+const Event* OSExchangeDataProviderMac::GetEvent() const {
+ DCHECK(event_.get());
+ return event_.get();
+}
+
+NSData* OSExchangeDataProviderMac::GetNSDataForType(NSString* type) const {
+ return [pasteboard_->get() dataForType:type];
+}
+
bool OSExchangeDataProviderMac::HasString() const {
base::string16 string;
return GetString(&string);
@@ -169,6 +198,27 @@ bool OSExchangeDataProviderMac::HasCustomFormat(
return [[pasteboard_->get() types] containsObject:format.ToNSString()];
}
+NSArray* OSExchangeDataProviderMac::GetPasteboardTypes() const {
+ return [pasteboard_->get() types];
+}
+
+std::unique_ptr<OSExchangeData>
+OSExchangeDataProviderMac::CreateDataFromPasteboard(NSPasteboard* pasteboard) {
+ OSExchangeDataProviderMac* provider = new OSExchangeDataProviderMac();
+
+ for (NSPasteboardItem* item in [pasteboard pasteboardItems])
+ ClipboardUtil::AddDataToPasteboard(provider->pasteboard_->get(), item);
+
+ return base::WrapUnique(new OSExchangeData(provider));
+}
+
+NSArray* OSExchangeDataProviderMac::SupportedPasteboardTypes() {
+ return @[
+ ui::ClipboardUtil::UTIForWebURLsAndTitles(), NSURLPboardType,
+ NSPasteboardTypeString, NSFilenamesPboardType
+ ];
+}
+
///////////////////////////////////////////////////////////////////////////////
// OSExchangeData, public:

Powered by Google App Engine
This is Rietveld 408576698