#include "chrome/browser/ui/passwords/bubble_controllers/save_update_bubble_controller.h"
#include "base/containers/contains.h"
#include "base/functional/bind.h"
#include "base/metrics/field_trial_params.h"
#include "base/ranges/algorithm.h"
#include "base/time/default_clock.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/browser/ui/passwords/passwords_model_delegate.h"
#include "chrome/browser/ui/passwords/ui_utils.h"
#include "chrome/grit/branded_strings.h"
#include "chrome/grit/generated_resources.h"
#include "chrome/grit/theme_resources.h"
#include "components/password_manager/core/browser/manage_passwords_referrer.h"
#include "components/password_manager/core/browser/password_form_metrics_recorder.h"
#include "components/password_manager/core/browser/password_store/password_store_interface.h"
#include "components/password_manager/core/browser/password_store/smart_bubble_stats_store.h"
#include "components/password_manager/core/browser/password_sync_util.h"
#include "components/password_manager/core/common/password_manager_pref_names.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/web_contents.h"
#include "ui/base/l10n/l10n_util.h"
namespace {
Store;
metrics_util;
features_util;
metrics_util::UIDisplayDisposition ComputeDisplayDisposition(
PasswordBubbleControllerBase::DisplayReason display_reason,
password_manager::ui::State state) { … }
void CleanStatisticsForSite(Profile* profile, const url::Origin& origin) { … }
std::vector<password_manager::PasswordForm> DeepCopyForms(
const std::vector<std::unique_ptr<password_manager::PasswordForm>>& forms) { … }
bool IsSyncUser(Profile* profile) { … }
}
SaveUpdateBubbleController::SaveUpdateBubbleController(
base::WeakPtr<PasswordsModelDelegate> delegate,
PasswordBubbleControllerBase::DisplayReason display_reason)
: … { … }
SaveUpdateBubbleController::~SaveUpdateBubbleController() { … }
void SaveUpdateBubbleController::OnSaveClicked() { … }
void SaveUpdateBubbleController::OnNeverForThisSiteClicked() { … }
bool SaveUpdateBubbleController::IsCurrentStateUpdate() const { … }
bool SaveUpdateBubbleController::ShouldShowFooter() const { … }
bool SaveUpdateBubbleController::
IsCurrentStateAffectingPasswordsStoredInTheGoogleAccount() { … }
void SaveUpdateBubbleController::ShouldRevealPasswords(
PasswordsModelDelegate::AvailabilityCallback callback) { … }
bool SaveUpdateBubbleController::IsUsingAccountStore() { … }
bool SaveUpdateBubbleController::IsAccountStorageOptInRequiredBeforeSave() { … }
bool SaveUpdateBubbleController::DidAuthForAccountStoreOptInFail() const { … }
std::u16string SaveUpdateBubbleController::GetTitle() const { … }
void SaveUpdateBubbleController::ReportInteractions() { … }