| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/ui/gtk/download_item_gtk.h" | 5 #include "chrome/browser/ui/gtk/download_item_gtk.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
| 9 #include "app/text_elider.h" | |
| 10 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 11 #include "base/callback.h" | 10 #include "base/callback.h" |
| 12 #include "base/metrics/histogram.h" | 11 #include "base/metrics/histogram.h" |
| 13 #include "base/string_util.h" | 12 #include "base/string_util.h" |
| 14 #include "base/time.h" | 13 #include "base/time.h" |
| 15 #include "base/utf_string_conversions.h" | 14 #include "base/utf_string_conversions.h" |
| 16 #include "chrome/browser/browser_process.h" | 15 #include "chrome/browser/browser_process.h" |
| 17 #include "chrome/browser/download/download_item.h" | 16 #include "chrome/browser/download/download_item.h" |
| 18 #include "chrome/browser/download/download_item_model.h" | 17 #include "chrome/browser/download/download_item_model.h" |
| 19 #include "chrome/browser/download/download_manager.h" | 18 #include "chrome/browser/download/download_manager.h" |
| 20 #include "chrome/browser/download/download_shelf.h" | 19 #include "chrome/browser/download/download_shelf.h" |
| 21 #include "chrome/browser/download/download_util.h" | 20 #include "chrome/browser/download/download_util.h" |
| 22 #include "chrome/browser/ui/browser.h" | 21 #include "chrome/browser/ui/browser.h" |
| 23 #include "chrome/browser/ui/gtk/custom_drag.h" | 22 #include "chrome/browser/ui/gtk/custom_drag.h" |
| 24 #include "chrome/browser/ui/gtk/download_shelf_gtk.h" | 23 #include "chrome/browser/ui/gtk/download_shelf_gtk.h" |
| 25 #include "chrome/browser/ui/gtk/gtk_theme_provider.h" | 24 #include "chrome/browser/ui/gtk/gtk_theme_provider.h" |
| 26 #include "chrome/browser/ui/gtk/gtk_util.h" | 25 #include "chrome/browser/ui/gtk/gtk_util.h" |
| 27 #include "chrome/browser/ui/gtk/menu_gtk.h" | 26 #include "chrome/browser/ui/gtk/menu_gtk.h" |
| 28 #include "chrome/browser/ui/gtk/nine_box.h" | 27 #include "chrome/browser/ui/gtk/nine_box.h" |
| 29 #include "chrome/common/notification_service.h" | 28 #include "chrome/common/notification_service.h" |
| 30 #include "gfx/canvas_skia_paint.h" | 29 #include "gfx/canvas_skia_paint.h" |
| 31 #include "gfx/color_utils.h" | 30 #include "gfx/color_utils.h" |
| 32 #include "gfx/font.h" | 31 #include "gfx/font.h" |
| 33 #include "gfx/skia_utils_gtk.h" | 32 #include "gfx/skia_utils_gtk.h" |
| 34 #include "grit/generated_resources.h" | 33 #include "grit/generated_resources.h" |
| 35 #include "grit/theme_resources.h" | 34 #include "grit/theme_resources.h" |
| 36 #include "third_party/skia/include/core/SkBitmap.h" | 35 #include "third_party/skia/include/core/SkBitmap.h" |
| 37 #include "ui/base/animation/slide_animation.h" | 36 #include "ui/base/animation/slide_animation.h" |
| 37 #include "ui/base/text/text_elider.h" |
| 38 | 38 |
| 39 namespace { | 39 namespace { |
| 40 | 40 |
| 41 // The width of the |menu_button_| widget. It has to be at least as wide as the | 41 // The width of the |menu_button_| widget. It has to be at least as wide as the |
| 42 // bitmap that we use to draw it, i.e. 16, but can be more. | 42 // bitmap that we use to draw it, i.e. 16, but can be more. |
| 43 const int kMenuButtonWidth = 16; | 43 const int kMenuButtonWidth = 16; |
| 44 | 44 |
| 45 // Padding on left and right of items in dangerous download prompt. | 45 // Padding on left and right of items in dangerous download prompt. |
| 46 const int kDangerousElementPadding = 3; | 46 const int kDangerousElementPadding = 3; |
| 47 | 47 |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 icon_filepath_ = get_download()->GetUserVerifiedFilePath(); | 512 icon_filepath_ = get_download()->GetUserVerifiedFilePath(); |
| 513 im->LoadIcon(icon_filepath_, | 513 im->LoadIcon(icon_filepath_, |
| 514 IconLoader::SMALL, &icon_consumer_, | 514 IconLoader::SMALL, &icon_consumer_, |
| 515 NewCallback(this, &DownloadItemGtk::OnLoadSmallIconComplete)); | 515 NewCallback(this, &DownloadItemGtk::OnLoadSmallIconComplete)); |
| 516 im->LoadIcon(icon_filepath_, | 516 im->LoadIcon(icon_filepath_, |
| 517 IconLoader::LARGE, &icon_consumer_, | 517 IconLoader::LARGE, &icon_consumer_, |
| 518 NewCallback(this, &DownloadItemGtk::OnLoadLargeIconComplete)); | 518 NewCallback(this, &DownloadItemGtk::OnLoadLargeIconComplete)); |
| 519 } | 519 } |
| 520 | 520 |
| 521 void DownloadItemGtk::UpdateTooltip() { | 521 void DownloadItemGtk::UpdateTooltip() { |
| 522 string16 elided_filename = gfx::ElideFilename( | 522 string16 elided_filename = ui::ElideFilename( |
| 523 get_download()->GetFileNameToReportUser(), | 523 get_download()->GetFileNameToReportUser(), |
| 524 gfx::Font(), kTooltipMaxWidth); | 524 gfx::Font(), kTooltipMaxWidth); |
| 525 gtk_widget_set_tooltip_text(body_.get(), | 525 gtk_widget_set_tooltip_text(body_.get(), |
| 526 UTF16ToUTF8(elided_filename).c_str()); | 526 UTF16ToUTF8(elided_filename).c_str()); |
| 527 } | 527 } |
| 528 | 528 |
| 529 void DownloadItemGtk::UpdateNameLabel() { | 529 void DownloadItemGtk::UpdateNameLabel() { |
| 530 // TODO(estade): This is at best an educated guess, since we don't actually | 530 // TODO(estade): This is at best an educated guess, since we don't actually |
| 531 // use gfx::Font() to draw the text. This is why we need to add so | 531 // use gfx::Font() to draw the text. This is why we need to add so |
| 532 // much padding when we set the size request. We need to either use gfx::Font | 532 // much padding when we set the size request. We need to either use gfx::Font |
| 533 // or somehow extend TextElider. | 533 // or somehow extend TextElider. |
| 534 string16 elided_filename = gfx::ElideFilename( | 534 string16 elided_filename = ui::ElideFilename( |
| 535 get_download()->GetFileNameToReportUser(), | 535 get_download()->GetFileNameToReportUser(), |
| 536 gfx::Font(), kTextWidth); | 536 gfx::Font(), kTextWidth); |
| 537 | 537 |
| 538 GdkColor color = theme_provider_->GetGdkColor( | 538 GdkColor color = theme_provider_->GetGdkColor( |
| 539 BrowserThemeProvider::COLOR_BOOKMARK_TEXT); | 539 BrowserThemeProvider::COLOR_BOOKMARK_TEXT); |
| 540 gtk_util::SetLabelColor(name_label_, theme_provider_->UseGtkTheme() ? | 540 gtk_util::SetLabelColor(name_label_, theme_provider_->UseGtkTheme() ? |
| 541 NULL : &color); | 541 NULL : &color); |
| 542 gtk_label_set_text(GTK_LABEL(name_label_), | 542 gtk_label_set_text(GTK_LABEL(name_label_), |
| 543 UTF16ToUTF8(elided_filename).c_str()); | 543 UTF16ToUTF8(elided_filename).c_str()); |
| 544 } | 544 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 575 | 575 |
| 576 void DownloadItemGtk::UpdateDangerWarning() { | 576 void DownloadItemGtk::UpdateDangerWarning() { |
| 577 if (dangerous_prompt_) { | 577 if (dangerous_prompt_) { |
| 578 // We create |dangerous_warning| as a wide string so we can more easily | 578 // We create |dangerous_warning| as a wide string so we can more easily |
| 579 // calculate its length in characters. | 579 // calculate its length in characters. |
| 580 string16 dangerous_warning; | 580 string16 dangerous_warning; |
| 581 if (get_download()->is_extension_install()) { | 581 if (get_download()->is_extension_install()) { |
| 582 dangerous_warning = | 582 dangerous_warning = |
| 583 l10n_util::GetStringUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD_EXTENSION); | 583 l10n_util::GetStringUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD_EXTENSION); |
| 584 } else { | 584 } else { |
| 585 string16 elided_filename = gfx::ElideFilename( | 585 string16 elided_filename = ui::ElideFilename( |
| 586 get_download()->target_name(), gfx::Font(), kTextWidth); | 586 get_download()->target_name(), gfx::Font(), kTextWidth); |
| 587 | 587 |
| 588 dangerous_warning = | 588 dangerous_warning = |
| 589 l10n_util::GetStringFUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD, | 589 l10n_util::GetStringFUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD, |
| 590 elided_filename); | 590 elided_filename); |
| 591 } | 591 } |
| 592 | 592 |
| 593 if (theme_provider_->UseGtkTheme()) { | 593 if (theme_provider_->UseGtkTheme()) { |
| 594 gtk_image_set_from_stock(GTK_IMAGE(dangerous_image_), | 594 gtk_image_set_from_stock(GTK_IMAGE(dangerous_image_), |
| 595 GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_SMALL_TOOLBAR); | 595 GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_SMALL_TOOLBAR); |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 get_download()->DangerousDownloadValidated(); | 870 get_download()->DangerousDownloadValidated(); |
| 871 } | 871 } |
| 872 | 872 |
| 873 void DownloadItemGtk::OnDangerousDecline(GtkWidget* button) { | 873 void DownloadItemGtk::OnDangerousDecline(GtkWidget* button) { |
| 874 UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download", | 874 UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download", |
| 875 base::Time::Now() - creation_time_); | 875 base::Time::Now() - creation_time_); |
| 876 if (get_download()->state() == DownloadItem::IN_PROGRESS) | 876 if (get_download()->state() == DownloadItem::IN_PROGRESS) |
| 877 get_download()->Cancel(true); | 877 get_download()->Cancel(true); |
| 878 get_download()->Remove(true); | 878 get_download()->Remove(true); |
| 879 } | 879 } |
| OLD | NEW |