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

Side by Side Diff: chrome/browser/ui/gtk/download/download_item_gtk.cc

Issue 9569011: Refactor dangerous download warning text generation into DownloadItemModel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use ui::ElideText() Created 8 years, 9 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 "chrome/browser/ui/gtk/download/download_item_gtk.h" 5 #include "chrome/browser/ui/gtk/download/download_item_gtk.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 theme_service_->UsingNativeTheme() ? NULL : &text_color); 559 theme_service_->UsingNativeTheme() ? NULL : &text_color);
560 gtk_label_set_text(GTK_LABEL(status_label_), status_text.c_str()); 560 gtk_label_set_text(GTK_LABEL(status_label_), status_text.c_str());
561 } 561 }
562 562
563 void DownloadItemGtk::UpdateDangerWarning() { 563 void DownloadItemGtk::UpdateDangerWarning() {
564 if (dangerous_prompt_) { 564 if (dangerous_prompt_) {
565 UpdateDangerIcon(); 565 UpdateDangerIcon();
566 566
567 // We create |dangerous_warning| as a wide string so we can more easily 567 // We create |dangerous_warning| as a wide string so we can more easily
568 // calculate its length in characters. 568 // calculate its length in characters.
569 string16 dangerous_warning; 569 string16 dangerous_warning =
570 570 download_model_->GetWarningText(gfx::Font(), kTextWidth);
571 // The dangerous download label text is different for different cases.
572 if (get_download()->GetDangerType() ==
573 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL) {
574 // TODO(noelutz): handle malicious content warning.
575 // Safebrowsing shows the download URL leads to malicious file.
576 dangerous_warning =
577 l10n_util::GetStringUTF16(IDS_PROMPT_MALICIOUS_DOWNLOAD_URL);
578 } else {
579 // It's a dangerous file type (e.g.: an executable).
580 DCHECK(get_download()->GetDangerType() ==
581 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE);
582 if (ChromeDownloadManagerDelegate::IsExtensionDownload(get_download())) {
583 dangerous_warning =
584 l10n_util::GetStringUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD_EXTENSION);
585 } else {
586 string16 elided_filename = ui::ElideFilename(
587 get_download()->GetTargetName(), gfx::Font(), kTextWidth);
588 dangerous_warning =
589 l10n_util::GetStringFUTF16(IDS_PROMPT_DANGEROUS_DOWNLOAD,
590 elided_filename);
591 }
592 }
593
594 if (theme_service_->UsingNativeTheme()) { 571 if (theme_service_->UsingNativeTheme()) {
595 gtk_util::SetLabelColor(dangerous_label_, NULL); 572 gtk_util::SetLabelColor(dangerous_label_, NULL);
596 } else { 573 } else {
597 GdkColor color = theme_service_->GetGdkColor( 574 GdkColor color = theme_service_->GetGdkColor(
598 ThemeService::COLOR_BOOKMARK_TEXT); 575 ThemeService::COLOR_BOOKMARK_TEXT);
599 gtk_util::SetLabelColor(dangerous_label_, &color); 576 gtk_util::SetLabelColor(dangerous_label_, &color);
600 } 577 }
601 578
602 gtk_label_set_text(GTK_LABEL(dangerous_label_), 579 gtk_label_set_text(GTK_LABEL(dangerous_label_),
603 UTF16ToUTF8(dangerous_warning).c_str()); 580 UTF16ToUTF8(dangerous_warning).c_str());
(...skipping 26 matching lines...) Expand all
630 // The width will depend on the text. We must do this each time we possibly 607 // The width will depend on the text. We must do this each time we possibly
631 // change the label above. 608 // change the label above.
632 gtk_widget_size_request(dangerous_hbox_.get(), &req); 609 gtk_widget_size_request(dangerous_hbox_.get(), &req);
633 dangerous_hbox_full_width_ = req.width; 610 dangerous_hbox_full_width_ = req.width;
634 dangerous_hbox_start_width_ = dangerous_hbox_full_width_ - label_width; 611 dangerous_hbox_start_width_ = dangerous_hbox_full_width_ - label_width;
635 } 612 }
636 } 613 }
637 614
638 void DownloadItemGtk::UpdateDangerIcon() { 615 void DownloadItemGtk::UpdateDangerIcon() {
639 if (theme_service_->UsingNativeTheme()) { 616 if (theme_service_->UsingNativeTheme()) {
640 const char* stock = get_download()->GetDangerType() == 617 const char* stock = download_model_->IsMalicious() ?
641 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL ? 618 GTK_STOCK_DIALOG_ERROR : GTK_STOCK_DIALOG_WARNING;
642 GTK_STOCK_DIALOG_ERROR : GTK_STOCK_DIALOG_WARNING;
643 gtk_image_set_from_stock( 619 gtk_image_set_from_stock(
644 GTK_IMAGE(dangerous_image_), stock, GTK_ICON_SIZE_SMALL_TOOLBAR); 620 GTK_IMAGE(dangerous_image_), stock, GTK_ICON_SIZE_SMALL_TOOLBAR);
645 } else { 621 } else {
646 // Set the warning icon. 622 // Set the warning icon.
647 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 623 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
648 int pixbuf_id = get_download()->GetDangerType() == 624 int pixbuf_id = download_model_->IsMalicious() ?
649 content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL ? 625 IDR_SAFEBROWSING_WARNING : IDR_WARNING;
650 IDR_SAFEBROWSING_WARNING : IDR_WARNING;
651 GdkPixbuf* download_pixbuf = rb.GetNativeImageNamed(pixbuf_id); 626 GdkPixbuf* download_pixbuf = rb.GetNativeImageNamed(pixbuf_id);
652 gtk_image_set_from_pixbuf(GTK_IMAGE(dangerous_image_), download_pixbuf); 627 gtk_image_set_from_pixbuf(GTK_IMAGE(dangerous_image_), download_pixbuf);
653 } 628 }
654 } 629 }
655 630
656 // static 631 // static
657 void DownloadItemGtk::InitNineBoxes() { 632 void DownloadItemGtk::InitNineBoxes() {
658 if (body_nine_box_normal_) 633 if (body_nine_box_normal_)
659 return; 634 return;
660 635
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 get_download()->DangerousDownloadValidated(); 889 get_download()->DangerousDownloadValidated();
915 } 890 }
916 891
917 void DownloadItemGtk::OnDangerousDecline(GtkWidget* button) { 892 void DownloadItemGtk::OnDangerousDecline(GtkWidget* button) {
918 UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download", 893 UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download",
919 base::Time::Now() - creation_time_); 894 base::Time::Now() - creation_time_);
920 if (get_download()->IsPartialDownload()) 895 if (get_download()->IsPartialDownload())
921 get_download()->Cancel(true); 896 get_download()->Cancel(true);
922 get_download()->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD); 897 get_download()->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD);
923 } 898 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698