#include "chrome/browser/extensions/api/passwords_private/password_check_delegate.h"
#include <stddef.h>
#include <algorithm>
#include <iterator>
#include <map>
#include <memory>
#include <optional>
#include <string>
#include <utility>
#include "base/containers/flat_set.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/memory/ref_counted.h"
#include "base/metrics/histogram_macros.h"
#include "base/numerics/safe_conversions.h"
#include "base/ranges/algorithm.h"
#include "base/strings/escape.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/sequenced_task_runner.h"
#include "base/time/time.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/api/passwords_private/passwords_private_event_router.h"
#include "chrome/browser/extensions/api/passwords_private/passwords_private_event_router_factory.h"
#include "chrome/browser/extensions/api/passwords_private/passwords_private_utils.h"
#include "chrome/browser/password_manager/account_password_store_factory.h"
#include "chrome/browser/password_manager/bulk_leak_check_service_factory.h"
#include "chrome/browser/password_manager/profile_password_store_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sync/sync_service_factory.h"
#include "chrome/common/extensions/api/passwords_private.h"
#include "chrome/grit/generated_resources.h"
#include "components/affiliations/core/browser/affiliation_utils.h"
#include "components/keyed_service/core/service_access_type.h"
#include "components/password_manager/core/browser/leak_detection/bulk_leak_check.h"
#include "components/password_manager/core/browser/leak_detection/encryption_utils.h"
#include "components/password_manager/core/browser/password_form.h"
#include "components/password_manager/core/browser/password_manager_client.h"
#include "components/password_manager/core/browser/password_manager_util.h"
#include "components/password_manager/core/browser/ui/credential_ui_entry.h"
#include "components/password_manager/core/browser/ui/credential_utils.h"
#include "components/password_manager/core/browser/ui/insecure_credentials_manager.h"
#include "components/password_manager/core/browser/ui/saved_passwords_presenter.h"
#include "components/password_manager/core/common/password_manager_features.h"
#include "components/password_manager/core/common/password_manager_pref_names.h"
#include "components/prefs/pref_service.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/l10n/time_format.h"
#include "url/gurl.h"
#include "url/origin.h"
namespace extensions {
namespace {
CanonicalizeUsername;
CredentialUIEntry;
InsecureType;
LeakCheckCredential;
PasswordForm;
TimeFormat;
State;
}
constexpr char kPasswordCheckDataKey[] = …;
class PasswordCheckProgress : public base::RefCounted<PasswordCheckProgress> { … };
namespace {
class PasswordCheckData : public LeakCheckCredential::Data { … };
api::passwords_private::PasswordCheckState ConvertPasswordCheckState(
State state) { … }
std::string FormatElapsedTime(base::Time time) { … }
std::vector<api::passwords_private::CompromiseType> GetCompromiseType(
const CredentialUIEntry& entry) { … }
api::passwords_private::CompromisedInfo CreateCompromiseInfo(
const CredentialUIEntry& credential) { … }
}
PasswordCheckDelegate::PasswordCheckDelegate(
Profile* profile,
password_manager::SavedPasswordsPresenter* presenter,
IdGenerator* id_generator,
PasswordsPrivateEventRouter* event_router)
: … { … }
PasswordCheckDelegate::~PasswordCheckDelegate() = default;
std::vector<api::passwords_private::PasswordUiEntry>
PasswordCheckDelegate::GetInsecureCredentials() { … }
std::vector<api::passwords_private::PasswordUiEntryList>
PasswordCheckDelegate::GetCredentialsWithReusedPassword() { … }
bool PasswordCheckDelegate::MuteInsecureCredential(
const api::passwords_private::PasswordUiEntry& credential) { … }
bool PasswordCheckDelegate::UnmuteInsecureCredential(
const api::passwords_private::PasswordUiEntry& credential) { … }
void PasswordCheckDelegate::StartPasswordCheck(
password_manager::LeakDetectionInitiator initiator,
StartPasswordCheckCallback callback) { … }
void PasswordCheckDelegate::StartPasswordAnalyses(
StartPasswordCheckCallback callback) { … }
api::passwords_private::PasswordCheckStatus
PasswordCheckDelegate::GetPasswordCheckStatus() const { … }
password_manager::InsecureCredentialsManager*
PasswordCheckDelegate::GetInsecureCredentialsManager() { … }
void PasswordCheckDelegate::OnBulkCheckServiceShutDown() { … }
void PasswordCheckDelegate::OnSavedPasswordsChanged(
const password_manager::PasswordStoreChangeList& changes) { … }
void PasswordCheckDelegate::OnInsecureCredentialsChanged() { … }
void PasswordCheckDelegate::OnStateChanged(State state) { … }
void PasswordCheckDelegate::OnCredentialDone(
const LeakCheckCredential& credential,
password_manager::IsLeaked is_leaked) { … }
void PasswordCheckDelegate::
RecordAndNotifyAboutCompletedCompromisedPasswordCheck() { … }
void PasswordCheckDelegate::RecordAndNotifyAboutCompletedWeakPasswordCheck() { … }
void PasswordCheckDelegate::NotifyPasswordCheckStatusChanged() { … }
api::passwords_private::PasswordUiEntry
PasswordCheckDelegate::ConstructInsecureCredentialUiEntry(
CredentialUIEntry entry) { … }
}