OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |