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

Unified Diff: content/browser/web_contents/web_contents_view_aura.h

Issue 2505113002: Drag-and-drop: Target drag messages to specific RenderWidgets. (Closed)
Patch Set: Small fix. Created 4 years, 1 month 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/browser/web_contents/web_contents_view_aura.h
diff --git a/content/browser/web_contents/web_contents_view_aura.h b/content/browser/web_contents/web_contents_view_aura.h
index ae423485ca16667d7941784554b99d7eaa002e51..d032f18620cd7d50b624759801efa2fde9e192d0 100644
--- a/content/browser/web_contents/web_contents_view_aura.h
+++ b/content/browser/web_contents/web_contents_view_aura.h
@@ -11,6 +11,7 @@
#include "base/gtest_prod_util.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
#include "content/browser/renderer_host/overscroll_controller_delegate.h"
#include "content/browser/renderer_host/render_view_host_delegate_view.h"
#include "content/browser/web_contents/web_contents_view.h"
@@ -31,6 +32,7 @@ class TouchSelectionController;
namespace content {
class GestureNavSimple;
class OverscrollNavigationOverlay;
+class RenderWidgetHostImpl;
class RenderWidgetHostViewAura;
class TouchSelectionControllerClientAura;
class WebContentsViewDelegate;
@@ -117,7 +119,8 @@ class CONTENT_EXPORT WebContentsViewAura
blink::WebDragOperationsMask operations,
const gfx::ImageSkia& image,
const gfx::Vector2d& image_offset,
- const DragEventSourceInfo& event_info) override;
+ const DragEventSourceInfo& event_info,
+ RenderWidgetHostImpl* source_rwh) override;
void UpdateDragCursor(blink::WebDragOperation operation) override;
void GotFocus() override;
void TakeFocus(bool reverse) override;
@@ -191,12 +194,19 @@ class CONTENT_EXPORT WebContentsViewAura
WebDragDestDelegate* drag_dest_delegate_;
- // We keep track of the render view host we're dragging over. If it changes
- // during a drag, we need to re-send the DragEnter message. WARNING:
- // this pointer should never be dereferenced. We only use it for comparing
- // pointers.
+ // We keep track of the RenderWidgetHost we're dragging over. If it changes
+ // during a drag, we need to re-send the DragEnter message.
+ base::WeakPtr<RenderWidgetHostImpl> current_rwh_for_drag_;
+
+ // We also keep track of the RenderViewHost we're dragging over to avoid
+ // sending the drag exited message after leaving the current
+ // view. |current_rvh_for_drag_| should not be dereferenced.
void* current_rvh_for_drag_;
+ // We keep track of the RenderWidgetHost from which the current drag started,
+ // in order to properly route the drag end message to it.
+ base::WeakPtr<RenderWidgetHostImpl> drag_start_rwh_;
+
// The overscroll gesture currently in progress.
OverscrollMode current_overscroll_gesture_;

Powered by Google App Engine
This is Rietveld 408576698