| Index: chrome/browser/password_manager/native_backend_kwallet_x.cc
|
| diff --git a/chrome/browser/password_manager/native_backend_kwallet_x.cc b/chrome/browser/password_manager/native_backend_kwallet_x.cc
|
| index c9ec8c4d9ffdea5ed76df923fa62877505365503..08c23a98bdf26acc6bc0ebe77405e95ad7337eec 100644
|
| --- a/chrome/browser/password_manager/native_backend_kwallet_x.cc
|
| +++ b/chrome/browser/password_manager/native_backend_kwallet_x.cc
|
| @@ -301,23 +301,35 @@ password_manager::PasswordStoreChangeList NativeBackendKWallet::AddLogin(
|
| return changes;
|
| }
|
|
|
| -bool NativeBackendKWallet::UpdateLogin(const PasswordForm& form) {
|
| +bool NativeBackendKWallet::UpdateLogin(
|
| + const PasswordForm& form,
|
| + password_manager::PasswordStoreChangeList* changes) {
|
| + DCHECK(changes);
|
| + changes->clear();
|
| int wallet_handle = WalletHandle();
|
| if (wallet_handle == kInvalidKWalletHandle)
|
| return false;
|
|
|
| - PasswordFormList forms;
|
| - GetLoginsList(&forms, form.signon_realm, wallet_handle);
|
| + ScopedVector<autofill::PasswordForm> forms;
|
| + GetLoginsList(&forms.get(), form.signon_realm, wallet_handle);
|
|
|
| + bool updated = false;
|
| for (size_t i = 0; i < forms.size(); ++i) {
|
| - if (CompareForms(form, *forms[i], true))
|
| + if (CompareForms(form, *forms[i], true)) {
|
| *forms[i] = form;
|
| + updated = true;
|
| + }
|
| }
|
| + if (!updated)
|
| + return true;
|
|
|
| - bool ok = SetLoginsList(forms, form.signon_realm, wallet_handle);
|
| + if (SetLoginsList(forms.get(), form.signon_realm, wallet_handle)) {
|
| + changes->push_back(password_manager::PasswordStoreChange(
|
| + password_manager::PasswordStoreChange::UPDATE, form));
|
| + return true;
|
| + }
|
|
|
| - STLDeleteElements(&forms);
|
| - return ok;
|
| + return false;
|
| }
|
|
|
| bool NativeBackendKWallet::RemoveLogin(const PasswordForm& form) {
|
|
|