| Index: chrome/browser/ui/views/tabs/tab_strip.cc
|
| diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
|
| index fb7b300fa02953729cddb5c1817e1ef105e4f231..aeb81c0b73847b1ea338f6f1016af641e7119125 100644
|
| --- a/chrome/browser/ui/views/tabs/tab_strip.cc
|
| +++ b/chrome/browser/ui/views/tabs/tab_strip.cc
|
| @@ -990,6 +990,11 @@ void TabStrip::StopAnimating(bool layout) {
|
| DoLayout();
|
| }
|
|
|
| +void TabStrip::FileSupported(const GURL& url, bool supported) {
|
| + if (drop_info_->url == url)
|
| + drop_info_->file_supported = supported;
|
| +}
|
| +
|
| const ui::ListSelectionModel& TabStrip::GetSelectionModel() {
|
| return controller_->GetSelectionModel();
|
| }
|
| @@ -1413,10 +1418,28 @@ void TabStrip::OnDragEntered(const DropTargetEvent& event) {
|
| StopAnimating(true);
|
|
|
| UpdateDropIndex(event);
|
| +
|
| + GURL url;
|
| + string16 title;
|
| +
|
| + // Check whether the event data includes supported drop data.
|
| + if (event.data().GetURLAndTitle(&url, &title) && url.is_valid()) {
|
| + drop_info_->url = url;
|
| +
|
| + // For file:// URLs, kick off a MIME type request in case they're dropped.
|
| + if (url.SchemeIsFile())
|
| + controller()->CheckFileSupported(url);
|
| + } else {
|
| + drop_info_->file_supported = false;
|
| + }
|
| }
|
|
|
| int TabStrip::OnDragUpdated(const DropTargetEvent& event) {
|
| UpdateDropIndex(event);
|
| +
|
| + if (!drop_info_->file_supported)
|
| + return ui::DragDropTypes::DRAG_NONE;
|
| +
|
| return GetDropEffect(event);
|
| }
|
|
|
| @@ -1428,18 +1451,19 @@ int TabStrip::OnPerformDrop(const DropTargetEvent& event) {
|
| if (!drop_info_.get())
|
| return ui::DragDropTypes::DRAG_NONE;
|
|
|
| + if (!drop_info_->file_supported) {
|
| + SetDropIndex(-1, false);
|
| + return ui::DragDropTypes::DRAG_NONE;
|
| + }
|
| +
|
| const int drop_index = drop_info_->drop_index;
|
| const bool drop_before = drop_info_->drop_before;
|
| + const GURL drop_url = drop_info_->url;
|
|
|
| // Hide the drop indicator.
|
| SetDropIndex(-1, false);
|
|
|
| - GURL url;
|
| - string16 title;
|
| - if (!event.data().GetURLAndTitle(&url, &title) || !url.is_valid())
|
| - return ui::DragDropTypes::DRAG_NONE;
|
| -
|
| - controller()->PerformDrop(drop_before, drop_index, url);
|
| + controller()->PerformDrop(drop_before, drop_index, drop_url);
|
|
|
| return GetDropEffect(event);
|
| }
|
| @@ -2445,7 +2469,8 @@ TabStrip::DropInfo::DropInfo(int drop_index,
|
| views::Widget* context)
|
| : drop_index(drop_index),
|
| drop_before(drop_before),
|
| - point_down(point_down) {
|
| + point_down(point_down),
|
| + file_supported(true) {
|
| arrow_view = new views::ImageView;
|
| arrow_view->SetImage(GetDropArrowImage(point_down));
|
|
|
|
|