Index: chrome/browser/download/drag_download_item_views.cc |
diff --git a/chrome/browser/download/drag_download_item_views.cc b/chrome/browser/download/drag_download_item_views.cc |
index c5f81094656d0310684d59ecca8e9ff56fc4600d..4ee1b6d8231ec655b7a8dbfc1f4f0c1d0a6d84ce 100644 |
--- a/chrome/browser/download/drag_download_item_views.cc |
+++ b/chrome/browser/download/drag_download_item_views.cc |
@@ -14,13 +14,13 @@ |
#include "ui/aura/window.h" |
#include "ui/aura/window_event_dispatcher.h" |
#include "ui/base/dragdrop/drag_drop_types.h" |
-#include "ui/base/dragdrop/drag_utils.h" |
#include "ui/base/dragdrop/file_info.h" |
#include "ui/base/dragdrop/os_exchange_data.h" |
#include "ui/display/screen.h" |
#include "ui/gfx/geometry/point.h" |
#include "ui/gfx/image/image.h" |
#include "ui/gfx/image/image_skia.h" |
+#include "ui/views/button_drag_utils.h" |
#include "ui/views/widget/widget.h" |
#include "url/gurl.h" |
@@ -34,13 +34,17 @@ void DragDownloadItem(const content::DownloadItem* download, |
DCHECK(download); |
DCHECK_EQ(content::DownloadItem::COMPLETE, download->GetState()); |
+ aura::Window* root_window = view->GetRootWindow(); |
+ if (!root_window || !aura::client::GetDragDropClient(root_window)) |
sky
2017/03/16 03:38:05
Under what circumstances would there be no root or
Evan Stade
2017/03/16 14:14:50
I have no idea, I just moved the check from below
|
+ return; |
+ |
// Set up our OLE machinery |
ui::OSExchangeData data; |
- drag_utils::CreateDragImageForFile( |
- download->GetFileNameToReportUser(), |
- icon ? icon->AsImageSkia() : gfx::ImageSkia(), |
- &data); |
+ button_drag_utils::SetDragImage( |
+ GURL(), download->GetFileNameToReportUser().BaseName().LossyDisplayName(), |
+ icon ? icon->AsImageSkia() : gfx::ImageSkia(), nullptr, |
+ *views::Widget::GetTopLevelWidgetForNativeView(view), &data); |
Evan Stade
2017/03/16 00:03:30
key to fixing the crash (which occurred for chrome
|
base::FilePath full_path = download->GetTargetFilePath(); |
#if defined(OS_CHROMEOS) |
@@ -57,10 +61,6 @@ void DragDownloadItem(const content::DownloadItem* download, |
ui::FileInfo(full_path, download->GetFileNameToReportUser())); |
data.SetFilenames(file_infos); |
- aura::Window* root_window = view->GetRootWindow(); |
- if (!root_window || !aura::client::GetDragDropClient(root_window)) |
- return; |
- |
gfx::Point location = display::Screen::GetScreen()->GetCursorScreenPoint(); |
// TODO(varunjain): Properly determine and send DRAG_EVENT_SOURCE below. |
aura::client::GetDragDropClient(root_window)->StartDragAndDrop( |