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

Unified Diff: content/renderer/render_view_impl.cc

Issue 1723763002: Add WebDragData to blink::WebView::dragtargetDrop (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase 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
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index e66153301e131007be323524a5fb471c5d6fb51e..392e90b96329869f25f29dee1e12bdc99998a55a 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -428,7 +428,8 @@ class WebWidgetLockTarget : public MouseLockDispatcher::LockTarget {
blink::WebWidget* webwidget_;
};
-WebDragData DropDataToWebDragData(const DropData& drop_data) {
+WebDragData DropDataToWebDragData(const DropData& drop_data,
+ bool is_meta_data) {
std::vector<WebDragData::Item> item_list;
// These fields are currently unused when dragging into WebKit.
@@ -440,18 +441,21 @@ WebDragData DropDataToWebDragData(const DropData& drop_data) {
WebDragData::Item item;
item.storageType = WebDragData::Item::StorageTypeString;
item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeText);
- item.stringData = drop_data.text.string();
+ item.stringData = is_meta_data ? WebString::fromUTF8("")
+ : WebString(drop_data.text.string());
item_list.push_back(item);
}
// TODO(dcheng): Do we need to distinguish between null and empty URLs? Is it
// meaningful to write an empty URL to the clipboard?
- if (!drop_data.url.is_empty()) {
+ if (drop_data.has_url) {
WebDragData::Item item;
item.storageType = WebDragData::Item::StorageTypeString;
item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeURIList);
- item.stringData = WebString::fromUTF8(drop_data.url.spec());
- item.title = drop_data.url_title;
+ item.stringData = is_meta_data ? WebString::fromUTF8("")
+ : WebString::fromUTF8(drop_data.url.spec());
+ item.title =
+ is_meta_data ? WebString::fromUTF8("") : WebString(drop_data.url_title);
item_list.push_back(item);
}
@@ -459,8 +463,9 @@ WebDragData DropDataToWebDragData(const DropData& drop_data) {
WebDragData::Item item;
item.storageType = WebDragData::Item::StorageTypeString;
item.stringType = WebString::fromUTF8(ui::Clipboard::kMimeTypeHTML);
- item.stringData = drop_data.html.string();
- item.baseURL = drop_data.html_base_url;
+ item.stringData = is_meta_data ? WebString::fromUTF8("")
+ : WebString(drop_data.html.string());
+ item.baseURL = is_meta_data ? GURL() : drop_data.html_base_url;
item_list.push_back(item);
}
@@ -470,8 +475,11 @@ WebDragData DropDataToWebDragData(const DropData& drop_data) {
++it) {
WebDragData::Item item;
item.storageType = WebDragData::Item::StorageTypeFilename;
- item.filenameData = it->path.AsUTF16Unsafe();
- item.displayNameData = it->display_name.AsUTF16Unsafe();
+ item.filenameData = is_meta_data ? WebString::fromUTF8("")
+ : WebString(it->path.AsUTF16Unsafe());
+ item.displayNameData = is_meta_data
+ ? WebString::fromUTF8("")
+ : WebString(it->display_name.AsUTF16Unsafe());
item_list.push_back(item);
}
@@ -481,8 +489,8 @@ WebDragData DropDataToWebDragData(const DropData& drop_data) {
++it) {
WebDragData::Item item;
item.storageType = WebDragData::Item::StorageTypeFileSystemFile;
- item.fileSystemURL = it->url;
- item.fileSystemFileSize = it->size;
+ item.fileSystemURL = is_meta_data ? GURL() : it->url;
+ item.fileSystemFileSize = is_meta_data ? 0 : it->size;
item_list.push_back(item);
}
@@ -493,7 +501,8 @@ WebDragData DropDataToWebDragData(const DropData& drop_data) {
WebDragData::Item item;
item.storageType = WebDragData::Item::StorageTypeString;
item.stringType = it->first;
- item.stringData = it->second;
+ item.stringData =
+ is_meta_data ? WebString::fromUTF8("") : WebString(it->second);
item_list.push_back(item);
}
@@ -501,6 +510,7 @@ WebDragData DropDataToWebDragData(const DropData& drop_data) {
result.initialize();
result.setItems(item_list);
result.setFilesystemId(drop_data.filesystem_id);
+ result.setCanReadContent(!is_meta_data);
return result;
}
@@ -2382,10 +2392,7 @@ void RenderViewImpl::OnDragTargetDragEnter(const DropData& drop_data,
WebDragOperationsMask ops,
int key_modifiers) {
WebDragOperation operation = webview()->dragTargetDragEnter(
- DropDataToWebDragData(drop_data),
- ConvertWindowPointToViewport(client_point),
- screen_point,
- ops,
+ DropDataToWebDragData(drop_data, true), client_point, screen_point, ops,
key_modifiers);
Send(new DragHostMsg_UpdateDragCursor(GetRoutingID(), operation));
@@ -2408,11 +2415,12 @@ void RenderViewImpl::OnDragTargetDragLeave() {
webview()->dragTargetDragLeave();
}
-void RenderViewImpl::OnDragTargetDrop(const gfx::Point& client_point,
+void RenderViewImpl::OnDragTargetDrop(const DropData& drop_data,
+ const gfx::Point& client_point,
const gfx::Point& screen_point,
int key_modifiers) {
- webview()->dragTargetDrop(
- ConvertWindowPointToViewport(client_point), screen_point, key_modifiers);
+ webview()->dragTargetDrop(DropDataToWebDragData(drop_data, false),
+ client_point, screen_point, key_modifiers);
}
void RenderViewImpl::OnDragSourceEnded(const gfx::Point& client_point,

Powered by Google App Engine
This is Rietveld 408576698