| Index: chrome/browser/ui/views/tab_contents/native_tab_contents_view_aura.cc
|
| diff --git a/chrome/browser/ui/views/tab_contents/native_tab_contents_view_aura.cc b/chrome/browser/ui/views/tab_contents/native_tab_contents_view_aura.cc
|
| index ffc0d9031f7fa1f1f7bb5607a0519083604a86b6..53ef9d02851ec10affc73aca4b61c4e2cc4f06eb 100644
|
| --- a/chrome/browser/ui/views/tab_contents/native_tab_contents_view_aura.cc
|
| +++ b/chrome/browser/ui/views/tab_contents/native_tab_contents_view_aura.cc
|
| @@ -13,6 +13,7 @@
|
| #include "content/public/browser/render_widget_host_view.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/browser/web_contents_view.h"
|
| +#include "content/public/browser/web_drag_dest_delegate.h"
|
| #include "ui/aura/client/drag_drop_client.h"
|
| #include "ui/aura/client/drag_drop_delegate.h"
|
| #include "ui/aura/event.h"
|
| @@ -163,7 +164,8 @@ NativeTabContentsViewAura::NativeTabContentsViewAura(
|
| internal::NativeTabContentsViewDelegate* delegate)
|
| : views::NativeWidgetAura(delegate->AsNativeWidgetDelegate()),
|
| delegate_(delegate),
|
| - current_drag_op_(WebKit::WebDragOperationNone) {
|
| + current_drag_op_(WebKit::WebDragOperationNone),
|
| + drag_dest_delegate_(NULL) {
|
| }
|
|
|
| NativeTabContentsViewAura::~NativeTabContentsViewAura() {
|
| @@ -193,6 +195,9 @@ void NativeTabContentsViewAura::InitNativeTabContentsView() {
|
| NOTIMPLEMENTED() << "Need to animate in";
|
| #endif
|
|
|
| + if (delegate_)
|
| + drag_dest_delegate_ = delegate_->GetDragDestDelegate();
|
| +
|
| // Hide the widget to prevent it from showing up on the root window. This is
|
| // needed for TabContentses that aren't immediately added to the tabstrip,
|
| // e.g. the Instant preview contents.
|
| @@ -314,6 +319,9 @@ bool NativeTabContentsViewAura::OnMouseEvent(aura::MouseEvent* event) {
|
|
|
| void NativeTabContentsViewAura::OnDragEntered(
|
| const aura::DropTargetEvent& event) {
|
| + if (drag_dest_delegate_)
|
| + drag_dest_delegate_->DragInitialize(GetWebContents());
|
| +
|
| WebDropData drop_data;
|
| PrepareWebDropData(&drop_data, event.data());
|
| WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations());
|
| @@ -322,6 +330,11 @@ void NativeTabContentsViewAura::OnDragEntered(
|
| GetNativeView()->GetRootWindow()->last_mouse_location();
|
| GetWebContents()->GetRenderViewHost()->DragTargetDragEnter(
|
| drop_data, event.location(), screen_pt, op);
|
| +
|
| + if (drag_dest_delegate_) {
|
| + drag_dest_delegate_->OnReceiveDragData(event.data());
|
| + drag_dest_delegate_->OnDragEnter();
|
| + }
|
| }
|
|
|
| int NativeTabContentsViewAura::OnDragUpdated(
|
| @@ -331,11 +344,17 @@ int NativeTabContentsViewAura::OnDragUpdated(
|
| GetNativeView()->GetRootWindow()->last_mouse_location();
|
| GetWebContents()->GetRenderViewHost()->DragTargetDragOver(
|
| event.location(), screen_pt, op);
|
| +
|
| + if (drag_dest_delegate_)
|
| + drag_dest_delegate_->OnDragOver();
|
| +
|
| return ConvertFromWeb(current_drag_op_);
|
| }
|
|
|
| void NativeTabContentsViewAura::OnDragExited() {
|
| GetWebContents()->GetRenderViewHost()->DragTargetDragLeave();
|
| + if (drag_dest_delegate_)
|
| + drag_dest_delegate_->OnDragLeave();
|
| }
|
|
|
| int NativeTabContentsViewAura::OnPerformDrop(
|
| @@ -343,6 +362,8 @@ int NativeTabContentsViewAura::OnPerformDrop(
|
| GetWebContents()->GetRenderViewHost()->DragTargetDrop(
|
| event.location(),
|
| GetNativeView()->GetRootWindow()->last_mouse_location());
|
| + if (drag_dest_delegate_)
|
| + drag_dest_delegate_->OnDrop();
|
| return current_drag_op_;
|
| }
|
|
|
|
|