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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_blocking_page.cc

Issue 572023003: Remove TYPE_MALWARE_AND_PHISHING from Safe Browsing blocking page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « chrome/browser/safe_browsing/safe_browsing_blocking_page.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Implementation of the SafeBrowsingBlockingPage class. 5 // Implementation of the SafeBrowsingBlockingPage class.
6 6
7 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" 7 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h"
8 8
9 #include <string> 9 #include <string>
10 10
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 const char kNavigatedAwayMetaCommand[] = "closed"; 108 const char kNavigatedAwayMetaCommand[] = "closed";
109 109
110 // Other constants used to communicate with the JavaScript. 110 // Other constants used to communicate with the JavaScript.
111 const char kBoxChecked[] = "boxchecked"; 111 const char kBoxChecked[] = "boxchecked";
112 const char kDisplayCheckBox[] = "displaycheckbox"; 112 const char kDisplayCheckBox[] = "displaycheckbox";
113 113
114 // Constants for the Experience Sampling instrumentation. 114 // Constants for the Experience Sampling instrumentation.
115 #if defined(ENABLE_EXTENSIONS) 115 #if defined(ENABLE_EXTENSIONS)
116 const char kEventNameMalware[] = "safebrowsing_interstitial_"; 116 const char kEventNameMalware[] = "safebrowsing_interstitial_";
117 const char kEventNamePhishing[] = "phishing_interstitial_"; 117 const char kEventNamePhishing[] = "phishing_interstitial_";
118 const char kEventNameMalwareAndPhishing[] =
119 "malware_and_phishing_interstitial_";
120 const char kEventNameOther[] = "safebrowsing_other_interstitial_"; 118 const char kEventNameOther[] = "safebrowsing_other_interstitial_";
121 #endif 119 #endif
122 120
123 base::LazyInstance<SafeBrowsingBlockingPage::UnsafeResourceMap> 121 base::LazyInstance<SafeBrowsingBlockingPage::UnsafeResourceMap>
124 g_unsafe_resource_map = LAZY_INSTANCE_INITIALIZER; 122 g_unsafe_resource_map = LAZY_INSTANCE_INITIALIZER;
125 123
126 // This enum is used for a histogram. Don't reorder, delete, or insert 124 // This enum is used for a histogram. Don't reorder, delete, or insert
127 // elements. New elements should be added before MAX_ACTION only. 125 // elements. New elements should be added before MAX_ACTION only.
128 enum DetailedDecision { 126 enum DetailedDecision {
129 MALWARE_SHOW_NEW_SITE = 0, 127 MALWARE_SHOW_NEW_SITE = 0,
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 if (threat_type == SB_THREAT_TYPE_URL_MALWARE || 198 if (threat_type == SB_THREAT_TYPE_URL_MALWARE ||
201 threat_type == SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL) { 199 threat_type == SB_THREAT_TYPE_CLIENT_SIDE_MALWARE_URL) {
202 malware = true; 200 malware = true;
203 } else { 201 } else {
204 DCHECK(threat_type == SB_THREAT_TYPE_URL_PHISHING || 202 DCHECK(threat_type == SB_THREAT_TYPE_URL_PHISHING ||
205 threat_type == SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL); 203 threat_type == SB_THREAT_TYPE_CLIENT_SIDE_PHISHING_URL);
206 phishing = true; 204 phishing = true;
207 } 205 }
208 } 206 }
209 DCHECK(phishing || malware); 207 DCHECK(phishing || malware);
210 if (malware && phishing) 208 if (malware)
211 interstitial_type_ = TYPE_MALWARE_AND_PHISHING;
212 else if (malware)
213 interstitial_type_ = TYPE_MALWARE; 209 interstitial_type_ = TYPE_MALWARE;
214 else 210 else
215 interstitial_type_ = TYPE_PHISHING; 211 interstitial_type_ = TYPE_PHISHING;
216 212
217 RecordUserAction(SHOW); 213 RecordUserAction(SHOW);
218 HistoryService* history_service = HistoryServiceFactory::GetForProfile( 214 HistoryService* history_service = HistoryServiceFactory::GetForProfile(
219 Profile::FromBrowserContext(web_contents->GetBrowserContext()), 215 Profile::FromBrowserContext(web_contents->GetBrowserContext()),
220 Profile::EXPLICIT_ACCESS); 216 Profile::EXPLICIT_ACCESS);
221 if (history_service) { 217 if (history_service) {
222 history_service->GetVisibleVisitCountToHost( 218 history_service->GetVisibleVisitCountToHost(
(...skipping 20 matching lines...) Expand all
243 malware_details_.get() == NULL && CanShowMalwareDetailsOption()) { 239 malware_details_.get() == NULL && CanShowMalwareDetailsOption()) {
244 malware_details_ = MalwareDetails::NewMalwareDetails( 240 malware_details_ = MalwareDetails::NewMalwareDetails(
245 ui_manager_, web_contents, unsafe_resources[0]); 241 ui_manager_, web_contents, unsafe_resources[0]);
246 } 242 }
247 243
248 #if defined(ENABLE_EXTENSIONS) 244 #if defined(ENABLE_EXTENSIONS)
249 // ExperienceSampling: Set up new sampling event for this interstitial. 245 // ExperienceSampling: Set up new sampling event for this interstitial.
250 // This needs to handle all types of warnings this interstitial can show. 246 // This needs to handle all types of warnings this interstitial can show.
251 std::string event_name; 247 std::string event_name;
252 switch (interstitial_type_) { 248 switch (interstitial_type_) {
253 case TYPE_MALWARE_AND_PHISHING:
254 event_name = kEventNameMalwareAndPhishing;
255 break;
256 case TYPE_MALWARE: 249 case TYPE_MALWARE:
257 event_name = kEventNameMalware; 250 event_name = kEventNameMalware;
258 break; 251 break;
259 case TYPE_PHISHING: 252 case TYPE_PHISHING:
260 event_name = kEventNamePhishing; 253 event_name = kEventNamePhishing;
261 break; 254 break;
262 default: 255 default:
263 event_name = kEventNameOther; 256 event_name = kEventNameOther;
264 break; 257 break;
265 } 258 }
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 PHISHING_PROCEED, 568 PHISHING_PROCEED,
576 MALWARE_SHOW_ADVANCED, 569 MALWARE_SHOW_ADVANCED,
577 MULTIPLE_SHOW_ADVANCED, 570 MULTIPLE_SHOW_ADVANCED,
578 PHISHING_SHOW_ADVANCED, 571 PHISHING_SHOW_ADVANCED,
579 MAX_ACTION 572 MAX_ACTION
580 } histogram_action = MAX_ACTION; 573 } histogram_action = MAX_ACTION;
581 574
582 switch (event) { 575 switch (event) {
583 case SHOW: 576 case SHOW:
584 switch (interstitial_type_) { 577 switch (interstitial_type_) {
585 case TYPE_MALWARE_AND_PHISHING:
586 histogram_action = MULTIPLE_SHOW;
587 break;
588 case TYPE_MALWARE: 578 case TYPE_MALWARE:
589 histogram_action = MALWARE_SHOW; 579 histogram_action = MALWARE_SHOW;
590 break; 580 break;
591 case TYPE_PHISHING: 581 case TYPE_PHISHING:
592 histogram_action = PHISHING_SHOW; 582 histogram_action = PHISHING_SHOW;
593 break; 583 break;
594 } 584 }
595 break; 585 break;
596 case PROCEED: 586 case PROCEED:
597 switch (interstitial_type_) { 587 switch (interstitial_type_) {
598 case TYPE_MALWARE_AND_PHISHING:
599 histogram_action = MULTIPLE_PROCEED;
600 break;
601 case TYPE_MALWARE: 588 case TYPE_MALWARE:
602 histogram_action = MALWARE_PROCEED; 589 histogram_action = MALWARE_PROCEED;
603 break; 590 break;
604 case TYPE_PHISHING: 591 case TYPE_PHISHING:
605 histogram_action = PHISHING_PROCEED; 592 histogram_action = PHISHING_PROCEED;
606 break; 593 break;
607 } 594 }
608 break; 595 break;
609 case DONT_PROCEED: 596 case DONT_PROCEED:
610 if (IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)) { 597 if (IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)) {
611 switch (interstitial_type_) { 598 switch (interstitial_type_) {
612 case TYPE_MALWARE_AND_PHISHING:
613 histogram_action = MULTIPLE_FORCED_DONT_PROCEED;
614 break;
615 case TYPE_MALWARE: 599 case TYPE_MALWARE:
616 histogram_action = MALWARE_FORCED_DONT_PROCEED; 600 histogram_action = MALWARE_FORCED_DONT_PROCEED;
617 break; 601 break;
618 case TYPE_PHISHING: 602 case TYPE_PHISHING:
619 histogram_action = PHISHING_FORCED_DONT_PROCEED; 603 histogram_action = PHISHING_FORCED_DONT_PROCEED;
620 break; 604 break;
621 } 605 }
622 } else { 606 } else {
623 switch (interstitial_type_) { 607 switch (interstitial_type_) {
624 case TYPE_MALWARE_AND_PHISHING:
625 histogram_action = MULTIPLE_DONT_PROCEED;
626 break;
627 case TYPE_MALWARE: 608 case TYPE_MALWARE:
628 histogram_action = MALWARE_DONT_PROCEED; 609 histogram_action = MALWARE_DONT_PROCEED;
629 break; 610 break;
630 case TYPE_PHISHING: 611 case TYPE_PHISHING:
631 histogram_action = PHISHING_DONT_PROCEED; 612 histogram_action = PHISHING_DONT_PROCEED;
632 break; 613 break;
633 } 614 }
634 } 615 }
635 break; 616 break;
636 case SHOW_ADVANCED: 617 case SHOW_ADVANCED:
637 switch (interstitial_type_) { 618 switch (interstitial_type_) {
638 case TYPE_MALWARE_AND_PHISHING:
639 histogram_action = MULTIPLE_SHOW_ADVANCED;
640 break;
641 case TYPE_MALWARE: 619 case TYPE_MALWARE:
642 histogram_action = MALWARE_SHOW_ADVANCED; 620 histogram_action = MALWARE_SHOW_ADVANCED;
643 break; 621 break;
644 case TYPE_PHISHING: 622 case TYPE_PHISHING:
645 histogram_action = PHISHING_SHOW_ADVANCED; 623 histogram_action = PHISHING_SHOW_ADVANCED;
646 break; 624 break;
647 } 625 }
648 break; 626 break;
649 default: 627 default:
650 NOTREACHED() << "Unexpected event: " << event; 628 NOTREACHED() << "Unexpected event: " << event;
651 } 629 }
652 if (histogram_action == MAX_ACTION) { 630 if (histogram_action == MAX_ACTION) {
653 NOTREACHED(); 631 NOTREACHED();
654 } else { 632 } else {
655 UMA_HISTOGRAM_ENUMERATION("SB2.InterstitialAction", histogram_action, 633 UMA_HISTOGRAM_ENUMERATION("SB2.InterstitialAction", histogram_action,
656 MAX_ACTION); 634 MAX_ACTION);
657 } 635 }
658 636
659 if (event == PROCEED || event == DONT_PROCEED) { 637 if (event == PROCEED || event == DONT_PROCEED) {
660 if (num_visits_ == 0 && interstitial_type_ != TYPE_MALWARE_AND_PHISHING) { 638 if (num_visits_ == 0) {
661 RecordDetailedUserAction((interstitial_type_ == TYPE_MALWARE) ? 639 RecordDetailedUserAction((interstitial_type_ == TYPE_MALWARE) ?
662 MALWARE_SHOW_NEW_SITE : PHISHING_SHOW_NEW_SITE); 640 MALWARE_SHOW_NEW_SITE : PHISHING_SHOW_NEW_SITE);
663 if (event == PROCEED) { 641 if (event == PROCEED) {
664 RecordDetailedUserAction((interstitial_type_ == TYPE_MALWARE) ? 642 RecordDetailedUserAction((interstitial_type_ == TYPE_MALWARE) ?
665 MALWARE_PROCEED_NEW_SITE : PHISHING_PROCEED_NEW_SITE); 643 MALWARE_PROCEED_NEW_SITE : PHISHING_PROCEED_NEW_SITE);
666 } 644 }
667 } 645 }
668 if (unsafe_resources_[0].is_subresource && 646 if (unsafe_resources_[0].is_subresource) {
669 interstitial_type_ != TYPE_MALWARE_AND_PHISHING) {
670 RecordDetailedUserAction((interstitial_type_ == TYPE_MALWARE) ? 647 RecordDetailedUserAction((interstitial_type_ == TYPE_MALWARE) ?
671 MALWARE_SHOW_CROSS_SITE : PHISHING_SHOW_CROSS_SITE); 648 MALWARE_SHOW_CROSS_SITE : PHISHING_SHOW_CROSS_SITE);
672 if (event == PROCEED) { 649 if (event == PROCEED) {
673 RecordDetailedUserAction((interstitial_type_ == TYPE_MALWARE) ? 650 RecordDetailedUserAction((interstitial_type_ == TYPE_MALWARE) ?
674 MALWARE_PROCEED_CROSS_SITE : PHISHING_PROCEED_CROSS_SITE); 651 MALWARE_PROCEED_CROSS_SITE : PHISHING_PROCEED_CROSS_SITE);
675 } 652 }
676 } 653 }
677 } 654 }
678 } 655 }
679 656
680 void SafeBrowsingBlockingPage::RecordUserReactionTime( 657 void SafeBrowsingBlockingPage::RecordUserReactionTime(
681 const std::string& command) { 658 const std::string& command) {
682 if (interstitial_show_time_.is_null()) 659 if (interstitial_show_time_.is_null())
683 return; // We already reported the user reaction time. 660 return; // We already reported the user reaction time.
684 base::TimeDelta dt = base::TimeTicks::Now() - interstitial_show_time_; 661 base::TimeDelta dt = base::TimeTicks::Now() - interstitial_show_time_;
685 DVLOG(1) << "User reaction time for command:" << command 662 DVLOG(1) << "User reaction time for command:" << command
686 << " on interstitial_type_:" << interstitial_type_ 663 << " on interstitial_type_:" << interstitial_type_
687 << " warning took " << dt.InMilliseconds() << "ms"; 664 << " warning took " << dt.InMilliseconds() << "ms";
688 bool recorded = true; 665 bool recorded = true;
689 if (interstitial_type_ == TYPE_MALWARE || 666 if (interstitial_type_ == TYPE_MALWARE) {
690 interstitial_type_ == TYPE_MALWARE_AND_PHISHING) {
691 // There are six ways in which the malware interstitial can go 667 // There are six ways in which the malware interstitial can go
692 // away. We handle all of them here but we group two together: closing the 668 // away. We handle all of them here but we group two together: closing the
693 // tag / browser window and clicking on the back button in the browser (not 669 // tag / browser window and clicking on the back button in the browser (not
694 // the big green button) are considered the same action. 670 // the big green button) are considered the same action.
695 if (command == kProceedCommand) { 671 if (command == kProceedCommand) {
696 UMA_HISTOGRAM_MEDIUM_TIMES("SB2.MalwareInterstitialTimeProceed", dt); 672 UMA_HISTOGRAM_MEDIUM_TIMES("SB2.MalwareInterstitialTimeProceed", dt);
697 } else if (command == kTakeMeBackCommand) { 673 } else if (command == kTakeMeBackCommand) {
698 UMA_HISTOGRAM_MEDIUM_TIMES("SB2.MalwareInterstitialTimeTakeMeBack", dt); 674 UMA_HISTOGRAM_MEDIUM_TIMES("SB2.MalwareInterstitialTimeTakeMeBack", dt);
699 } else if (command == kShowDiagnosticCommand) { 675 } else if (command == kShowDiagnosticCommand) {
700 UMA_HISTOGRAM_MEDIUM_TIMES("SB2.MalwareInterstitialTimeDiagnostic", dt); 676 UMA_HISTOGRAM_MEDIUM_TIMES("SB2.MalwareInterstitialTimeDiagnostic", dt);
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 IDS_PHISHING_V3_PRIMARY_PARAGRAPH, 916 IDS_PHISHING_V3_PRIMARY_PARAGRAPH,
941 base::UTF8ToUTF16(url_.host()))); 917 base::UTF8ToUTF16(url_.host())));
942 load_time_data->SetString( 918 load_time_data->SetString(
943 "explanationParagraph", 919 "explanationParagraph",
944 l10n_util::GetStringFUTF16(IDS_PHISHING_V3_EXPLANATION_PARAGRAPH, 920 l10n_util::GetStringFUTF16(IDS_PHISHING_V3_EXPLANATION_PARAGRAPH,
945 base::UTF8ToUTF16(url_.host()))); 921 base::UTF8ToUTF16(url_.host())));
946 load_time_data->SetString( 922 load_time_data->SetString(
947 "finalParagraph", 923 "finalParagraph",
948 l10n_util::GetStringUTF16(IDS_PHISHING_V3_PROCEED_PARAGRAPH)); 924 l10n_util::GetStringUTF16(IDS_PHISHING_V3_PROCEED_PARAGRAPH));
949 } 925 }
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/safe_browsing_blocking_page.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698