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/views/download/download_item_view.h" | 5 #include "chrome/browser/ui/views/download/download_item_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 // WARNING: all end states after this point delete |this|. | 550 // WARNING: all end states after this point delete |this|. |
551 DCHECK_EQ(discard_button_, sender); | 551 DCHECK_EQ(discard_button_, sender); |
552 if (model_.IsMalicious()) { | 552 if (model_.IsMalicious()) { |
553 UMA_HISTOGRAM_LONG_TIMES("clickjacking.dismiss_download", warning_duration); | 553 UMA_HISTOGRAM_LONG_TIMES("clickjacking.dismiss_download", warning_duration); |
554 shelf_->RemoveDownloadView(this); | 554 shelf_->RemoveDownloadView(this); |
555 return; | 555 return; |
556 } | 556 } |
557 UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download", warning_duration); | 557 UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download", warning_duration); |
558 if (model_.ShouldAllowDownloadFeedback() && | 558 if (model_.ShouldAllowDownloadFeedback() && |
559 !shelf_->browser()->profile()->IsOffTheRecord()) { | 559 !shelf_->browser()->profile()->IsOffTheRecord()) { |
560 DownloadFeedbackDialogView::DownloadReportingStatus pref_value = | 560 if (!shelf_->browser()->profile()->GetPrefs()->HasPrefPath( |
561 static_cast<DownloadFeedbackDialogView::DownloadReportingStatus>( | 561 prefs::kSafeBrowsingDownloadFeedbackEnabled)) { |
562 shelf_->browser()->profile()->GetPrefs()->GetInteger( | 562 // Show dialog, because the dialog hasn't been shown before. |
563 prefs::kSafeBrowsingDownloadReportingEnabled)); | 563 DownloadFeedbackDialogView::Show( |
564 switch (pref_value) { | 564 shelf_->get_parent()->GetNativeWindow(), |
565 case DownloadFeedbackDialogView::kDialogNotYetShown: | 565 shelf_->browser()->profile(), |
566 DownloadFeedbackDialogView::Show( | 566 base::Bind( |
567 shelf_->get_parent()->GetNativeWindow(), | 567 &DownloadItemView::PossiblySubmitDownloadToFeedbackService, |
568 shelf_->browser()->profile(), | 568 weak_ptr_factory_.GetWeakPtr())); |
569 base::Bind( | 569 } else { |
570 &DownloadItemView::PossiblySubmitDownloadToFeedbackService, | 570 PossiblySubmitDownloadToFeedbackService( |
571 weak_ptr_factory_.GetWeakPtr())); | 571 shelf_->browser()->profile()->GetPrefs()->GetBoolean( |
572 break; | 572 prefs::kSafeBrowsingDownloadFeedbackEnabled)); |
573 | |
574 case DownloadFeedbackDialogView::kDownloadReportingEnabled: | |
575 case DownloadFeedbackDialogView::kDownloadReportingDisabled: | |
576 PossiblySubmitDownloadToFeedbackService(pref_value); | |
577 break; | |
578 | |
579 case DownloadFeedbackDialogView::kMaxValue: | |
580 NOTREACHED(); | |
581 } | 573 } |
582 return; | 574 return; |
583 } | 575 } |
584 download()->Remove(); | 576 download()->Remove(); |
585 } | 577 } |
586 | 578 |
587 void DownloadItemView::AnimationProgressed(const gfx::Animation* animation) { | 579 void DownloadItemView::AnimationProgressed(const gfx::Animation* animation) { |
588 // We don't care if what animation (body button/drop button/complete), | 580 // We don't care if what animation (body button/drop button/complete), |
589 // is calling back, as they all have to go through the same paint call. | 581 // is calling back, as they all have to go through the same paint call. |
590 SchedulePaint(); | 582 SchedulePaint(); |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
930 download_protection_service->feedback_service()->BeginFeedbackForDownload( | 922 download_protection_service->feedback_service()->BeginFeedbackForDownload( |
931 download()); | 923 download()); |
932 // WARNING: we are deleted at this point. Don't access 'this'. | 924 // WARNING: we are deleted at this point. Don't access 'this'. |
933 return true; | 925 return true; |
934 #else | 926 #else |
935 NOTREACHED(); | 927 NOTREACHED(); |
936 return false; | 928 return false; |
937 #endif | 929 #endif |
938 } | 930 } |
939 | 931 |
940 void DownloadItemView::PossiblySubmitDownloadToFeedbackService( | 932 void DownloadItemView::PossiblySubmitDownloadToFeedbackService(bool enabled) { |
941 DownloadFeedbackDialogView::DownloadReportingStatus status) { | 933 if (!enabled || !SubmitDownloadToFeedbackService()) |
942 if (status != DownloadFeedbackDialogView::kDownloadReportingEnabled || | |
943 !SubmitDownloadToFeedbackService()) { | |
944 download()->Remove(); | 934 download()->Remove(); |
945 } | |
946 // WARNING: 'this' is deleted at this point. Don't access 'this'. | 935 // WARNING: 'this' is deleted at this point. Don't access 'this'. |
947 } | 936 } |
948 | 937 |
949 void DownloadItemView::LoadIcon() { | 938 void DownloadItemView::LoadIcon() { |
950 IconManager* im = g_browser_process->icon_manager(); | 939 IconManager* im = g_browser_process->icon_manager(); |
951 last_download_item_path_ = download()->GetTargetFilePath(); | 940 last_download_item_path_ = download()->GetTargetFilePath(); |
952 im->LoadIcon(last_download_item_path_, | 941 im->LoadIcon(last_download_item_path_, |
953 IconLoader::SMALL, | 942 IconLoader::SMALL, |
954 base::Bind(&DownloadItemView::OnExtractIconComplete, | 943 base::Bind(&DownloadItemView::OnExtractIconComplete, |
955 base::Unretained(this)), | 944 base::Unretained(this)), |
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1349 void DownloadItemView::AnimateStateTransition(State from, State to, | 1338 void DownloadItemView::AnimateStateTransition(State from, State to, |
1350 gfx::SlideAnimation* animation) { | 1339 gfx::SlideAnimation* animation) { |
1351 if (from == NORMAL && to == HOT) { | 1340 if (from == NORMAL && to == HOT) { |
1352 animation->Show(); | 1341 animation->Show(); |
1353 } else if (from == HOT && to == NORMAL) { | 1342 } else if (from == HOT && to == NORMAL) { |
1354 animation->Hide(); | 1343 animation->Hide(); |
1355 } else if (from != to) { | 1344 } else if (from != to) { |
1356 animation->Reset((to == HOT) ? 1.0 : 0.0); | 1345 animation->Reset((to == HOT) ? 1.0 : 0.0); |
1357 } | 1346 } |
1358 } | 1347 } |
OLD | NEW |