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 16c4cf2e5c3d211c5583cb4b13e80b653dbf79fb..ffcafa686c88a0b723c0d4e7ad86c0d3384dd087 100644 |
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc |
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc |
@@ -20,7 +20,10 @@ using autofill::PasswordFormMap; |
ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( |
content::WebContents* web_contents) |
: content::WebContentsObserver(web_contents), |
- web_contents_(web_contents) { |
+ web_contents_(web_contents), |
+ display_disposition_( |
+ password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING), |
+ dismissal_reason_(password_manager::metrics_util::NOT_DISPLAYED) { |
ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = |
ManagePasswordsBubbleUIController::FromWebContents(web_contents_); |
@@ -49,11 +52,51 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( |
ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() {} |
+void ManagePasswordsBubbleModel::OnBubbleShown( |
+ ManagePasswordsBubble::DisplayReason reason) { |
+ DCHECK(WaitingToSavePassword() || |
+ reason == ManagePasswordsBubble::USER_ACTION); |
+ if (reason == ManagePasswordsBubble::USER_ACTION) { |
+ if (WaitingToSavePassword()) { |
+ set_display_disposition( |
+ password_manager::metrics_util::MANUAL_WITH_PASSWORD_PENDING); |
+ } else { |
+ // TODO(mkwst): Deal with "Never save passwords" once we've decided how |
+ // that flow should work. |
+ set_display_disposition( |
+ password_manager::metrics_util::MANUAL_MANAGE_PASSWORDS); |
+ } |
+ } else { |
+ set_display_disposition( |
+ password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING); |
+ } |
+ password_manager::metrics_util::LogUIDisplayDisposition( |
+ display_disposition()); |
+ |
+ // Default to a dismissal reason of "no interaction". If the user interacts |
+ // with the button in such a way that it closes, we'll reset this value |
+ // accordingly. |
+ set_dismissal_reason(password_manager::metrics_util::NO_DIRECT_INTERACTION); |
+} |
+ |
+void ManagePasswordsBubbleModel::OnBubbleHidden() { |
+ if (dismissal_reason() == password_manager::metrics_util::NOT_DISPLAYED) |
+ return; |
+ |
+ password_manager::metrics_util::LogUIDismissalReason(dismissal_reason()); |
+} |
+ |
+void ManagePasswordsBubbleModel::OnCloseWithoutLogging() { |
+ set_dismissal_reason(password_manager::metrics_util::NOT_DISPLAYED); |
+} |
+ |
void ManagePasswordsBubbleModel::OnNopeClicked() { |
+ set_dismissal_reason(password_manager::metrics_util::CLICKED_NOPE); |
manage_passwords_bubble_state_ = PASSWORD_TO_BE_SAVED; |
} |
void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() { |
+ set_dismissal_reason(password_manager::metrics_util::CLICKED_NEVER); |
ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = |
ManagePasswordsBubbleUIController::FromWebContents(web_contents_); |
manage_passwords_bubble_ui_controller->NeverSavePassword(); |
@@ -62,6 +105,7 @@ void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() { |
} |
void ManagePasswordsBubbleModel::OnSaveClicked() { |
+ set_dismissal_reason(password_manager::metrics_util::CLICKED_SAVE); |
ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = |
ManagePasswordsBubbleUIController::FromWebContents(web_contents_); |
manage_passwords_bubble_ui_controller->SavePassword(); |
@@ -69,7 +113,12 @@ void ManagePasswordsBubbleModel::OnSaveClicked() { |
manage_passwords_bubble_state_ = MANAGE_PASSWORDS_AFTER_SAVING; |
} |
+void ManagePasswordsBubbleModel::OnDoneClicked() { |
+ set_dismissal_reason(password_manager::metrics_util::CLICKED_DONE); |
+} |
+ |
void ManagePasswordsBubbleModel::OnManageLinkClicked() { |
+ set_dismissal_reason(password_manager::metrics_util::CLICKED_MANAGE); |
chrome::ShowSettingsSubPage(chrome::FindBrowserWithWebContents(web_contents_), |
chrome::kPasswordManagerSubPage); |
} |