Commit 77122b8e authored by Luke Zielinski's avatar Luke Zielinski Committed by Commit Bot

Connecting list check and trigger for Suspicious Sites.

Bug: 817377
Change-Id: I5eb7768bdd8e20b5841de3cf56f6f8ed47ec6922
Reviewed-on: https://chromium-review.googlesource.com/1020062Reviewed-by: default avatarVarun Khaneja <vakh@chromium.org>
Reviewed-by: default avatarChangwan Ryu <changwan@chromium.org>
Commit-Queue: Luke Z <lpz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#553774}
parent c474af56
...@@ -77,6 +77,10 @@ bool AwUrlCheckerDelegateImpl::ShouldSkipRequestCheck( ...@@ -77,6 +77,10 @@ bool AwUrlCheckerDelegateImpl::ShouldSkipRequestCheck(
return client && !client->GetSafeBrowsingEnabled(); return client && !client->GetSafeBrowsingEnabled();
} }
void AwUrlCheckerDelegateImpl::NotifySuspiciousSiteDetected(
const base::RepeatingCallback<content::WebContents*()>&
web_contents_getter) {}
const safe_browsing::SBThreatTypeSet& const safe_browsing::SBThreatTypeSet&
AwUrlCheckerDelegateImpl::GetThreatTypes() { AwUrlCheckerDelegateImpl::GetThreatTypes() {
return threat_types_; return threat_types_;
......
...@@ -50,6 +50,9 @@ class AwUrlCheckerDelegateImpl : public safe_browsing::UrlCheckerDelegate { ...@@ -50,6 +50,9 @@ class AwUrlCheckerDelegateImpl : public safe_browsing::UrlCheckerDelegate {
int render_process_id, int render_process_id,
int render_frame_id, int render_frame_id,
bool originated_from_service_worker) override; bool originated_from_service_worker) override;
void NotifySuspiciousSiteDetected(
const base::RepeatingCallback<content::WebContents*()>&
web_contents_getter) override;
const safe_browsing::SBThreatTypeSet& GetThreatTypes() override; const safe_browsing::SBThreatTypeSet& GetThreatTypes() override;
safe_browsing::SafeBrowsingDatabaseManager* GetDatabaseManager() override; safe_browsing::SafeBrowsingDatabaseManager* GetDatabaseManager() override;
safe_browsing::BaseUIManager* GetUIManager() override; safe_browsing::BaseUIManager* GetUIManager() override;
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "components/safe_browsing/common/safe_browsing_prefs.h" #include "components/safe_browsing/common/safe_browsing_prefs.h"
#include "components/safe_browsing/db/database_manager.h" #include "components/safe_browsing/db/database_manager.h"
#include "components/safe_browsing/db/v4_protocol_manager_util.h" #include "components/safe_browsing/db/v4_protocol_manager_util.h"
#include "components/safe_browsing/triggers/suspicious_site_trigger.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "services/network/public/cpp/features.h" #include "services/network/public/cpp/features.h"
...@@ -111,6 +112,15 @@ bool UrlCheckerDelegateImpl::ShouldSkipRequestCheck( ...@@ -111,6 +112,15 @@ bool UrlCheckerDelegateImpl::ShouldSkipRequestCheck(
original_url); original_url);
} }
void UrlCheckerDelegateImpl::NotifySuspiciousSiteDetected(
const base::RepeatingCallback<content::WebContents*()>&
web_contents_getter) {
content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,
base::BindOnce(&NotifySuspiciousSiteTriggerDetected,
web_contents_getter));
}
const SBThreatTypeSet& UrlCheckerDelegateImpl::GetThreatTypes() { const SBThreatTypeSet& UrlCheckerDelegateImpl::GetThreatTypes() {
return threat_types_; return threat_types_;
} }
......
...@@ -40,6 +40,9 @@ class UrlCheckerDelegateImpl : public UrlCheckerDelegate { ...@@ -40,6 +40,9 @@ class UrlCheckerDelegateImpl : public UrlCheckerDelegate {
int render_process_id, int render_process_id,
int render_frame_id, int render_frame_id,
bool originated_from_service_worker) override; bool originated_from_service_worker) override;
void NotifySuspiciousSiteDetected(
const base::RepeatingCallback<content::WebContents*()>&
web_contents_getter) override;
const SBThreatTypeSet& GetThreatTypes() override; const SBThreatTypeSet& GetThreatTypes() override;
SafeBrowsingDatabaseManager* GetDatabaseManager() override; SafeBrowsingDatabaseManager* GetDatabaseManager() override;
BaseUIManager* GetUIManager() override; BaseUIManager* GetUIManager() override;
......
...@@ -126,6 +126,9 @@ class TestUrlCheckerDelegate : public UrlCheckerDelegate { ...@@ -126,6 +126,9 @@ class TestUrlCheckerDelegate : public UrlCheckerDelegate {
return false; return false;
} }
void NotifySuspiciousSiteDetected(
const base::RepeatingCallback<content::WebContents*()>&
web_contents_getter) override {}
const SBThreatTypeSet& GetThreatTypes() override { return threat_types_; } const SBThreatTypeSet& GetThreatTypes() override { return threat_types_; }
SafeBrowsingDatabaseManager* GetDatabaseManager() override { SafeBrowsingDatabaseManager* GetDatabaseManager() override {
return database_manager_.get(); return database_manager_.get();
......
...@@ -136,10 +136,12 @@ void SafeBrowsingUrlCheckerImpl::OnCheckBrowseUrlResult( ...@@ -136,10 +136,12 @@ void SafeBrowsingUrlCheckerImpl::OnCheckBrowseUrlResult(
if (threat_type == SB_THREAT_TYPE_SAFE || if (threat_type == SB_THREAT_TYPE_SAFE ||
threat_type == SB_THREAT_TYPE_SUSPICIOUS_SITE) { threat_type == SB_THREAT_TYPE_SUSPICIOUS_SITE) {
// TODO(lpz): Suspicious sites are treated as safe for now. Trigger
// a suspicious site report here instead.
state_ = STATE_NONE; state_ = STATE_NONE;
if (threat_type == SB_THREAT_TYPE_SUSPICIOUS_SITE) {
url_checker_delegate_->NotifySuspiciousSiteDetected(web_contents_getter_);
}
if (!RunNextCallback(true, false)) if (!RunNextCallback(true, false))
return; return;
......
...@@ -68,6 +68,13 @@ class UrlCheckerDelegate ...@@ -68,6 +68,13 @@ class UrlCheckerDelegate
int render_frame_id, int render_frame_id,
bool originated_from_service_worker) = 0; bool originated_from_service_worker) = 0;
// Notifies the SafeBrowsing Trigger Manager that a suspicious site has been
// detected. |web_contents_getter| is used to determine which tab the site
// was detected on.
virtual void NotifySuspiciousSiteDetected(
const base::RepeatingCallback<content::WebContents*()>&
web_contents_getter) = 0;
virtual const SBThreatTypeSet& GetThreatTypes() = 0; virtual const SBThreatTypeSet& GetThreatTypes() = 0;
virtual SafeBrowsingDatabaseManager* GetDatabaseManager() = 0; virtual SafeBrowsingDatabaseManager* GetDatabaseManager() = 0;
virtual BaseUIManager* GetUIManager() = 0; virtual BaseUIManager* GetUIManager() = 0;
......
...@@ -36,6 +36,19 @@ const char kSuspiciousSiteTriggerReportRejectionMetricName[] = ...@@ -36,6 +36,19 @@ const char kSuspiciousSiteTriggerReportRejectionMetricName[] =
const char kSuspiciousSiteTriggerReportDelayStateMetricName[] = const char kSuspiciousSiteTriggerReportDelayStateMetricName[] =
"SafeBrowsing.Triggers.SuspiciousSite.DelayTimerState"; "SafeBrowsing.Triggers.SuspiciousSite.DelayTimerState";
void NotifySuspiciousSiteTriggerDetected(
const base::RepeatingCallback<content::WebContents*()>&
web_contents_getter) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
content::WebContents* web_contents = web_contents_getter.Run();
if (web_contents) {
safe_browsing::SuspiciousSiteTrigger* trigger =
safe_browsing::SuspiciousSiteTrigger::FromWebContents(web_contents);
if (trigger)
trigger->SuspiciousSiteDetected();
}
}
SuspiciousSiteTrigger::SuspiciousSiteTrigger( SuspiciousSiteTrigger::SuspiciousSiteTrigger(
content::WebContents* web_contents, content::WebContents* web_contents,
TriggerManager* trigger_manager, TriggerManager* trigger_manager,
......
...@@ -65,6 +65,14 @@ enum class SuspiciousSiteTriggerEvent { ...@@ -65,6 +65,14 @@ enum class SuspiciousSiteTriggerEvent {
kMaxValue = REPORT_FINISH_FAILED kMaxValue = REPORT_FINISH_FAILED
}; };
// Notify a suspicious site trigger on a particular tab that a suspicious site
// was detected. |web_contents_getter| specifies the tab where the site was
// detected.
// Must be called on UI thread.
void NotifySuspiciousSiteTriggerDetected(
const base::RepeatingCallback<content::WebContents*()>&
web_contents_getter);
// This class watches tab-level events such as the start and end of a page // This class watches tab-level events such as the start and end of a page
// load, and also listens for events from the SuspiciousSiteURLThrottle that // load, and also listens for events from the SuspiciousSiteURLThrottle that
// indicate there was a hit on the suspicious site list. This trigger is // indicate there was a hit on the suspicious site list. This trigger is
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment