#include "components/safe_browsing/core/browser/password_protection/password_protection_service_base.h"
#include <stddef.h>
#include <memory>
#include <string>
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/escape.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/task/sequenced_task_runner.h"
#include "build/build_config.h"
#include "components/password_manager/core/browser/password_manager_metrics_util.h"
#include "components/password_manager/core/browser/password_reuse_detector.h"
#include "components/safe_browsing/core/browser/db/database_manager.h"
#include "components/safe_browsing/core/browser/password_protection/password_protection_request.h"
#include "components/safe_browsing/core/browser/sync/sync_utils.h"
#include "components/safe_browsing/core/browser/verdict_cache_manager.h"
#include "components/safe_browsing/core/common/features.h"
#include "components/safe_browsing/core/common/utils.h"
#include "google_apis/google_api_keys.h"
#include "net/base/url_util.h"
PasswordType;
namespace safe_browsing {
PasswordReuseEvent;
namespace {
const int kRequestTimeoutMs = …;
const char kPasswordProtectionRequestUrl[] = …;
bool IsSecuritySensitiveVerdict(
LoginReputationClientResponse::VerdictType verdict_type) { … }
void MaybeRecordSecuritySensitiveEvent(
SafeBrowsingMetricsCollector* metrics_collector,
LoginReputationClientResponse::VerdictType verdict_type) { … }
}
PasswordProtectionServiceBase::PasswordProtectionServiceBase(
const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
history::HistoryService* history_service,
PrefService* pref_service,
std::unique_ptr<SafeBrowsingTokenFetcher> token_fetcher,
bool is_off_the_record,
signin::IdentityManager* identity_manager,
bool try_token_fetch,
SafeBrowsingMetricsCollector* metrics_collector)
: … { … }
PasswordProtectionServiceBase::~PasswordProtectionServiceBase() { … }
bool PasswordProtectionServiceBase::CanGetReputationOfURL(const GURL& url) { … }
bool PasswordProtectionServiceBase::ShouldShowModalWarning(
LoginReputationClientRequest::TriggerType trigger_type,
ReusedPasswordAccountType password_type,
LoginReputationClientResponse::VerdictType verdict_type) { … }
LoginReputationClientResponse::VerdictType
PasswordProtectionServiceBase::GetCachedVerdict(
const GURL& url,
LoginReputationClientRequest::TriggerType trigger_type,
ReusedPasswordAccountType password_type,
LoginReputationClientResponse* out_response) { … }
void PasswordProtectionServiceBase::CacheVerdict(
const GURL& url,
LoginReputationClientRequest::TriggerType trigger_type,
ReusedPasswordAccountType password_type,
const LoginReputationClientResponse& verdict,
const base::Time& receive_time) { … }
bool PasswordProtectionServiceBase::CanSendPing(
LoginReputationClientRequest::TriggerType trigger_type,
const GURL& main_frame_url,
ReusedPasswordAccountType password_type) { … }
void PasswordProtectionServiceBase::RequestFinished(
PasswordProtectionRequest* request,
RequestOutcome outcome,
std::unique_ptr<LoginReputationClientResponse> response) { … }
void PasswordProtectionServiceBase::CancelPendingRequests() { … }
int PasswordProtectionServiceBase::GetStoredVerdictCount(
LoginReputationClientRequest::TriggerType trigger_type) { … }
scoped_refptr<SafeBrowsingDatabaseManager>
PasswordProtectionServiceBase::database_manager() { … }
GURL PasswordProtectionServiceBase::GetPasswordProtectionRequestUrl() { … }
int PasswordProtectionServiceBase::GetRequestTimeoutInMS() { … }
void PasswordProtectionServiceBase::OnHistoryDeletions(
history::HistoryService* history_service,
const history::DeletionInfo& deletion_info) { … }
void PasswordProtectionServiceBase::HistoryServiceBeingDeleted(
history::HistoryService* history_service) { … }
bool PasswordProtectionServiceBase::IsWarningEnabled(
ReusedPasswordAccountType password_type) { … }
ReusedPasswordType
PasswordProtectionServiceBase::GetPasswordProtectionReusedPasswordType(
password_manager::metrics_util::PasswordType password_type) { … }
ReusedPasswordAccountType
PasswordProtectionServiceBase::GetPasswordProtectionReusedPasswordAccountType(
password_manager::metrics_util::PasswordType password_type,
const std::string& username) const { … }
PasswordType
PasswordProtectionServiceBase::ConvertReusedPasswordAccountTypeToPasswordType(
ReusedPasswordAccountType password_type) { … }
bool PasswordProtectionServiceBase::IsSupportedPasswordTypeForPinging(
PasswordType password_type) const { … }
bool PasswordProtectionServiceBase::IsSupportedPasswordTypeForModalWarning(
ReusedPasswordAccountType password_type) const { … }
bool PasswordProtectionServiceBase::CanGetAccessToken() { … }
}