| 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 |