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

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

Issue 10377119: Plumb event flags (shift/alt/ctrl modifiers) for drag/drop events to WebKit. (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
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"
11 #include "content/public/browser/render_view_host.h" 11 #include "content/public/browser/render_view_host.h"
12 #include "content/public/browser/render_widget_host.h" 12 #include "content/public/browser/render_widget_host.h"
13 #include "content/public/browser/render_widget_host_view.h" 13 #include "content/public/browser/render_widget_host_view.h"
14 #include "content/public/browser/web_contents_delegate.h" 14 #include "content/public/browser/web_contents_delegate.h"
15 #include "content/public/browser/web_contents_view_delegate.h" 15 #include "content/public/browser/web_contents_view_delegate.h"
16 #include "content/public/browser/web_drag_dest_delegate.h" 16 #include "content/public/browser/web_drag_dest_delegate.h"
17 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
17 #include "ui/aura/client/drag_drop_client.h" 18 #include "ui/aura/client/drag_drop_client.h"
18 #include "ui/aura/client/drag_drop_delegate.h" 19 #include "ui/aura/client/drag_drop_delegate.h"
19 #include "ui/aura/event.h" 20 #include "ui/aura/event.h"
20 #include "ui/aura/root_window.h" 21 #include "ui/aura/root_window.h"
21 #include "ui/aura/window.h" 22 #include "ui/aura/window.h"
22 #include "ui/base/clipboard/custom_data_helper.h" 23 #include "ui/base/clipboard/custom_data_helper.h"
23 #include "ui/base/dragdrop/drag_drop_types.h" 24 #include "ui/base/dragdrop/drag_drop_types.h"
24 #include "ui/base/dragdrop/os_exchange_data.h" 25 #include "ui/base/dragdrop/os_exchange_data.h"
25 #include "ui/base/dragdrop/os_exchange_data_provider_aura.h" 26 #include "ui/base/dragdrop/os_exchange_data_provider_aura.h"
26 #include "ui/base/hit_test.h" 27 #include "ui/base/hit_test.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 int web_drag_op = WebKit::WebDragOperationNone; 159 int web_drag_op = WebKit::WebDragOperationNone;
159 if (drag_op & ui::DragDropTypes::DRAG_COPY) 160 if (drag_op & ui::DragDropTypes::DRAG_COPY)
160 web_drag_op |= WebKit::WebDragOperationCopy; 161 web_drag_op |= WebKit::WebDragOperationCopy;
161 if (drag_op & ui::DragDropTypes::DRAG_MOVE) 162 if (drag_op & ui::DragDropTypes::DRAG_MOVE)
162 web_drag_op |= WebKit::WebDragOperationMove; 163 web_drag_op |= WebKit::WebDragOperationMove;
163 if (drag_op & ui::DragDropTypes::DRAG_LINK) 164 if (drag_op & ui::DragDropTypes::DRAG_LINK)
164 web_drag_op |= WebKit::WebDragOperationLink; 165 web_drag_op |= WebKit::WebDragOperationLink;
165 return (WebKit::WebDragOperationsMask) web_drag_op; 166 return (WebKit::WebDragOperationsMask) web_drag_op;
166 } 167 }
167 168
169 int ConvertAuraEventFlagsToWebInputEventModifiers(int aura_event_flags) {
170 int web_input_event_modifiers = 0;
171 if (aura_event_flags & ui::EF_SHIFT_DOWN)
172 web_input_event_modifiers |= WebKit::WebInputEvent::ShiftKey;
173 if (aura_event_flags & ui::EF_CONTROL_DOWN)
174 web_input_event_modifiers |= WebKit::WebInputEvent::ControlKey;
175 if (aura_event_flags & ui::EF_ALT_DOWN)
176 web_input_event_modifiers |= WebKit::WebInputEvent::AltKey;
177 if (aura_event_flags & ui::EF_COMMAND_DOWN)
178 web_input_event_modifiers |= WebKit::WebInputEvent::MetaKey;
179 return web_input_event_modifiers;
180 }
181
168 } // namespace 182 } // namespace
169 183
170 184
171 //////////////////////////////////////////////////////////////////////////////// 185 ////////////////////////////////////////////////////////////////////////////////
172 // WebContentsViewAura, public: 186 // WebContentsViewAura, public:
173 187
174 WebContentsViewAura::WebContentsViewAura( 188 WebContentsViewAura::WebContentsViewAura(
175 WebContentsImpl* web_contents, 189 WebContentsImpl* web_contents,
176 content::WebContentsViewDelegate* delegate) 190 content::WebContentsViewDelegate* delegate)
177 : web_contents_(web_contents), 191 : web_contents_(web_contents),
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 drag_dest_delegate_->DragInitialize(web_contents_); 593 drag_dest_delegate_->DragInitialize(web_contents_);
580 594
581 WebDropData drop_data; 595 WebDropData drop_data;
582 PrepareWebDropData(&drop_data, event.data()); 596 PrepareWebDropData(&drop_data, event.data());
583 WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); 597 WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations());
584 598
585 gfx::Point screen_pt = 599 gfx::Point screen_pt =
586 GetNativeView()->GetRootWindow()->last_mouse_location(); 600 GetNativeView()->GetRootWindow()->last_mouse_location();
587 current_rvh_for_drag_ = web_contents_->GetRenderViewHost(); 601 current_rvh_for_drag_ = web_contents_->GetRenderViewHost();
588 web_contents_->GetRenderViewHost()->DragTargetDragEnter( 602 web_contents_->GetRenderViewHost()->DragTargetDragEnter(
589 drop_data, event.location(), screen_pt, op); 603 drop_data, event.location(), screen_pt, op,
604 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags()));
590 605
591 if (drag_dest_delegate_) { 606 if (drag_dest_delegate_) {
592 drag_dest_delegate_->OnReceiveDragData(event.data()); 607 drag_dest_delegate_->OnReceiveDragData(event.data());
593 drag_dest_delegate_->OnDragEnter(); 608 drag_dest_delegate_->OnDragEnter();
594 } 609 }
595 } 610 }
596 611
597 int WebContentsViewAura::OnDragUpdated(const aura::DropTargetEvent& event) { 612 int WebContentsViewAura::OnDragUpdated(const aura::DropTargetEvent& event) {
598 DCHECK(current_rvh_for_drag_); 613 DCHECK(current_rvh_for_drag_);
599 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) 614 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost())
600 OnDragEntered(event); 615 OnDragEntered(event);
601 616
602 WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); 617 WebKit::WebDragOperationsMask op = ConvertToWeb(event.source_operations());
603 gfx::Point screen_pt = 618 gfx::Point screen_pt =
604 GetNativeView()->GetRootWindow()->last_mouse_location(); 619 GetNativeView()->GetRootWindow()->last_mouse_location();
605 web_contents_->GetRenderViewHost()->DragTargetDragOver( 620 web_contents_->GetRenderViewHost()->DragTargetDragOver(
606 event.location(), screen_pt, op); 621 event.location(), screen_pt, op,
622 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags()));
607 623
608 if (drag_dest_delegate_) 624 if (drag_dest_delegate_)
609 drag_dest_delegate_->OnDragOver(); 625 drag_dest_delegate_->OnDragOver();
610 626
611 return ConvertFromWeb(current_drag_op_); 627 return ConvertFromWeb(current_drag_op_);
612 } 628 }
613 629
614 void WebContentsViewAura::OnDragExited() { 630 void WebContentsViewAura::OnDragExited() {
615 DCHECK(current_rvh_for_drag_); 631 DCHECK(current_rvh_for_drag_);
616 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) 632 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost())
617 return; 633 return;
618 634
619 web_contents_->GetRenderViewHost()->DragTargetDragLeave(); 635 web_contents_->GetRenderViewHost()->DragTargetDragLeave();
620 if (drag_dest_delegate_) 636 if (drag_dest_delegate_)
621 drag_dest_delegate_->OnDragLeave(); 637 drag_dest_delegate_->OnDragLeave();
622 } 638 }
623 639
624 int WebContentsViewAura::OnPerformDrop(const aura::DropTargetEvent& event) { 640 int WebContentsViewAura::OnPerformDrop(const aura::DropTargetEvent& event) {
625 DCHECK(current_rvh_for_drag_); 641 DCHECK(current_rvh_for_drag_);
626 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) 642 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost())
627 OnDragEntered(event); 643 OnDragEntered(event);
628 644
629 web_contents_->GetRenderViewHost()->DragTargetDrop( 645 web_contents_->GetRenderViewHost()->DragTargetDrop(
630 event.location(), 646 event.location(),
631 GetNativeView()->GetRootWindow()->last_mouse_location()); 647 GetNativeView()->GetRootWindow()->last_mouse_location(),
648 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags()));
632 if (drag_dest_delegate_) 649 if (drag_dest_delegate_)
633 drag_dest_delegate_->OnDrop(); 650 drag_dest_delegate_->OnDrop();
634 return current_drag_op_; 651 return current_drag_op_;
635 } 652 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698