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

Side by Side Diff: content/browser/web_contents/web_contents_view_aura.cc

Issue 10388105: aura: Fix a couple of bug (really the same bug at two different places) for drag (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: patch Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/browser/web_contents/web_contents_view_aura.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_view_aura.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698