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

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

Issue 839023003: Log password manager UI state changes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test crashes Created 5 years, 11 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_ui_controller.cc
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
index a9cc0141aab23a663b0a24c365e6ed9a6fdf626e..d897ff63083a4a0dd14cee5adbb4bdf93b502f15 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
@@ -6,6 +6,7 @@
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/browsing_data/browsing_data_helper.h"
+#include "chrome/browser/password_manager/chrome_password_manager_client.h"
#include "chrome/browser/password_manager/password_store_factory.h"
#include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -17,6 +18,7 @@
#include "chrome/browser/ui/tab_dialogs.h"
#include "chrome/common/url_constants.h"
#include "components/password_manager/content/common/credential_manager_types.h"
+#include "components/password_manager/core/browser/browser_save_password_progress_logger.h"
#include "components/password_manager/core/browser/password_form_manager.h"
#include "content/public/browser/navigation_details.h"
@@ -80,7 +82,7 @@ void ManagePasswordsUIController::UpdateBubbleAndIconVisibility() {
// display either the bubble or the icon.
if (!BrowsingDataHelper::IsWebScheme(
web_contents()->GetLastCommittedURL().scheme())) {
- state_ = password_manager::ui::INACTIVE_STATE;
+ SetState(password_manager::ui::INACTIVE_STATE);
}
#if !defined(OS_ANDROID)
@@ -99,7 +101,7 @@ base::TimeDelta ManagePasswordsUIController::Elapsed() const {
void ManagePasswordsUIController::OnAskToReportURL(const GURL& url) {
origin_ = url;
- state_ = password_manager::ui::ASK_USER_REPORT_URL_STATE;
+ SetState(password_manager::ui::ASK_USER_REPORT_URL_STATE);
UpdateBubbleAndIconVisibility();
}
@@ -108,7 +110,7 @@ void ManagePasswordsUIController::OnPasswordSubmitted(
form_manager_ = form_manager.Pass();
password_form_map_ = ConstifyMap(form_manager_->best_matches());
origin_ = PendingPassword().origin;
- state_ = password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE;
+ SetState(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE);
timer_.reset(new base::ElapsedTimer());
UpdateBubbleAndIconVisibility();
}
@@ -124,7 +126,7 @@ bool ManagePasswordsUIController::OnChooseCredentials(
new_password_forms_.swap(local_credentials);
// The map is useless because usernames may overlap.
password_form_map_.clear();
- state_ = password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE;
+ SetState(password_manager::ui::CREDENTIAL_REQUEST_AND_BUBBLE_STATE);
UpdateBubbleAndIconVisibility();
if (bubble_shown_)
credentials_callback_ = callback;
@@ -138,7 +140,7 @@ void ManagePasswordsUIController::OnAutomaticPasswordSave(
password_form_map_[form_manager_->associated_username()] =
&form_manager_->pending_credentials();
origin_ = form_manager_->pending_credentials().origin;
- state_ = password_manager::ui::CONFIRMATION_STATE;
+ SetState(password_manager::ui::CONFIRMATION_STATE);
UpdateBubbleAndIconVisibility();
}
@@ -148,9 +150,9 @@ void ManagePasswordsUIController::OnPasswordAutofilled(
origin_ = password_form_map_.begin()->second->origin;
// Don't show the UI for PSL matched passwords. They are not stored for this
// page and cannot be deleted.
- state_ = password_form_map_.begin()->second->IsPublicSuffixMatch()
+ SetState(password_form_map_.begin()->second->IsPublicSuffixMatch()
? password_manager::ui::INACTIVE_STATE
- : password_manager::ui::MANAGE_STATE;
+ : password_manager::ui::MANAGE_STATE);
UpdateBubbleAndIconVisibility();
}
@@ -158,7 +160,7 @@ void ManagePasswordsUIController::OnBlacklistBlockedAutofill(
const PasswordFormMap& password_form_map) {
DeepCopyMap(password_form_map, &password_form_map_, &new_password_forms_);
origin_ = password_form_map_.begin()->second->origin;
- state_ = password_manager::ui::BLACKLIST_STATE;
+ SetState(password_manager::ui::BLACKLIST_STATE);
UpdateBubbleAndIconVisibility();
}
@@ -176,13 +178,13 @@ void ManagePasswordsUIController::OnLoginsChanged(
if (it->type() == password_manager::PasswordStoreChange::REMOVE) {
password_form_map_.erase(changed_form.username_value);
if (changed_form.blacklisted_by_user)
- state_ = password_manager::ui::MANAGE_STATE;
+ SetState(password_manager::ui::MANAGE_STATE);
} else {
new_password_forms_.push_back(new autofill::PasswordForm(changed_form));
password_form_map_[changed_form.username_value] =
new_password_forms_.back();
if (changed_form.blacklisted_by_user)
- state_ = password_manager::ui::BLACKLIST_STATE;
+ SetState(password_manager::ui::BLACKLIST_STATE);
}
}
// TODO(vasilii): handle CREDENTIAL_REQUEST_STATE.
@@ -204,7 +206,7 @@ void ManagePasswordsUIController::
void ManagePasswordsUIController::SavePassword() {
DCHECK(PasswordPendingUserDecision());
SavePasswordInternal();
- state_ = password_manager::ui::MANAGE_STATE;
+ SetState(password_manager::ui::MANAGE_STATE);
UpdateBubbleAndIconVisibility();
}
@@ -217,7 +219,7 @@ void ManagePasswordsUIController::ChooseCredential(
password_manager::CredentialInfo(form) :
password_manager::CredentialInfo();
credentials_callback_.Run(info);
- state_ = password_manager::ui::INACTIVE_STATE;
+ SetState(password_manager::ui::INACTIVE_STATE);
UpdateBubbleAndIconVisibility();
}
@@ -229,7 +231,7 @@ void ManagePasswordsUIController::SavePasswordInternal() {
void ManagePasswordsUIController::NeverSavePassword() {
DCHECK(PasswordPendingUserDecision());
NeverSavePasswordInternal();
- state_ = password_manager::ui::BLACKLIST_STATE;
+ SetState(password_manager::ui::BLACKLIST_STATE);
UpdateBubbleAndIconVisibility();
}
@@ -253,7 +255,7 @@ void ManagePasswordsUIController::UnblacklistSite() {
GetPasswordStore(web_contents());
if (password_store)
password_store->RemoveLogin(*password_form_map_.begin()->second);
- state_ = password_manager::ui::MANAGE_STATE;
+ SetState(password_manager::ui::MANAGE_STATE);
UpdateBubbleAndIconVisibility();
}
@@ -275,12 +277,12 @@ void ManagePasswordsUIController::DidNavigateMainFrame(
ASK_USER_REPORT_URL_BUBBLE_SHOWN_BEFORE_TRANSITION_STATE) {
// TODO(melandory): Substitute this with a proper solution using
// provisional_save_manager.
- state_ = password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE;
+ SetState(password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE);
return;
}
// Otherwise, reset the password manager and the timer.
- state_ = password_manager::ui::INACTIVE_STATE;
+ SetState(password_manager::ui::INACTIVE_STATE);
UpdateBubbleAndIconVisibility();
timer_.reset(new base::ElapsedTimer());
}
@@ -291,6 +293,19 @@ void ManagePasswordsUIController::WasHidden() {
#endif
}
+void ManagePasswordsUIController::SetState(password_manager::ui::State state) {
+ password_manager::PasswordManagerClient* client =
+ ChromePasswordManagerClient::FromWebContents(web_contents());
+ // |client| might be NULL in tests.
+ if (client && client->IsLoggingActive()) {
+ password_manager::BrowserSavePasswordProgressLogger logger(client);
+ logger.LogNumber(
+ autofill::SavePasswordProgressLogger::STRING_NEW_UI_STATE,
+ state);
+ }
+ state_ = state;
+}
+
const autofill::PasswordForm& ManagePasswordsUIController::
PendingPassword() const {
DCHECK(form_manager_);
@@ -309,7 +324,7 @@ void ManagePasswordsUIController::UpdateIconAndBubbleState(
GetEndStateForAutomaticState(state_);
icon->SetState(end_state);
ShowBubbleWithoutUserInteraction();
- state_ = end_state;
+ SetState(end_state);
} else {
icon->SetState(state_);
}

Powered by Google App Engine
This is Rietveld 408576698