| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/web_contents/web_contents_view_aura.h" | 5 #include "content/browser/web_contents/web_contents_view_aura.h" |
| 6 | 6 |
| 7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
| 8 #include "content/browser/renderer_host/render_view_host_factory.h" | 8 #include "content/browser/renderer_host/render_view_host_factory.h" |
| 9 #include "content/browser/web_contents/interstitial_page_impl.h" | 9 #include "content/browser/web_contents/interstitial_page_impl.h" |
| 10 #include "content/browser/web_contents/web_contents_impl.h" | 10 #include "content/browser/web_contents/web_contents_impl.h" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 // WebContentsViewAura, public: | 172 // WebContentsViewAura, public: |
| 173 | 173 |
| 174 WebContentsViewAura::WebContentsViewAura( | 174 WebContentsViewAura::WebContentsViewAura( |
| 175 WebContentsImpl* web_contents, | 175 WebContentsImpl* web_contents, |
| 176 content::WebContentsViewDelegate* delegate) | 176 content::WebContentsViewDelegate* delegate) |
| 177 : web_contents_(web_contents), | 177 : web_contents_(web_contents), |
| 178 view_(NULL), | 178 view_(NULL), |
| 179 delegate_(delegate), | 179 delegate_(delegate), |
| 180 current_drag_op_(WebKit::WebDragOperationNone), | 180 current_drag_op_(WebKit::WebDragOperationNone), |
| 181 close_tab_after_drag_ends_(false), | 181 close_tab_after_drag_ends_(false), |
| 182 drag_dest_delegate_(NULL) { | 182 drag_dest_delegate_(NULL), |
| 183 current_rvh_for_drag_(NULL) { |
| 183 } | 184 } |
| 184 | 185 |
| 185 WebContentsViewAura::~WebContentsViewAura() { | 186 WebContentsViewAura::~WebContentsViewAura() { |
| 186 // Window needs a valid delegate during its destructor, so we explicitly | 187 // Window needs a valid delegate during its destructor, so we explicitly |
| 187 // delete it here. | 188 // delete it here. |
| 188 window_.reset(); | 189 window_.reset(); |
| 189 } | 190 } |
| 190 | 191 |
| 191 //////////////////////////////////////////////////////////////////////////////// | 192 //////////////////////////////////////////////////////////////////////////////// |
| 192 // WebContentsViewAura, private: | 193 // WebContentsViewAura, private: |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 void WebContentsViewAura::OnDragEntered(const aura::DropTargetEvent& event) { | 577 void WebContentsViewAura::OnDragEntered(const aura::DropTargetEvent& event) { |
| 577 if (drag_dest_delegate_) | 578 if (drag_dest_delegate_) |
| 578 drag_dest_delegate_->DragInitialize(web_contents_); | 579 drag_dest_delegate_->DragInitialize(web_contents_); |
| 579 | 580 |
| 580 WebDropData drop_data; | 581 WebDropData drop_data; |
| 581 PrepareWebDropData(&drop_data, event.data()); | 582 PrepareWebDropData(&drop_data, event.data()); |
| 582 WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); | 583 WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); |
| 583 | 584 |
| 584 gfx::Point screen_pt = | 585 gfx::Point screen_pt = |
| 585 GetNativeView()->GetRootWindow()->last_mouse_location(); | 586 GetNativeView()->GetRootWindow()->last_mouse_location(); |
| 587 current_rvh_for_drag_ = web_contents_->GetRenderViewHost(); |
| 586 web_contents_->GetRenderViewHost()->DragTargetDragEnter( | 588 web_contents_->GetRenderViewHost()->DragTargetDragEnter( |
| 587 drop_data, event.location(), screen_pt, op); | 589 drop_data, event.location(), screen_pt, op); |
| 588 | 590 |
| 589 if (drag_dest_delegate_) { | 591 if (drag_dest_delegate_) { |
| 590 drag_dest_delegate_->OnReceiveDragData(event.data()); | 592 drag_dest_delegate_->OnReceiveDragData(event.data()); |
| 591 drag_dest_delegate_->OnDragEnter(); | 593 drag_dest_delegate_->OnDragEnter(); |
| 592 } | 594 } |
| 593 } | 595 } |
| 594 | 596 |
| 595 int WebContentsViewAura::OnDragUpdated(const aura::DropTargetEvent& event) { | 597 int WebContentsViewAura::OnDragUpdated(const aura::DropTargetEvent& event) { |
| 598 DCHECK(current_rvh_for_drag_); |
| 599 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) |
| 600 OnDragEntered(event); |
| 601 |
| 596 WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); | 602 WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); |
| 597 gfx::Point screen_pt = | 603 gfx::Point screen_pt = |
| 598 GetNativeView()->GetRootWindow()->last_mouse_location(); | 604 GetNativeView()->GetRootWindow()->last_mouse_location(); |
| 599 web_contents_->GetRenderViewHost()->DragTargetDragOver( | 605 web_contents_->GetRenderViewHost()->DragTargetDragOver( |
| 600 event.location(), screen_pt, op); | 606 event.location(), screen_pt, op); |
| 601 | 607 |
| 602 if (drag_dest_delegate_) | 608 if (drag_dest_delegate_) |
| 603 drag_dest_delegate_->OnDragOver(); | 609 drag_dest_delegate_->OnDragOver(); |
| 604 | 610 |
| 605 return ConvertFromWeb(current_drag_op_); | 611 return ConvertFromWeb(current_drag_op_); |
| 606 } | 612 } |
| 607 | 613 |
| 608 void WebContentsViewAura::OnDragExited() { | 614 void WebContentsViewAura::OnDragExited() { |
| 615 DCHECK(current_rvh_for_drag_); |
| 616 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) |
| 617 return; |
| 618 |
| 609 web_contents_->GetRenderViewHost()->DragTargetDragLeave(); | 619 web_contents_->GetRenderViewHost()->DragTargetDragLeave(); |
| 610 if (drag_dest_delegate_) | 620 if (drag_dest_delegate_) |
| 611 drag_dest_delegate_->OnDragLeave(); | 621 drag_dest_delegate_->OnDragLeave(); |
| 612 } | 622 } |
| 613 | 623 |
| 614 int WebContentsViewAura::OnPerformDrop(const aura::DropTargetEvent& event) { | 624 int WebContentsViewAura::OnPerformDrop(const aura::DropTargetEvent& event) { |
| 625 DCHECK(current_rvh_for_drag_); |
| 626 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) |
| 627 OnDragEntered(event); |
| 628 |
| 615 web_contents_->GetRenderViewHost()->DragTargetDrop( | 629 web_contents_->GetRenderViewHost()->DragTargetDrop( |
| 616 event.location(), | 630 event.location(), |
| 617 GetNativeView()->GetRootWindow()->last_mouse_location()); | 631 GetNativeView()->GetRootWindow()->last_mouse_location()); |
| 618 if (drag_dest_delegate_) | 632 if (drag_dest_delegate_) |
| 619 drag_dest_delegate_->OnDrop(); | 633 drag_dest_delegate_->OnDrop(); |
| 620 return current_drag_op_; | 634 return current_drag_op_; |
| 621 } | 635 } |
| OLD | NEW |