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

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

Issue 267113008: Call WebContentsDelegate::CanDragEnter from WebContentsViewAura. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 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 | « no previous file | 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/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 1399 matching lines...) Expand 10 before | Expand all | Expand 10 after
1410 break; 1410 break;
1411 default: 1411 default:
1412 break; 1412 break;
1413 } 1413 }
1414 } 1414 }
1415 1415
1416 //////////////////////////////////////////////////////////////////////////////// 1416 ////////////////////////////////////////////////////////////////////////////////
1417 // WebContentsViewAura, aura::client::DragDropDelegate implementation: 1417 // WebContentsViewAura, aura::client::DragDropDelegate implementation:
1418 1418
1419 void WebContentsViewAura::OnDragEntered(const ui::DropTargetEvent& event) { 1419 void WebContentsViewAura::OnDragEntered(const ui::DropTargetEvent& event) {
1420 if (drag_dest_delegate_) 1420 current_rvh_for_drag_ = web_contents_->GetRenderViewHost();
1421 drag_dest_delegate_->DragInitialize(web_contents_);
1422
1423 current_drop_data_.reset(new DropData()); 1421 current_drop_data_.reset(new DropData());
1424 1422
1425 PrepareDropData(current_drop_data_.get(), event.data()); 1423 PrepareDropData(current_drop_data_.get(), event.data());
1426 blink::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); 1424 blink::WebDragOperationsMask op = ConvertToWeb(event.source_operations());
1427 1425
1426 // Give the delegate an opportunity to cancel the drag.
1427 if (!web_contents_->GetDelegate()->CanDragEnter(web_contents_,
1428 *current_drop_data_.get(),
1429 op)) {
1430 current_drop_data_.reset(NULL);
1431 return;
1432 }
1433
1434 if (drag_dest_delegate_)
1435 drag_dest_delegate_->DragInitialize(web_contents_);
1436
1428 gfx::Point screen_pt = 1437 gfx::Point screen_pt =
1429 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); 1438 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint();
1430 current_rvh_for_drag_ = web_contents_->GetRenderViewHost();
1431 web_contents_->GetRenderViewHost()->DragTargetDragEnter( 1439 web_contents_->GetRenderViewHost()->DragTargetDragEnter(
1432 *current_drop_data_.get(), event.location(), screen_pt, op, 1440 *current_drop_data_.get(), event.location(), screen_pt, op,
1433 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags())); 1441 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags()));
1434 1442
1435 if (drag_dest_delegate_) { 1443 if (drag_dest_delegate_) {
1436 drag_dest_delegate_->OnReceiveDragData(event.data()); 1444 drag_dest_delegate_->OnReceiveDragData(event.data());
1437 drag_dest_delegate_->OnDragEnter(); 1445 drag_dest_delegate_->OnDragEnter();
1438 } 1446 }
1439 } 1447 }
1440 1448
1441 int WebContentsViewAura::OnDragUpdated(const ui::DropTargetEvent& event) { 1449 int WebContentsViewAura::OnDragUpdated(const ui::DropTargetEvent& event) {
1442 DCHECK(current_rvh_for_drag_); 1450 DCHECK(current_rvh_for_drag_);
1443 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) 1451 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost())
1444 OnDragEntered(event); 1452 OnDragEntered(event);
1445 1453
1454 if (!current_drop_data_)
1455 return ui::DragDropTypes::DRAG_NONE;
1456
1446 blink::WebDragOperationsMask op = ConvertToWeb(event.source_operations()); 1457 blink::WebDragOperationsMask op = ConvertToWeb(event.source_operations());
1447 gfx::Point screen_pt = 1458 gfx::Point screen_pt =
1448 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(); 1459 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint();
1449 web_contents_->GetRenderViewHost()->DragTargetDragOver( 1460 web_contents_->GetRenderViewHost()->DragTargetDragOver(
1450 event.location(), screen_pt, op, 1461 event.location(), screen_pt, op,
1451 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags())); 1462 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags()));
1452 1463
1453 if (drag_dest_delegate_) 1464 if (drag_dest_delegate_)
1454 drag_dest_delegate_->OnDragOver(); 1465 drag_dest_delegate_->OnDragOver();
1455 1466
1456 return ConvertFromWeb(current_drag_op_); 1467 return ConvertFromWeb(current_drag_op_);
1457 } 1468 }
1458 1469
1459 void WebContentsViewAura::OnDragExited() { 1470 void WebContentsViewAura::OnDragExited() {
1460 DCHECK(current_rvh_for_drag_); 1471 DCHECK(current_rvh_for_drag_);
1461 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) 1472 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost())
1462 return; 1473 return;
1463 1474
1475 if (!current_drop_data_)
1476 return;
1477
1464 web_contents_->GetRenderViewHost()->DragTargetDragLeave(); 1478 web_contents_->GetRenderViewHost()->DragTargetDragLeave();
1465 if (drag_dest_delegate_) 1479 if (drag_dest_delegate_)
1466 drag_dest_delegate_->OnDragLeave(); 1480 drag_dest_delegate_->OnDragLeave();
1467 1481
1468 current_drop_data_.reset(); 1482 current_drop_data_.reset();
1469 } 1483 }
1470 1484
1471 int WebContentsViewAura::OnPerformDrop(const ui::DropTargetEvent& event) { 1485 int WebContentsViewAura::OnPerformDrop(const ui::DropTargetEvent& event) {
1472 DCHECK(current_rvh_for_drag_); 1486 DCHECK(current_rvh_for_drag_);
1473 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost()) 1487 if (current_rvh_for_drag_ != web_contents_->GetRenderViewHost())
1474 OnDragEntered(event); 1488 OnDragEntered(event);
1475 1489
1490 if (!current_drop_data_)
1491 return ui::DragDropTypes::DRAG_NONE;
1492
1476 web_contents_->GetRenderViewHost()->DragTargetDrop( 1493 web_contents_->GetRenderViewHost()->DragTargetDrop(
1477 event.location(), 1494 event.location(),
1478 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(), 1495 gfx::Screen::GetScreenFor(GetNativeView())->GetCursorScreenPoint(),
1479 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags())); 1496 ConvertAuraEventFlagsToWebInputEventModifiers(event.flags()));
1480 if (drag_dest_delegate_) 1497 if (drag_dest_delegate_)
1481 drag_dest_delegate_->OnDrop(); 1498 drag_dest_delegate_->OnDrop();
1482 current_drop_data_.reset(); 1499 current_drop_data_.reset();
1483 return ConvertFromWeb(current_drag_op_); 1500 return ConvertFromWeb(current_drag_op_);
1484 } 1501 }
1485 1502
1486 } // namespace content 1503 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698