Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(371)

Unified Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model.cc

Issue 2202373002: Ignore OnBubbleHidden() event when the password bubble is reopened. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: delete proxy Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
index 8fe645bced0a05f365b9f48794204d786f0bba78..72d8ac238ab29348116abb6ce12fb14416086bd0 100644
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
@@ -41,11 +41,8 @@ Profile* GetProfileFromWebContents(content::WebContents* web_contents) {
return Profile::FromBrowserContext(web_contents->GetBrowserContext());
}
-void CleanStatisticsForSite(content::WebContents* web_contents,
- const GURL& origin) {
- DCHECK(web_contents);
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
+void CleanStatisticsForSite(Profile* profile, const GURL& origin) {
+ DCHECK(profile);
password_manager::PasswordStore* password_store =
PasswordStoreFactory::GetForProfile(profile,
ServiceAccessType::IMPLICIT_ACCESS)
@@ -173,7 +170,7 @@ void ManagePasswordsBubbleModel::InteractionKeeper::ReportInteractions(
password_manager::metrics_util::CHROME_SIGNIN_OK ||
sign_in_promo_dismissal_reason_ ==
password_manager::metrics_util::CHROME_SIGNIN_CANCEL) {
- DCHECK(model->web_contents());
+ DCHECK(model->delegate_);
int show_count = model->GetProfile()->GetPrefs()->GetInteger(
password_manager::prefs::kNumberSignInPasswordPromoShown);
UMA_HISTOGRAM_COUNTS_100("PasswordManager.SignInPromoCountTilClick",
@@ -192,13 +189,9 @@ void ManagePasswordsBubbleModel::InteractionKeeper::ReportInteractions(
metrics_util::NO_UPDATE_SUBMISSION) {
update_password_submission_event_ =
model->GetUpdateDismissalReason(NO_INTERACTION);
- PasswordsModelDelegate* delegate =
- model->web_contents()
- ? PasswordsModelDelegateFromWebContents(model->web_contents())
- : nullptr;
- if (delegate &&
+ if (model->delegate_ &&
model->state() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE)
- delegate->OnNoInteractionOnUpdate();
+ model->delegate_->OnNoInteractionOnUpdate();
}
if (update_password_submission_event_ != metrics_util::NO_UPDATE_SUBMISSION)
@@ -207,25 +200,22 @@ void ManagePasswordsBubbleModel::InteractionKeeper::ReportInteractions(
}
ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
- content::WebContents* web_contents,
+ base::WeakPtr<PasswordsModelDelegate> delegate,
DisplayReason display_reason)
- : content::WebContentsObserver(web_contents),
- password_overridden_(false) {
- PasswordsModelDelegate* delegate =
- PasswordsModelDelegateFromWebContents(web_contents);
-
- origin_ = delegate->GetOrigin();
- state_ = delegate->GetState();
+ : password_overridden_(false),
+ delegate_(std::move(delegate)) {
+ origin_ = delegate_->GetOrigin();
+ state_ = delegate_->GetState();
if (state_ == password_manager::ui::PENDING_PASSWORD_STATE ||
state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
- pending_password_ = delegate->GetPendingPassword();
- local_credentials_ = DeepCopyForms(delegate->GetCurrentForms());
+ pending_password_ = delegate_->GetPendingPassword();
+ local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms());
} else if (state_ == password_manager::ui::CONFIRMATION_STATE) {
// We don't need anything.
} else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) {
- pending_password_ = delegate->GetPendingPassword();
+ pending_password_ = delegate_->GetPendingPassword();
} else {
- local_credentials_ = DeepCopyForms(delegate->GetCurrentForms());
+ local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms());
}
if (state_ == password_manager::ui::PENDING_PASSWORD_STATE ||
@@ -264,14 +254,14 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
interaction_stats.origin_domain = origin_.GetOrigin();
interaction_stats.username_value = pending_password_.username_value;
password_manager::InteractionsStats* stats =
- delegate->GetCurrentInteractionStats();
+ delegate_->GetCurrentInteractionStats();
if (stats) {
DCHECK_EQ(interaction_stats.username_value, stats->username_value);
DCHECK_EQ(interaction_stats.origin_domain, stats->origin_domain);
interaction_stats.dismissal_count = stats->dismissal_count;
}
} else if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
- password_overridden_ = delegate->IsPasswordOverridden();
+ password_overridden_ = delegate_->IsPasswordOverridden();
}
manage_link_ =
@@ -327,17 +317,13 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel(
interaction_keeper_.reset(new InteractionKeeper(std::move(interaction_stats),
display_disposition));
- delegate->OnBubbleShown();
+ delegate_->OnBubbleShown();
}
ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() {
interaction_keeper_->ReportInteractions(this);
- // web_contents() is nullptr if the tab is closing.
- PasswordsModelDelegate* delegate =
- web_contents() ? PasswordsModelDelegateFromWebContents(web_contents())
- : nullptr;
- if (delegate)
- delegate->OnBubbleHidden();
+ if (delegate_)
+ delegate_->OnBubbleHidden();
}
void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() {
@@ -345,8 +331,8 @@ void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() {
interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_NEVER);
interaction_keeper_->set_update_password_submission_event(
GetUpdateDismissalReason(NOPE_CLICKED));
- CleanStatisticsForSite(web_contents(), origin_);
- PasswordsModelDelegateFromWebContents(web_contents())->NeverSavePassword();
+ CleanStatisticsForSite(GetProfile(), origin_);
+ delegate_->NeverSavePassword();
}
void ManagePasswordsBubbleModel::OnSaveClicked() {
@@ -354,22 +340,21 @@ void ManagePasswordsBubbleModel::OnSaveClicked() {
interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_SAVE);
interaction_keeper_->set_update_password_submission_event(
GetUpdateDismissalReason(UPDATE_CLICKED));
- CleanStatisticsForSite(web_contents(), origin_);
- PasswordsModelDelegateFromWebContents(web_contents())->SavePassword();
+ CleanStatisticsForSite(GetProfile(), origin_);
+ delegate_->SavePassword();
}
void ManagePasswordsBubbleModel::OnNopeUpdateClicked() {
interaction_keeper_->set_update_password_submission_event(
GetUpdateDismissalReason(NOPE_CLICKED));
- PasswordsModelDelegateFromWebContents(web_contents())->OnNopeUpdateClicked();
+ delegate_->OnNopeUpdateClicked();
}
void ManagePasswordsBubbleModel::OnUpdateClicked(
const autofill::PasswordForm& password_form) {
interaction_keeper_->set_update_password_submission_event(
GetUpdateDismissalReason(UPDATE_CLICKED));
- PasswordsModelDelegateFromWebContents(web_contents())->UpdatePassword(
- password_form);
+ delegate_->UpdatePassword(password_form);
}
void ManagePasswordsBubbleModel::OnDoneClicked() {
@@ -386,18 +371,15 @@ void ManagePasswordsBubbleModel::OnManageLinkClicked() {
interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_MANAGE);
if (GetSmartLockBrandingState(GetProfile()) ==
password_bubble_experiment::SmartLockBranding::FULL) {
- PasswordsModelDelegateFromWebContents(web_contents())
- ->NavigateToExternalPasswordManager();
+ delegate_->NavigateToExternalPasswordManager();
} else {
- PasswordsModelDelegateFromWebContents(web_contents())
- ->NavigateToPasswordManagerSettingsPage();
+ delegate_->NavigateToPasswordManagerSettingsPage();
}
}
void ManagePasswordsBubbleModel::OnBrandLinkClicked() {
interaction_keeper_->set_dismissal_reason(metrics_util::CLICKED_BRAND_NAME);
- PasswordsModelDelegateFromWebContents(web_contents())
- ->NavigateToSmartLockHelpPage();
+ delegate_->NavigateToSmartLockHelpPage();
}
void ManagePasswordsBubbleModel::OnAutoSignInToastTimeout() {
@@ -426,8 +408,7 @@ void ManagePasswordsBubbleModel::OnSignInToChromeClicked() {
metrics_util::CHROME_SIGNIN_OK);
GetProfile()->GetPrefs()->SetBoolean(
password_manager::prefs::kWasSignInPasswordPromoClicked, true);
- PasswordsModelDelegateFromWebContents(web_contents())
- ->NavigateToChromeSignIn();
+ delegate_->NavigateToChromeSignIn();
}
void ManagePasswordsBubbleModel::OnSkipSignInClicked() {
@@ -438,7 +419,11 @@ void ManagePasswordsBubbleModel::OnSkipSignInClicked() {
}
Profile* ManagePasswordsBubbleModel::GetProfile() const {
- return GetProfileFromWebContents(web_contents());
+ return GetProfileFromWebContents(GetWebContents());
+}
+
+content::WebContents* ManagePasswordsBubbleModel::GetWebContents() const {
+ return delegate_ ? delegate_->GetWebContents() : nullptr;
}
bool ManagePasswordsBubbleModel::ShouldShowMultipleAccountUpdateUI() const {
@@ -491,14 +476,14 @@ void ManagePasswordsBubbleModel::UpdatePendingStateTitle() {
? PasswordTittleType::SAVE_PASSWORD
: PasswordTittleType::SAVE_ACCOUNT);
GetSavePasswordDialogTitleTextAndLinkRange(
- web_contents()->GetVisibleURL(), origin_,
+ GetWebContents()->GetVisibleURL(), origin_,
GetSmartLockBrandingState(GetProfile()) !=
password_bubble_experiment::SmartLockBranding::NONE,
type, &title_, &title_brand_link_range_);
}
void ManagePasswordsBubbleModel::UpdateManageStateTitle() {
- GetManagePasswordsDialogTitleText(web_contents()->GetVisibleURL(), origin_,
+ GetManagePasswordsDialogTitleText(GetWebContents()->GetVisibleURL(), origin_,
&title_);
}

Powered by Google App Engine
This is Rietveld 408576698