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

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

Issue 10694037: Add a policy to disable proceeding through the Safe Browsing interstitials. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Addressed comments Created 8 years, 5 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
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 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 const string16& title, 224 const string16& title,
225 const string16& headline, 225 const string16& headline,
226 const string16& description1, 226 const string16& description1,
227 const string16& description2, 227 const string16& description2,
228 const string16& description3) { 228 const string16& description3) {
229 strings->SetString("title", title); 229 strings->SetString("title", title);
230 strings->SetString("headLine", headline); 230 strings->SetString("headLine", headline);
231 strings->SetString("description1", description1); 231 strings->SetString("description1", description1);
232 strings->SetString("description2", description2); 232 strings->SetString("description2", description2);
233 strings->SetString("description3", description3); 233 strings->SetString("description3", description3);
234 strings->SetBoolean("proceedDisabled",
235 IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled));
234 } 236 }
235 237
236 void SafeBrowsingBlockingPage::PopulateMultipleThreatStringDictionary( 238 void SafeBrowsingBlockingPage::PopulateMultipleThreatStringDictionary(
237 DictionaryValue* strings) { 239 DictionaryValue* strings) {
238 bool malware = false; 240 bool malware = false;
239 bool phishing = false; 241 bool phishing = false;
240 242
241 string16 malware_label = 243 string16 malware_label =
242 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_LABEL); 244 l10n_util::GetStringUTF16(IDS_SAFE_BROWSING_MALWARE_LABEL);
243 string16 malware_link = 245 string16 malware_link =
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 375
374 std::string privacy_link = base::StringPrintf( 376 std::string privacy_link = base::StringPrintf(
375 kPrivacyLinkHtml, 377 kPrivacyLinkHtml,
376 l10n_util::GetStringUTF8( 378 l10n_util::GetStringUTF8(
377 IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE).c_str()); 379 IDS_SAFE_BROWSING_PRIVACY_POLICY_PAGE).c_str());
378 380
379 strings->SetString("confirm_text", 381 strings->SetString("confirm_text",
380 l10n_util::GetStringFUTF16( 382 l10n_util::GetStringFUTF16(
381 IDS_SAFE_BROWSING_MALWARE_REPORTING_AGREE, 383 IDS_SAFE_BROWSING_MALWARE_REPORTING_AGREE,
382 UTF8ToUTF16(privacy_link))); 384 UTF8ToUTF16(privacy_link)));
383 385 if (IsPrefEnabled(prefs::kSafeBrowsingReportingEnabled))
384 Profile* profile = Profile::FromBrowserContext(
385 web_contents_->GetBrowserContext());
386 const PrefService::Preference* pref =
387 profile->GetPrefs()->FindPreference(
388 prefs::kSafeBrowsingReportingEnabled);
389
390 bool value;
391 if (pref && pref->GetValue()->GetAsBoolean(&value) && value) {
392 strings->SetString(kBoxChecked, "yes"); 386 strings->SetString(kBoxChecked, "yes");
393 } else { 387 else
394 strings->SetString(kBoxChecked, ""); 388 strings->SetString(kBoxChecked, "");
395 }
396 } 389 }
397 } 390 }
398 391
399 void SafeBrowsingBlockingPage::PopulatePhishingStringDictionary( 392 void SafeBrowsingBlockingPage::PopulatePhishingStringDictionary(
400 DictionaryValue* strings) { 393 DictionaryValue* strings) {
401 std::string proceed_link = base::StringPrintf( 394 std::string proceed_link = base::StringPrintf(
402 kPLinkHtml, 395 kPLinkHtml,
403 l10n_util::GetStringUTF8( 396 l10n_util::GetStringUTF8(
404 IDS_SAFE_BROWSING_PHISHING_PROCEED_LINK).c_str()); 397 IDS_SAFE_BROWSING_PHISHING_PROCEED_LINK).c_str());
405 string16 description3 = l10n_util::GetStringFUTF16( 398 string16 description3 = l10n_util::GetStringFUTF16(
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 454
462 if (command == kShowPrivacyCommand) { 455 if (command == kShowPrivacyCommand) {
463 // User pressed "Safe Browsing privacy policy". 456 // User pressed "Safe Browsing privacy policy".
464 GURL url(kSbPrivacyPolicyUrl); 457 GURL url(kSbPrivacyPolicyUrl);
465 OpenURLParams params( 458 OpenURLParams params(
466 url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_LINK, false); 459 url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_LINK, false);
467 web_contents_->OpenURL(params); 460 web_contents_->OpenURL(params);
468 return; 461 return;
469 } 462 }
470 463
464 bool proceed_blocked = false;
471 if (command == kProceedCommand) { 465 if (command == kProceedCommand) {
472 interstitial_page_->Proceed(); 466 if (IsPrefEnabled(prefs::kSafeBrowsingProceedAnywayDisabled)) {
473 // We are deleted after this. 467 proceed_blocked = true;
474 return; 468 } else {
469 interstitial_page_->Proceed();
470 // |this| has been deleted after Proceed() returns.
471 return;
472 }
475 } 473 }
476 474
477 if (command == kTakeMeBackCommand) { 475 if (command == kTakeMeBackCommand || proceed_blocked) {
478 if (is_main_frame_load_blocked_) { 476 if (is_main_frame_load_blocked_) {
479 // If the load is blocked, we want to close the interstitial and discard 477 // If the load is blocked, we want to close the interstitial and discard
480 // the pending entry. 478 // the pending entry.
481 interstitial_page_->DontProceed(); 479 interstitial_page_->DontProceed();
482 // We are deleted after this. 480 // |this| has been deleted after DontProceed() returns.
483 return; 481 return;
484 } 482 }
485 483
486 // Otherwise the offending entry has committed, and we need to go back or 484 // Otherwise the offending entry has committed, and we need to go back or
487 // to a safe page. We will close the interstitial when that page commits. 485 // to a safe page. We will close the interstitial when that page commits.
488 if (web_contents_->GetController().CanGoBack()) { 486 if (web_contents_->GetController().CanGoBack()) {
489 web_contents_->GetController().GoBack(); 487 web_contents_->GetController().GoBack();
490 } else { 488 } else {
491 web_contents_->GetController().LoadURL( 489 web_contents_->GetController().LoadURL(
492 GURL(chrome::kChromeUINewTabURL), 490 GURL(chrome::kChromeUINewTabURL),
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 NOTREACHED() << "Unexpected event: " << event; 671 NOTREACHED() << "Unexpected event: " << event;
674 } 672 }
675 673
676 content::RecordComputedAction(action); 674 content::RecordComputedAction(action);
677 } 675 }
678 676
679 void SafeBrowsingBlockingPage::FinishMalwareDetails(int64 delay_ms) { 677 void SafeBrowsingBlockingPage::FinishMalwareDetails(int64 delay_ms) {
680 if (malware_details_ == NULL) 678 if (malware_details_ == NULL)
681 return; // Not all interstitials have malware details (eg phishing). 679 return; // Not all interstitials have malware details (eg phishing).
682 680
683 Profile* profile = Profile::FromBrowserContext( 681 if (IsPrefEnabled(prefs::kSafeBrowsingReportingEnabled)) {
684 web_contents_->GetBrowserContext());
685 const PrefService::Preference* pref =
686 profile->GetPrefs()->FindPreference(prefs::kSafeBrowsingReportingEnabled);
687
688 bool value;
689 if (pref && pref->GetValue()->GetAsBoolean(&value) && value) {
690 // Finish the malware details collection, send it over. 682 // Finish the malware details collection, send it over.
691 BrowserThread::PostDelayedTask( 683 BrowserThread::PostDelayedTask(
692 BrowserThread::IO, FROM_HERE, 684 BrowserThread::IO, FROM_HERE,
693 base::Bind(&MalwareDetails::FinishCollection, malware_details_.get()), 685 base::Bind(&MalwareDetails::FinishCollection, malware_details_.get()),
694 base::TimeDelta::FromMilliseconds(delay_ms)); 686 base::TimeDelta::FromMilliseconds(delay_ms));
695 } 687 }
696 } 688 }
697 689
690 bool SafeBrowsingBlockingPage::IsPrefEnabled(const char* pref) {
691 Profile* profile =
692 Profile::FromBrowserContext(web_contents_->GetBrowserContext());
693 return profile->GetPrefs()->GetBoolean(pref);
694 }
695
698 // static 696 // static
699 void SafeBrowsingBlockingPage::NotifySafeBrowsingService( 697 void SafeBrowsingBlockingPage::NotifySafeBrowsingService(
700 SafeBrowsingService* sb_service, 698 SafeBrowsingService* sb_service,
701 const UnsafeResourceList& unsafe_resources, 699 const UnsafeResourceList& unsafe_resources,
702 bool proceed) { 700 bool proceed) {
703 BrowserThread::PostTask( 701 BrowserThread::PostTask(
704 BrowserThread::IO, FROM_HERE, 702 BrowserThread::IO, FROM_HERE,
705 base::Bind(&SafeBrowsingService::OnBlockingPageDone, 703 base::Bind(&SafeBrowsingService::OnBlockingPageDone,
706 sb_service, unsafe_resources, proceed)); 704 sb_service, unsafe_resources, proceed));
707 } 705 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 // Client-side phishing detection interstitials never block the main frame 753 // Client-side phishing detection interstitials never block the main frame
756 // load, since they happen after the page is finished loading. 754 // load, since they happen after the page is finished loading.
757 if (unsafe_resources[0].threat_type == 755 if (unsafe_resources[0].threat_type ==
758 SafeBrowsingService::CLIENT_SIDE_PHISHING_URL) { 756 SafeBrowsingService::CLIENT_SIDE_PHISHING_URL) {
759 return false; 757 return false;
760 } 758 }
761 759
762 // Otherwise, check the threat type. 760 // Otherwise, check the threat type.
763 return unsafe_resources.size() == 1 && !unsafe_resources[0].is_subresource; 761 return unsafe_resources.size() == 1 && !unsafe_resources[0].is_subresource;
764 } 762 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698