#include "components/safe_browsing/content/browser/ui_manager.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/metrics/histogram_macros.h"
#include "base/observer_list.h"
#include "base/threading/thread.h"
#include "base/threading/thread_restrictions.h"
#include "build/build_config.h"
#include "components/no_state_prefetch/browser/no_state_prefetch_contents.h"
#include "components/prefs/pref_service.h"
#include "components/safe_browsing/content/browser/async_check_tracker.h"
#include "components/safe_browsing/content/browser/client_report_util.h"
#include "components/safe_browsing/content/browser/safe_browsing_blocking_page.h"
#include "components/safe_browsing/content/browser/threat_details.h"
#include "components/safe_browsing/content/browser/unsafe_resource_util.h"
#include "components/safe_browsing/core/browser/db/v4_protocol_manager_util.h"
#include "components/safe_browsing/core/browser/ping_manager.h"
#include "components/safe_browsing/core/common/features.h"
#include "components/safe_browsing/core/common/safe_browsing_prefs.h"
#include "components/security_interstitials/content/security_interstitial_tab_helper.h"
#include "components/security_interstitials/core/unsafe_resource.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/disallow_activation_reason.h"
#include "content/public/browser/global_routing_id.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/web_contents.h"
#include "ipc/ipc_message.h"
#include "url/gurl.h"
BrowserThread;
NavigationEntry;
WebContents;
ClientSafeBrowsingReportRequest;
HitReport;
SBThreatType;
namespace safe_browsing {
using enum ExtendedReportingLevel;
SafeBrowsingUIManager::SafeBrowsingUIManager(
std::unique_ptr<Delegate> delegate,
std::unique_ptr<SafeBrowsingBlockingPageFactory> blocking_page_factory,
const GURL& default_safe_page)
: … { … }
SafeBrowsingUIManager::~SafeBrowsingUIManager() { … }
void SafeBrowsingUIManager::Stop(bool shutdown) { … }
void SafeBrowsingUIManager::CreateAndSendHitReport(
const UnsafeResource& resource) { … }
void SafeBrowsingUIManager::CreateAndSendClientSafeBrowsingWarningShownReport(
const UnsafeResource& resource) { … }
void SafeBrowsingUIManager::StartDisplayingBlockingPage(
const security_interstitials::UnsafeResource& resource) { … }
bool SafeBrowsingUIManager::ShouldSendHitReport(HitReport* hit_report,
WebContents* web_contents) { … }
bool SafeBrowsingUIManager::ShouldSendClientSafeBrowsingWarningShownReport(
WebContents* web_contents) { … }
void SafeBrowsingUIManager::MaybeReportSafeBrowsingHit(
std::unique_ptr<HitReport> hit_report,
WebContents* web_contents) { … }
void SafeBrowsingUIManager::MaybeSendClientSafeBrowsingWarningShownReport(
std::unique_ptr<ClientSafeBrowsingReportRequest> report,
WebContents* web_contents) { … }
void SafeBrowsingUIManager::CreateAllowlistForTesting(
content::WebContents* web_contents) { … }
std::string SafeBrowsingUIManager::GetThreatTypeStringForInterstitial(
safe_browsing::SBThreatType threat_type) { … }
void SafeBrowsingUIManager::AddObserver(Observer* observer) { … }
void SafeBrowsingUIManager::RemoveObserver(Observer* observer) { … }
const std::string SafeBrowsingUIManager::app_locale() const { … }
history::HistoryService* SafeBrowsingUIManager::history_service(
content::WebContents* web_contents) { … }
const GURL SafeBrowsingUIManager::default_safe_page() const { … }
void SafeBrowsingUIManager::SendThreatDetails(
content::BrowserContext* browser_context,
std::unique_ptr<ClientSafeBrowsingReportRequest> report) { … }
void SafeBrowsingUIManager::AttachThreatDetailsAndLaunchSurvey(
content::BrowserContext* browser_context,
std::unique_ptr<ClientSafeBrowsingReportRequest> report) { … }
void SafeBrowsingUIManager::OnBlockingPageDone(
const std::vector<UnsafeResource>& resources,
bool proceed,
content::WebContents* web_contents,
const GURL& main_frame_url,
bool showed_interstitial) { … }
security_interstitials::SecurityInterstitialPage*
SafeBrowsingUIManager::CreateBlockingPage(
content::WebContents* contents,
const GURL& blocked_url,
const UnsafeResource& unsafe_resource,
bool forward_extension_event,
std::optional<base::TimeTicks> blocked_page_shown_timestamp) { … }
void SafeBrowsingUIManager::
ForwardSecurityInterstitialShownExtensionEventToEmbedder(
content::WebContents* web_contents,
const GURL& page_url,
const std::string& reason,
int net_error_code) { … }
#if !BUILDFLAG(IS_ANDROID)
void SafeBrowsingUIManager::
ForwardUrlFilteringInterstitialExtensionEventToEmbedder(
content::WebContents* web_contents,
const GURL& page_url,
const std::string& threat_type,
safe_browsing::RTLookupResponse rt_lookup_response) { … }
#endif
}