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 |