| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 5 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
| 6 | 6 |
| 7 #include "chrome/browser/password_manager/password_store_factory.h" | 7 #include "chrome/browser/password_manager/password_store_factory.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/browser/ui/browser.h" | 9 #include "chrome/browser/ui/browser.h" |
| 10 #include "chrome/browser/ui/browser_finder.h" | 10 #include "chrome/browser/ui/browser_finder.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 content::WebContents* web_contents) | 113 content::WebContents* web_contents) |
| 114 : content::WebContentsObserver(web_contents), | 114 : content::WebContentsObserver(web_contents), |
| 115 never_save_passwords_(false), | 115 never_save_passwords_(false), |
| 116 display_disposition_(metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING), | 116 display_disposition_(metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING), |
| 117 dismissal_reason_(metrics_util::NOT_DISPLAYED) { | 117 dismissal_reason_(metrics_util::NOT_DISPLAYED) { |
| 118 ManagePasswordsUIController* controller = | 118 ManagePasswordsUIController* controller = |
| 119 ManagePasswordsUIController::FromWebContents(web_contents); | 119 ManagePasswordsUIController::FromWebContents(web_contents); |
| 120 | 120 |
| 121 origin_ = controller->origin(); | 121 origin_ = controller->origin(); |
| 122 state_ = controller->state(); | 122 state_ = controller->state(); |
| 123 if (password_manager::ui::IsPendingState(state_)) | 123 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) |
| 124 pending_password_ = controller->PendingPassword(); | 124 pending_password_ = controller->PendingPassword(); |
| 125 if (password_manager::ui::IsCredentialsState(state_)) { | 125 if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { |
| 126 local_pending_credentials_.swap(controller->local_credentials_forms()); | 126 local_pending_credentials_.swap(controller->local_credentials_forms()); |
| 127 federated_pending_credentials_.swap( | 127 federated_pending_credentials_.swap( |
| 128 controller->federated_credentials_forms()); | 128 controller->federated_credentials_forms()); |
| 129 } else { | 129 } else { |
| 130 best_matches_ = controller->best_matches(); | 130 best_matches_ = controller->best_matches(); |
| 131 } | 131 } |
| 132 | 132 |
| 133 if (password_manager::ui::IsPendingState(state_)) { | 133 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) { |
| 134 title_ = PendingStateTitleBasedOnSavePasswordPref(never_save_passwords_); | 134 title_ = PendingStateTitleBasedOnSavePasswordPref(never_save_passwords_); |
| 135 } else if (state_ == password_manager::ui::BLACKLIST_STATE) { | 135 } else if (state_ == password_manager::ui::BLACKLIST_STATE) { |
| 136 title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_BLACKLISTED_TITLE); | 136 title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_BLACKLISTED_TITLE); |
| 137 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { | 137 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { |
| 138 title_ = | 138 title_ = |
| 139 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE); | 139 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE); |
| 140 } else if (password_manager::ui::IsCredentialsState(state_)) { | 140 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { |
| 141 title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CHOOSE_TITLE); | 141 title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CHOOSE_TITLE); |
| 142 } else if (password_manager::ui::IsAskSubmitURLState(state_)) { | 142 } else if (password_manager::ui::IsAskSubmitURLState(state_)) { |
| 143 title_ = | 143 title_ = |
| 144 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_ASK_TO_SUBMIT_URL_TITLE); | 144 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_ASK_TO_SUBMIT_URL_TITLE); |
| 145 } else { | 145 } else { |
| 146 title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_TITLE); | 146 title_ = l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_TITLE); |
| 147 } | 147 } |
| 148 | 148 |
| 149 base::string16 save_confirmation_link = | 149 base::string16 save_confirmation_link = |
| 150 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_LINK); | 150 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_LINK); |
| 151 size_t offset; | 151 size_t offset; |
| 152 save_confirmation_text_ = | 152 save_confirmation_text_ = |
| 153 l10n_util::GetStringFUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT, | 153 l10n_util::GetStringFUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT, |
| 154 save_confirmation_link, &offset); | 154 save_confirmation_link, &offset); |
| 155 save_confirmation_link_range_ = | 155 save_confirmation_link_range_ = |
| 156 gfx::Range(offset, offset + save_confirmation_link.length()); | 156 gfx::Range(offset, offset + save_confirmation_link.length()); |
| 157 | 157 |
| 158 manage_link_ = | 158 manage_link_ = |
| 159 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); | 159 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); |
| 160 } | 160 } |
| 161 | 161 |
| 162 ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() {} | 162 ManagePasswordsBubbleModel::~ManagePasswordsBubbleModel() {} |
| 163 | 163 |
| 164 void ManagePasswordsBubbleModel::OnBubbleShown( | 164 void ManagePasswordsBubbleModel::OnBubbleShown( |
| 165 ManagePasswordsBubble::DisplayReason reason) { | 165 ManagePasswordsBubble::DisplayReason reason) { |
| 166 if (reason == ManagePasswordsBubble::USER_ACTION) { | 166 if (reason == ManagePasswordsBubble::USER_ACTION) { |
| 167 if (password_manager::ui::IsPendingState(state_)) { | 167 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) { |
| 168 display_disposition_ = metrics_util::MANUAL_WITH_PASSWORD_PENDING; | 168 display_disposition_ = metrics_util::MANUAL_WITH_PASSWORD_PENDING; |
| 169 } else if (state_ == password_manager::ui::BLACKLIST_STATE) { | 169 } else if (state_ == password_manager::ui::BLACKLIST_STATE) { |
| 170 display_disposition_ = metrics_util::MANUAL_BLACKLISTED; | 170 display_disposition_ = metrics_util::MANUAL_BLACKLISTED; |
| 171 } else { | 171 } else { |
| 172 display_disposition_ = metrics_util::MANUAL_MANAGE_PASSWORDS; | 172 display_disposition_ = metrics_util::MANUAL_MANAGE_PASSWORDS; |
| 173 } | 173 } |
| 174 } else { | 174 } else { |
| 175 if (state_ == password_manager::ui::CONFIRMATION_STATE) { | 175 if (state_ == password_manager::ui::CONFIRMATION_STATE) { |
| 176 display_disposition_ = | 176 display_disposition_ = |
| 177 metrics_util::AUTOMATIC_GENERATED_PASSWORD_CONFIRMATION; | 177 metrics_util::AUTOMATIC_GENERATED_PASSWORD_CONFIRMATION; |
| 178 } else if (password_manager::ui::IsCredentialsState(state_)) { | 178 } else if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE) { |
| 179 display_disposition_ = metrics_util::AUTOMATIC_CREDENTIAL_REQUEST; | 179 display_disposition_ = metrics_util::AUTOMATIC_CREDENTIAL_REQUEST; |
| 180 } else { | 180 } else { |
| 181 display_disposition_ = metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING; | 181 display_disposition_ = metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING; |
| 182 } | 182 } |
| 183 } | 183 } |
| 184 if (password_manager::ui::IsAskSubmitURLState(state_)) | 184 if (password_manager::ui::IsAskSubmitURLState(state_)) |
| 185 RecordURLsCollectionExperimentStatistics(web_contents()); | 185 RecordURLsCollectionExperimentStatistics(web_contents()); |
| 186 metrics_util::LogUIDisplayDisposition(display_disposition_); | 186 metrics_util::LogUIDisplayDisposition(display_disposition_); |
| 187 | 187 |
| 188 // Default to a dismissal reason of "no interaction". If the user interacts | 188 // Default to a dismissal reason of "no interaction". If the user interacts |
| 189 // with the button in such a way that it closes, we'll reset this value | 189 // with the button in such a way that it closes, we'll reset this value |
| 190 // accordingly. | 190 // accordingly. |
| 191 dismissal_reason_ = metrics_util::NO_DIRECT_INTERACTION; | 191 dismissal_reason_ = metrics_util::NO_DIRECT_INTERACTION; |
| 192 | 192 |
| 193 ManagePasswordsUIController* controller = | 193 ManagePasswordsUIController* controller = |
| 194 ManagePasswordsUIController::FromWebContents(web_contents()); | 194 ManagePasswordsUIController::FromWebContents(web_contents()); |
| 195 controller->OnBubbleShown(); | 195 controller->OnBubbleShown(); |
| 196 } | 196 } |
| 197 | 197 |
| 198 void ManagePasswordsBubbleModel::OnBubbleHidden() { | 198 void ManagePasswordsBubbleModel::OnBubbleHidden() { |
| 199 if (password_manager::ui::IsCredentialsState(state_) && web_contents()) { | 199 ManagePasswordsUIController* manage_passwords_ui_controller = |
| 200 web_contents() ? |
| 201 ManagePasswordsUIController::FromWebContents(web_contents()) |
| 202 : nullptr; |
| 203 if (state_ == password_manager::ui::CREDENTIAL_REQUEST_STATE && |
| 204 manage_passwords_ui_controller) { |
| 200 // It's time to run the pending callback if it wasn't called in | 205 // It's time to run the pending callback if it wasn't called in |
| 201 // OnChooseCredentials(). | 206 // OnChooseCredentials(). |
| 202 ManagePasswordsUIController* manage_passwords_ui_controller = | |
| 203 ManagePasswordsUIController::FromWebContents(web_contents()); | |
| 204 manage_passwords_ui_controller->ChooseCredential( | 207 manage_passwords_ui_controller->ChooseCredential( |
| 205 autofill::PasswordForm(), | 208 autofill::PasswordForm(), |
| 206 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); | 209 password_manager::CredentialType::CREDENTIAL_TYPE_EMPTY); |
| 207 state_ = password_manager::ui::INACTIVE_STATE; | 210 state_ = password_manager::ui::INACTIVE_STATE; |
| 208 } | 211 } |
| 212 if (manage_passwords_ui_controller) |
| 213 manage_passwords_ui_controller->OnBubbleHidden(); |
| 209 if (dismissal_reason_ == metrics_util::NOT_DISPLAYED) | 214 if (dismissal_reason_ == metrics_util::NOT_DISPLAYED) |
| 210 return; | 215 return; |
| 211 | 216 |
| 212 if (password_manager::ui::IsAskSubmitURLState(state_)) { | 217 if (password_manager::ui::IsAskSubmitURLState(state_)) { |
| 213 state_ = password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE; | 218 state_ = password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE; |
| 214 metrics_util::LogAllowToCollectURLBubbleUIDismissalReason( | 219 metrics_util::LogAllowToCollectURLBubbleUIDismissalReason( |
| 215 dismissal_reason_); | 220 dismissal_reason_); |
| 216 // Return since we do not want to include "Allow to collect URL?" bubble | 221 // Return since we do not want to include "Allow to collect URL?" bubble |
| 217 // data in other PasswordManager metrics. | 222 // data in other PasswordManager metrics. |
| 218 return; | 223 return; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 241 dismissal_reason_ = metrics_util::CLICKED_DO_NOT_COLLECT_URL; | 246 dismissal_reason_ = metrics_util::CLICKED_DO_NOT_COLLECT_URL; |
| 242 RecordExperimentStatistics(web_contents(), dismissal_reason_); | 247 RecordExperimentStatistics(web_contents(), dismissal_reason_); |
| 243 // User interaction with bubble has happened, do not need to show bubble | 248 // User interaction with bubble has happened, do not need to show bubble |
| 244 // in case it was before transition to another page. | 249 // in case it was before transition to another page. |
| 245 state_ = password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE; | 250 state_ = password_manager::ui::ASK_USER_REPORT_URL_BUBBLE_SHOWN_STATE; |
| 246 } | 251 } |
| 247 | 252 |
| 248 void ManagePasswordsBubbleModel::OnNopeClicked() { | 253 void ManagePasswordsBubbleModel::OnNopeClicked() { |
| 249 dismissal_reason_ = metrics_util::CLICKED_NOPE; | 254 dismissal_reason_ = metrics_util::CLICKED_NOPE; |
| 250 RecordExperimentStatistics(web_contents(), dismissal_reason_); | 255 RecordExperimentStatistics(web_contents(), dismissal_reason_); |
| 251 if (!password_manager::ui::IsCredentialsState(state_)) | 256 if (state_ != password_manager::ui::CREDENTIAL_REQUEST_STATE) |
| 252 state_ = password_manager::ui::PENDING_PASSWORD_STATE; | 257 state_ = password_manager::ui::PENDING_PASSWORD_STATE; |
| 253 } | 258 } |
| 254 | 259 |
| 255 void ManagePasswordsBubbleModel::OnConfirmationForNeverForThisSite() { | 260 void ManagePasswordsBubbleModel::OnConfirmationForNeverForThisSite() { |
| 256 never_save_passwords_ = true; | 261 never_save_passwords_ = true; |
| 257 title_ = PendingStateTitleBasedOnSavePasswordPref(never_save_passwords_); | 262 title_ = PendingStateTitleBasedOnSavePasswordPref(never_save_passwords_); |
| 258 } | 263 } |
| 259 | 264 |
| 260 void ManagePasswordsBubbleModel::OnUndoNeverForThisSite() { | 265 void ManagePasswordsBubbleModel::OnUndoNeverForThisSite() { |
| 261 never_save_passwords_ = false; | 266 never_save_passwords_ = false; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 | 344 |
| 340 // static | 345 // static |
| 341 int ManagePasswordsBubbleModel::UsernameFieldWidth() { | 346 int ManagePasswordsBubbleModel::UsernameFieldWidth() { |
| 342 return GetFieldWidth(USERNAME_FIELD); | 347 return GetFieldWidth(USERNAME_FIELD); |
| 343 } | 348 } |
| 344 | 349 |
| 345 // static | 350 // static |
| 346 int ManagePasswordsBubbleModel::PasswordFieldWidth() { | 351 int ManagePasswordsBubbleModel::PasswordFieldWidth() { |
| 347 return GetFieldWidth(PASSWORD_FIELD); | 352 return GetFieldWidth(PASSWORD_FIELD); |
| 348 } | 353 } |
| OLD | NEW |