From e654ebb8c17aff8d68284cbe9933aeab33c4a2a9 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Tue, 6 May 2014 21:03:13 +0000 Subject: [PATCH] Add OnDragEnter support for Aura (issue #1262). git-svn-id: https://chromiumembedded.googlecode.com/svn/branches/1750@1700 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- patch/patch.cfg | 7 +++ patch/patches/web_contents_1262.patch | 63 +++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 patch/patches/web_contents_1262.patch diff --git a/patch/patch.cfg b/patch/patch.cfg index ba2c35856..b4c1cf73b 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -109,6 +109,13 @@ patches = [ 'name': 'prefs_webkit_1161', 'path': '../webkit/', }, + { + # Add WebContentsDelegate::CanDragEnter support for Aura. + # http://code.google.com/p/chromiumembedded/issues/detail?id=1262 + # https://codereview.chromium.org/267113008/ + 'name': 'web_contents_1262', + 'path': '../content/browser/web_contents/', + }, { # Disable scollbar bounce and overlay on OS X. # http://code.google.com/p/chromiumembedded/issues/detail?id=364 diff --git a/patch/patches/web_contents_1262.patch b/patch/patches/web_contents_1262.patch new file mode 100644 index 000000000..932022dac --- /dev/null +++ b/patch/patches/web_contents_1262.patch @@ -0,0 +1,63 @@ +diff --git web_contents_view_aura.cc web_contents_view_aura.cc +index 484d04b..43861a9 100644 +--- web_contents_view_aura.cc ++++ web_contents_view_aura.cc +@@ -1728,17 +1728,24 @@ void WebContentsViewAura::OnMouseEvent(ui::MouseEvent* event) { + // WebContentsViewAura, aura::client::DragDropDelegate implementation: + + void WebContentsViewAura::OnDragEntered(const ui::DropTargetEvent& event) { +- if (drag_dest_delegate_) +- drag_dest_delegate_->DragInitialize(web_contents_); +- ++ current_rvh_for_drag_ = web_contents_->GetRenderViewHost(); + current_drop_data_.reset(new DropData()); + + PrepareDropData(current_drop_data_.get(), event.data()); + blink::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); + ++ if (!web_contents_->GetDelegate()->CanDragEnter(web_contents_, ++ *current_drop_data_.get(), ++ op)) { ++ current_drop_data_.reset(NULL); ++ return; ++ } ++ ++ if (drag_dest_delegate_) ++ drag_dest_delegate_->DragInitialize(web_contents_); ++ + gfx::Point screen_pt = + gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); +- current_rvh_for_drag_ = web_contents_->GetRenderViewHost(); + web_contents_->GetRenderViewHost()->DragTargetDragEnter( + *current_drop_data_.get(), event.location(), screen_pt, op, + ConvertAuraEventFlagsToWebInputEventModifiers(event.flags())); +@@ -1754,6 +1761,9 @@ int WebContentsViewAura::OnDragUpdated(const ui::DropTargetEvent& event) { + if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) + OnDragEntered(event); + ++ if (!current_drop_data_) ++ return ui::DragDropTypes::DRAG_NONE; ++ + blink::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); + gfx::Point screen_pt = + gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); +@@ -1772,6 +1782,9 @@ void WebContentsViewAura::OnDragExited() { + if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) + return; + ++ if (!current_drop_data_) ++ return; ++ + web_contents_->GetRenderViewHost()->DragTargetDragLeave(); + if (drag_dest_delegate_) + drag_dest_delegate_->OnDragLeave(); +@@ -1784,6 +1797,9 @@ int WebContentsViewAura::OnPerformDrop(const ui::DropTargetEvent& event) { + if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) + OnDragEntered(event); + ++ if (!current_drop_data_) ++ return ui::DragDropTypes::DRAG_NONE; ++ + web_contents_->GetRenderViewHost()->DragTargetDrop( + event.location(), + gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(),