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 5c06cbfc71cb7542948fe304acd18821c59e3781..687dca2a90f47b1367a8f3b141ddb4acef686fd8 100644 |
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc |
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc |
@@ -7,9 +7,7 @@ |
#include "chrome/browser/password_manager/password_store_factory.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_finder.h" |
-#include "chrome/browser/ui/chrome_pages.h" |
#include "chrome/browser/ui/passwords/manage_passwords_bubble_ui_controller.h" |
-#include "chrome/common/url_constants.h" |
#include "components/password_manager/core/browser/password_store.h" |
#include "grit/generated_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -20,7 +18,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_); |
@@ -33,7 +34,7 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( |
(manage_passwords_bubble_state_ == PASSWORD_TO_BE_SAVED) ? |
IDS_SAVE_PASSWORD : IDS_MANAGE_PASSWORDS); |
pending_credentials_ = |
- manage_passwords_bubble_ui_controller->pending_credentials(); |
+ manage_passwords_bubble_ui_controller->PendingCredentials(); |
best_matches_ = manage_passwords_bubble_ui_controller->best_matches(); |
manage_link_ = |
l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); |
@@ -41,11 +42,50 @@ ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( |
ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() {} |
+void ManagePasswordsBubbleModel::OnBubbleShown( |
+ ManagePasswordsBubble::DisplayReason reason) { |
+ DCHECK(WaitingToSavePassword() || |
+ reason == ManagePasswordsBubble::USER_ACTION); |
+ if (reason == ManagePasswordsBubble::USER_ACTION) { |
+ if (WaitingToSavePassword()) { |
+ 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. |
+ display_disposition_ = |
+ password_manager::metrics_util::MANUAL_MANAGE_PASSWORDS; |
+ } |
+ } else { |
+ 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. |
+ 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() { |
+ dismissal_reason_ = password_manager::metrics_util::NOT_DISPLAYED; |
+} |
+ |
void ManagePasswordsBubbleModel::OnNopeClicked() { |
+ dismissal_reason_ = password_manager::metrics_util::CLICKED_NOPE; |
manage_passwords_bubble_state_ = PASSWORD_TO_BE_SAVED; |
} |
void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() { |
+ dismissal_reason_ = password_manager::metrics_util::CLICKED_NEVER; |
ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = |
ManagePasswordsBubbleUIController::FromWebContents(web_contents_); |
manage_passwords_bubble_ui_controller->NeverSavePassword(); |
@@ -54,6 +94,7 @@ void ManagePasswordsBubbleModel::OnNeverForThisSiteClicked() { |
} |
void ManagePasswordsBubbleModel::OnSaveClicked() { |
+ dismissal_reason_ = password_manager::metrics_util::CLICKED_SAVE; |
ManagePasswordsBubbleUIController* manage_passwords_bubble_ui_controller = |
ManagePasswordsBubbleUIController::FromWebContents(web_contents_); |
manage_passwords_bubble_ui_controller->SavePassword(); |
@@ -61,9 +102,14 @@ void ManagePasswordsBubbleModel::OnSaveClicked() { |
manage_passwords_bubble_state_ = MANAGE_PASSWORDS; |
} |
+void ManagePasswordsBubbleModel::OnDoneClicked() { |
+ dismissal_reason_ = password_manager::metrics_util::CLICKED_DONE; |
+} |
+ |
void ManagePasswordsBubbleModel::OnManageLinkClicked() { |
- chrome::ShowSettingsSubPage(chrome::FindBrowserWithWebContents(web_contents_), |
- chrome::kPasswordManagerSubPage); |
+ dismissal_reason_ = password_manager::metrics_util::CLICKED_MANAGE; |
+ ManagePasswordsBubbleUIController::FromWebContents(web_contents_) |
+ ->NavigateToPasswordManagerSettingsPage(); |
} |
void ManagePasswordsBubbleModel::OnPasswordAction( |