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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <limits> | 10 #include <limits> |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 | 43 |
44 void CleanStatisticsForSite(Profile* profile, const GURL& origin) { | 44 void CleanStatisticsForSite(Profile* profile, const GURL& origin) { |
45 DCHECK(profile); | 45 DCHECK(profile); |
46 password_manager::PasswordStore* password_store = | 46 password_manager::PasswordStore* password_store = |
47 PasswordStoreFactory::GetForProfile(profile, | 47 PasswordStoreFactory::GetForProfile(profile, |
48 ServiceAccessType::IMPLICIT_ACCESS) | 48 ServiceAccessType::IMPLICIT_ACCESS) |
49 .get(); | 49 .get(); |
50 password_store->RemoveSiteStats(origin.GetOrigin()); | 50 password_store->RemoveSiteStats(origin.GetOrigin()); |
51 } | 51 } |
52 | 52 |
53 ScopedVector<const autofill::PasswordForm> DeepCopyForms( | 53 std::vector<autofill::PasswordForm> DeepCopyForms( |
54 const std::vector<const autofill::PasswordForm*>& forms) { | 54 const std::vector<std::unique_ptr<autofill::PasswordForm>>& forms) { |
55 ScopedVector<const autofill::PasswordForm> result; | 55 std::vector<autofill::PasswordForm> result; |
56 result.reserve(forms.size()); | 56 result.reserve(forms.size()); |
57 std::transform(forms.begin(), forms.end(), std::back_inserter(result), | 57 std::transform(forms.begin(), forms.end(), std::back_inserter(result), |
58 [](const autofill::PasswordForm* form) { | 58 [](const std::unique_ptr<autofill::PasswordForm>& form) { |
59 return new autofill::PasswordForm(*form); | 59 return *form; |
60 }); | 60 }); |
61 return result; | 61 return result; |
62 } | 62 } |
63 | 63 |
64 password_bubble_experiment::SmartLockBranding GetSmartLockBrandingState( | 64 password_bubble_experiment::SmartLockBranding GetSmartLockBrandingState( |
65 Profile* profile) { | 65 Profile* profile) { |
66 const ProfileSyncService* sync_service = | 66 const ProfileSyncService* sync_service = |
67 ProfileSyncServiceFactory::GetForProfile(profile); | 67 ProfileSyncServiceFactory::GetForProfile(profile); |
68 return password_bubble_experiment::GetSmartLockBrandingState(sync_service); | 68 return password_bubble_experiment::GetSmartLockBrandingState(sync_service); |
69 } | 69 } |
70 | 70 |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 } | 199 } |
200 } | 200 } |
201 | 201 |
202 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( | 202 ManagePasswordsBubbleModel::ManagePasswordsBubbleModel( |
203 base::WeakPtr<PasswordsModelDelegate> delegate, | 203 base::WeakPtr<PasswordsModelDelegate> delegate, |
204 DisplayReason display_reason) | 204 DisplayReason display_reason) |
205 : password_overridden_(false), | 205 : password_overridden_(false), |
206 delegate_(std::move(delegate)) { | 206 delegate_(std::move(delegate)) { |
207 origin_ = delegate_->GetOrigin(); | 207 origin_ = delegate_->GetOrigin(); |
208 state_ = delegate_->GetState(); | 208 state_ = delegate_->GetState(); |
| 209 password_manager::InteractionsStats interaction_stats; |
209 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || | 210 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || |
210 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { | 211 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { |
211 pending_password_ = delegate_->GetPendingPassword(); | 212 pending_password_ = delegate_->GetPendingPassword(); |
212 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms()); | 213 if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { |
213 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { | 214 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms()); |
214 // We don't need anything. | 215 password_overridden_ = delegate_->IsPasswordOverridden(); |
215 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { | 216 } else { |
216 pending_password_ = delegate_->GetPendingPassword(); | 217 interaction_stats.origin_domain = origin_.GetOrigin(); |
217 } else { | 218 interaction_stats.username_value = pending_password_.username_value; |
218 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms()); | 219 password_manager::InteractionsStats* stats = |
219 } | 220 delegate_->GetCurrentInteractionStats(); |
220 | 221 if (stats) { |
221 if (state_ == password_manager::ui::PENDING_PASSWORD_STATE || | 222 DCHECK_EQ(interaction_stats.username_value, stats->username_value); |
222 state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { | 223 DCHECK_EQ(interaction_stats.origin_domain, stats->origin_domain); |
| 224 interaction_stats.dismissal_count = stats->dismissal_count; |
| 225 } |
| 226 } |
223 UpdatePendingStateTitle(); | 227 UpdatePendingStateTitle(); |
224 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { | 228 } else if (state_ == password_manager::ui::CONFIRMATION_STATE) { |
225 title_ = | 229 title_ = |
226 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE); | 230 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TITLE); |
227 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { | 231 } else if (state_ == password_manager::ui::AUTO_SIGNIN_STATE) { |
228 // There is no title. | 232 pending_password_ = delegate_->GetPendingPassword(); |
229 } else if (state_ == password_manager::ui::MANAGE_STATE) { | 233 } else if (state_ == password_manager::ui::MANAGE_STATE) { |
| 234 local_credentials_ = DeepCopyForms(delegate_->GetCurrentForms()); |
230 UpdateManageStateTitle(); | 235 UpdateManageStateTitle(); |
| 236 manage_link_ = |
| 237 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); |
231 } | 238 } |
232 | 239 |
233 password_manager::InteractionsStats interaction_stats; | |
234 if (state_ == password_manager::ui::CONFIRMATION_STATE) { | 240 if (state_ == password_manager::ui::CONFIRMATION_STATE) { |
235 base::string16 save_confirmation_link = | 241 base::string16 save_confirmation_link = |
236 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_LINK); | 242 l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_LINK); |
237 int confirmation_text_id = IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT; | 243 int confirmation_text_id = IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_TEXT; |
238 if (GetSmartLockBrandingState(GetProfile()) == | 244 if (GetSmartLockBrandingState(GetProfile()) == |
239 password_bubble_experiment::SmartLockBranding::FULL) { | 245 password_bubble_experiment::SmartLockBranding::FULL) { |
240 std::string management_hostname = | 246 std::string management_hostname = |
241 GURL(password_manager::kPasswordManagerAccountDashboardURL).host(); | 247 GURL(password_manager::kPasswordManagerAccountDashboardURL).host(); |
242 save_confirmation_link = base::UTF8ToUTF16(management_hostname); | 248 save_confirmation_link = base::UTF8ToUTF16(management_hostname); |
243 confirmation_text_id = | 249 confirmation_text_id = |
244 IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_SMART_LOCK_TEXT; | 250 IDS_MANAGE_PASSWORDS_CONFIRM_GENERATED_SMART_LOCK_TEXT; |
245 } | 251 } |
246 | 252 |
247 size_t offset; | 253 size_t offset; |
248 save_confirmation_text_ = | 254 save_confirmation_text_ = |
249 l10n_util::GetStringFUTF16( | 255 l10n_util::GetStringFUTF16( |
250 confirmation_text_id, save_confirmation_link, &offset); | 256 confirmation_text_id, save_confirmation_link, &offset); |
251 save_confirmation_link_range_ = | 257 save_confirmation_link_range_ = |
252 gfx::Range(offset, offset + save_confirmation_link.length()); | 258 gfx::Range(offset, offset + save_confirmation_link.length()); |
253 } else if (state_ == password_manager::ui::PENDING_PASSWORD_STATE) { | |
254 interaction_stats.origin_domain = origin_.GetOrigin(); | |
255 interaction_stats.username_value = pending_password_.username_value; | |
256 password_manager::InteractionsStats* stats = | |
257 delegate_->GetCurrentInteractionStats(); | |
258 if (stats) { | |
259 DCHECK_EQ(interaction_stats.username_value, stats->username_value); | |
260 DCHECK_EQ(interaction_stats.origin_domain, stats->origin_domain); | |
261 interaction_stats.dismissal_count = stats->dismissal_count; | |
262 } | |
263 } else if (state_ == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) { | |
264 password_overridden_ = delegate_->IsPasswordOverridden(); | |
265 } | 259 } |
266 | 260 |
267 manage_link_ = | |
268 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK); | |
269 | |
270 password_manager::metrics_util::UIDisplayDisposition display_disposition = | 261 password_manager::metrics_util::UIDisplayDisposition display_disposition = |
271 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING; | 262 metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING; |
272 if (display_reason == USER_ACTION) { | 263 if (display_reason == USER_ACTION) { |
273 switch (state_) { | 264 switch (state_) { |
274 case password_manager::ui::PENDING_PASSWORD_STATE: | 265 case password_manager::ui::PENDING_PASSWORD_STATE: |
275 display_disposition = metrics_util::MANUAL_WITH_PASSWORD_PENDING; | 266 display_disposition = metrics_util::MANUAL_WITH_PASSWORD_PENDING; |
276 break; | 267 break; |
277 case password_manager::ui::PENDING_PASSWORD_UPDATE_STATE: | 268 case password_manager::ui::PENDING_PASSWORD_UPDATE_STATE: |
278 display_disposition = | 269 display_disposition = |
279 metrics_util::MANUAL_WITH_PASSWORD_PENDING_UPDATE; | 270 metrics_util::MANUAL_WITH_PASSWORD_PENDING_UPDATE; |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 return metrics_util::NO_UPDATE_SUBMISSION; | 501 return metrics_util::NO_UPDATE_SUBMISSION; |
511 } | 502 } |
512 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) | 503 if (state_ != password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) |
513 return metrics_util::NO_UPDATE_SUBMISSION; | 504 return metrics_util::NO_UPDATE_SUBMISSION; |
514 if (password_overridden_) | 505 if (password_overridden_) |
515 return update_events[3][behavior]; | 506 return update_events[3][behavior]; |
516 if (ShouldShowMultipleAccountUpdateUI()) | 507 if (ShouldShowMultipleAccountUpdateUI()) |
517 return update_events[2][behavior]; | 508 return update_events[2][behavior]; |
518 return update_events[1][behavior]; | 509 return update_events[1][behavior]; |
519 } | 510 } |
OLD | NEW |