New issue
Advanced search Search tips

Issue 725883 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 27
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome
Pri: 3
Type: Feature


Sign in to add a comment

[Password Manager] Implement manual fallback for password saving

Project Member Reported by kolos@chromium.org, May 24 2017

Issue description

Keyicon with anchored save/update prompt should appear in the omnibox right after user starts typing the password.
 
Project Member

Comment 1 by bugdroid1@chromium.org, May 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9

commit b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9
Author: kolos <kolos@chromium.org>
Date: Wed May 31 12:42:55 2017

[Password Manager] Convert |pending_login_managers_| to an array of scoped_refptr

Before this CL, |pending_login_managers_| was an array of unique_ptr. So, we have to pass ownership to | PasswordsClientUIDelegate|. When manual fallback for password saving is implemented, both PasswordManager and PasswordsClientUIDelegate should have access to the PasswordFormManager.

Another issue that this CL fixes: the matched PasswordFormManager is removed from |pending_login_managers_| on form submission (https://cs.chromium.org/chromium/src/components/password_manager/core/browser/password_manager.cc?rcl=2f63ef02c274ccc73241c9723ffc3edb94f7529e&l=356). If the login has failed, we might still need that PasswordFormManager in |pending_login_managers_|  and have to re-create it.

BUG= 725883 
TEST=PasswordManagerTest.InPageNavigation

Review-Url: https://codereview.chromium.org/2900693002
Cr-Commit-Position: refs/heads/master@{#475889}

[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/password_manager/chrome_password_manager_client.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/password_manager/chrome_password_manager_client.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/password_manager/password_manager_test_base.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/password_manager/save_password_infobar_delegate_android.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/password_manager/save_password_infobar_delegate_android.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/password_manager/save_password_infobar_delegate_android_unittest.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/password_manager/update_password_infobar_delegate_android.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/password_manager/update_password_infobar_delegate_android.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/ui/passwords/manage_passwords_state.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/ui/passwords/manage_passwords_state.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/ui/passwords/manage_passwords_test.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/chrome/browser/ui/passwords/passwords_client_ui_delegate.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/content/browser/credential_manager_impl.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/content/browser/credential_manager_impl.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/content/browser/credential_manager_impl_unittest.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/credential_manager_password_form_manager.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/credential_manager_password_form_manager.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/credential_manager_password_form_manager_unittest.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/password_form_manager.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/password_form_manager_unittest.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/password_manager.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/password_manager_client.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/password_manager_unittest.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/stub_password_manager_client.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/core/browser/stub_password_manager_client.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/ios_chrome_password_manager_infobar_delegate.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/ios_chrome_password_manager_infobar_delegate.mm
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/ios_chrome_save_password_infobar_delegate.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/ios_chrome_save_password_infobar_delegate.mm
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/ios_chrome_update_password_infobar_delegate.h
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/ios_chrome_update_password_infobar_delegate.mm
[modify] https://crrev.com/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9/ios/chrome/browser/passwords/password_controller.mm

Comment 2 by vabr@chromium.org, Jun 5 2017

Cc: vabr@chromium.org
Labels: -Type-Bug -tracking_work Hotlist-Polish Type-Feature
I left a comment at the CL with some concerns about the current approach: https://codereview.chromium.org/2900693002/#msg95

Comment 3 by vabr@chromium.org, Jun 7 2017

Cc: vasi...@chromium.org
I had a closer look at how PasswordFormManager (PFM) is used in the UI code. It basically just provides data about the saved form to allow it being stored, updated, or the associated statistics changed. It is not necessary to pass the whole PFM to the UI code, instead PFM should be able to return a copy of this data. This will prevent the refcounting, it will also prevent the need to move PFM out of PasswordManager, therefore covering the case when would have passed PFM out of PasswordManager and later needed to re-create it again.

I briefly checked this high-level plan with vasilii@, who agrees that sending a PFM to the UI code is not ideal. Because kolos@ is OOO today, and I'm concerned that people might start to build on top of r475889 in the meantime, making change of the design painful, I am going to revert r475889 now. As the next step, I'll start more detailed design for the above plan, and will work with kolos@ on finalising and implementing that.
Project Member

Comment 4 by bugdroid1@chromium.org, Jun 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd

commit cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd
Author: vabr <vabr@chromium.org>
Date: Wed Jun 07 09:11:24 2017

Revert of [Password Manager] Convert |pending_login_managers_| to an array of scoped_refptr  (patchset #5 id:400001 of https://codereview.chromium.org/2900693002/ )

Reason for revert:
I am very sorry for reverting this CL. My reasons are described in detail in  https://crbug.com/725883#c3 , in summary they are:
(1) the design can be made to satisfy the requirements without refcounting
(2) there is some urgency in removing the refcounting from the codebase before people start building on it and it will become difficult to remove.

Cheers,
Vaclav

Original issue's description:
> [Password Manager] Convert |pending_login_managers_| to an array of scoped_refptr
>
> Before this CL, |pending_login_managers_| was an array of unique_ptr. So, we have to pass ownership to | PasswordsClientUIDelegate|. When manual fallback for password saving is implemented, both PasswordManager and PasswordsClientUIDelegate should have access to the PasswordFormManager.
>
> Another issue that this CL fixes: the matched PasswordFormManager is removed from |pending_login_managers_| on form submission (https://cs.chromium.org/chromium/src/components/password_manager/core/browser/password_manager.cc?rcl=2f63ef02c274ccc73241c9723ffc3edb94f7529e&l=356). If the login has failed, we might still need that PasswordFormManager in |pending_login_managers_|  and have to re-create it.
>
> BUG= 725883 
> TEST=PasswordManagerTest.InPageNavigation
>
> Review-Url: https://codereview.chromium.org/2900693002
> Cr-Commit-Position: refs/heads/master@{#475889}
> Committed: https://chromium.googlesource.com/chromium/src/+/b31c9aa77f4ab68acbfc4b2a01216ec0f42e07c9

TBR=dvadym@chromium.org,vasilii@chromium.org,melandory@chromium.org,kolos@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG= 725883 

Review-Url: https://codereview.chromium.org/2926833002
Cr-Commit-Position: refs/heads/master@{#477588}

[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/password_manager/chrome_password_manager_client.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/password_manager/chrome_password_manager_client.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/password_manager/password_manager_test_base.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/password_manager/save_password_infobar_delegate_android.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/password_manager/save_password_infobar_delegate_android.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/password_manager/save_password_infobar_delegate_android_unittest.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/password_manager/update_password_infobar_delegate_android.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/password_manager/update_password_infobar_delegate_android.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/ui/passwords/manage_passwords_state.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/ui/passwords/manage_passwords_state.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/ui/passwords/manage_passwords_test.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/chrome/browser/ui/passwords/passwords_client_ui_delegate.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/content/browser/credential_manager_impl.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/content/browser/credential_manager_impl.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/content/browser/credential_manager_impl_unittest.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/credential_manager_password_form_manager.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/credential_manager_password_form_manager.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/credential_manager_password_form_manager_unittest.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/password_form_manager.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/password_form_manager_unittest.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/password_manager.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/password_manager_client.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/password_manager_unittest.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/stub_password_manager_client.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/core/browser/stub_password_manager_client.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/ios_chrome_password_manager_infobar_delegate.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/ios_chrome_password_manager_infobar_delegate.mm
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/ios_chrome_save_password_infobar_delegate.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/ios_chrome_save_password_infobar_delegate.mm
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/ios_chrome_update_password_infobar_delegate.h
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/ios_chrome_update_password_infobar_delegate.mm
[modify] https://crrev.com/cfcf6bfc4155b0d7f19108f922b6cf8e6d4accbd/ios/chrome/browser/passwords/password_controller.mm

Comment 5 by vabr@chromium.org, Jun 7 2017

I started a design doc: https://docs.google.com/a/google.com/document/d/1ITlXh41T50NnMyAkKV1gVtTRD-TZ959rgeF6rMLK7pw/edit?usp=sharing (internal only, ask if you need access).

It has many gaps to fill, I will work on it further and will talk to kolos@ about that design.

Comment 6 by vabr@chromium.org, Jun 12 2017

We should also make sure to test our fallback against citicards.com. With the current chrome://flags/#enable-password-force-saving, I am still unable to save on citicards.com.

Comment 7 by vabr@chromium.org, Jun 12 2017

(Forgot to say in #6, that Chrome is complaining about "empty password", despite efforts to put some value into even the invisible ones.)
Project Member

Comment 8 by bugdroid1@chromium.org, Jun 27 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f4fd7d246eee95a5845a94000417cbd271520aa6

commit f4fd7d246eee95a5845a94000417cbd271520aa6
Author: Vaclav Brozek <vabr@chromium.org>
Date: Tue Jun 27 12:03:11 2017

Compare form signatures efficiently

Form signatures are numbers, which can be also printed as strings for
serialization. PasswordFormManager::SendVoteOnCredentialsReuse needs to compare
two signatures and currently does it by comparing the associated strings. This
CL changes that to the more efficient comparison of numbers instead.

R=dvadym@chromium.org
BUG= 725883 

Change-Id: I06214c3a01daf2bf04a8b0b88c7f1ccb36755339
Reviewed-on: https://chromium-review.googlesource.com/549341
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#482599}
[modify] https://crrev.com/f4fd7d246eee95a5845a94000417cbd271520aa6/components/password_manager/core/browser/password_form_manager.cc

Project Member

Comment 9 by bugdroid1@chromium.org, Jun 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a33fd6ac4e99fc167e0e98c331b0438576452123

commit a33fd6ac4e99fc167e0e98c331b0438576452123
Author: Vaclav Brozek <vabr@chromium.org>
Date: Wed Jun 28 10:13:13 2017

Remove PasswordFormManager::does_look_like_signup_form_

PasswordFormManager::does_look_like_signup_form_ is duplicated in
submitted_form_->does_look_like_signup_form. The former is only used in
SendVotesOnSave, which is only called from Save, at which point submitted_form_
should never be null.

Therefore, this CL removes PasswordFormManager::does_look_like_signup_form_ and
inlines submitted_form_->does_look_like_signup_form instead.

BUG= 725883 
R=dvadym@chromium.org

Change-Id: I98f5027d0b62ab56f21a564e66ddb814b9b32ffc
Reviewed-on: https://chromium-review.googlesource.com/551959
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#482934}
[modify] https://crrev.com/a33fd6ac4e99fc167e0e98c331b0438576452123/components/password_manager/core/browser/password_form_manager.cc
[modify] https://crrev.com/a33fd6ac4e99fc167e0e98c331b0438576452123/components/password_manager/core/browser/password_form_manager.h

Project Member

Comment 10 by bugdroid1@chromium.org, Jun 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a33fd6ac4e99fc167e0e98c331b0438576452123

commit a33fd6ac4e99fc167e0e98c331b0438576452123
Author: Vaclav Brozek <vabr@chromium.org>
Date: Wed Jun 28 10:13:13 2017

Remove PasswordFormManager::does_look_like_signup_form_

PasswordFormManager::does_look_like_signup_form_ is duplicated in
submitted_form_->does_look_like_signup_form. The former is only used in
SendVotesOnSave, which is only called from Save, at which point submitted_form_
should never be null.

Therefore, this CL removes PasswordFormManager::does_look_like_signup_form_ and
inlines submitted_form_->does_look_like_signup_form instead.

BUG= 725883 
R=dvadym@chromium.org

Change-Id: I98f5027d0b62ab56f21a564e66ddb814b9b32ffc
Reviewed-on: https://chromium-review.googlesource.com/551959
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#482934}
[modify] https://crrev.com/a33fd6ac4e99fc167e0e98c331b0438576452123/components/password_manager/core/browser/password_form_manager.cc
[modify] https://crrev.com/a33fd6ac4e99fc167e0e98c331b0438576452123/components/password_manager/core/browser/password_form_manager.h

Comment 12 by vabr@chromium.org, Jul 6 2017

I did some performance testing of PFM::Clone (to be added in https://chromium-review.googlesource.com/c/559543). I ran the attached unittest in release build on my high-performance machine (HP620) and it repeatedly executed 100'000 iterations of Clone within 500 ms, leaving one Clone call under 5 µs. Given that the frequency of executing Clone is expected at the order of tens of seconds (likely much less frequent), the performance effect seems negligible.

TEST_F(PasswordFormManagerTest, Clone_Performance) {
  CloningFormFetcher fetcher;
  auto form_manager = base::MakeUnique<PasswordFormManager>(
      password_manager(), client(), client()->driver(), *observed_form(),
      base::MakeUnique<MockFormSaver>(), &fetcher);
  fetcher.SetNonFederated({saved_match()}, 0u);

  PasswordForm saved_login = *observed_form();
  saved_login.username_value = ASCIIToUTF16("newuser");
  saved_login.password_value = ASCIIToUTF16("newpass");
  form_manager->ProvisionallySave(
      saved_login, PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);

  constexpr size_t kIterations = 100000;
  std::unique_ptr<PasswordFormManager> clones[kIterations];
  base::ElapsedTimer timer;
  for (size_t i = 0; i < kIterations; ++i) {
    clones[i] = form_manager->Clone();
  }
  base::TimeDelta elapsed = timer.Elapsed();
  LOG(INFO) << kIterations << " of PFM::Clone made in "
            << elapsed.InMilliseconds() << " ms";
}


perf.patch
1.8 KB Download
Project Member

Comment 13 by bugdroid1@chromium.org, Jul 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5a99c961041eac0dc02913a77398d1868f455e29

commit 5a99c961041eac0dc02913a77398d1868f455e29
Author: Vaclav Brozek <vabr@chromium.org>
Date: Thu Jul 06 17:14:33 2017

Separate PasswordFormManager::metrics_recorder_ init from constructor

Until now, PasswordFormManager created its metrics recorder in its constructor.
However, soon we will need to be able to inject a reference to an existing
recorder instead.

There are at least two ways to do that:
  (1) Inject it through a constructor argument, or
  (2) Inject it through a separate method

Case (1) allows to emulate the current state completely, but causes a lot of
churn in updating all the PasswordFormManager construction sites (mostly in
tests).

Case (2) makes it impossible to record events happening in the constructor, but
causes just a handful of changes through the code.

Because there are no events logged during construction, and it is unlikely that
there will be need to have them in the future, (2) is implemented by this CL.

Note that no "dummy" recorder is constructed, because it would upload confusing
metrics. Therefore, the PasswordFormManager code needs to handle the null
recorder gracefully.

An Init() method is added, it takes a scoped_refptr to a metrics recorder. If
the pointer is null, it creates a fresh recorder, otherwise starts sharing
ownership of the passed recorder. The Init() method also does some other work
previously done by the constructor, because (1) that work might result in
needing the recorder, and (2) it is good practice not to do heavy lifting
during construction, when the object may not be fully working.

Bug:  725883 

Change-Id: I4e886ad1deeb9f1667d3ff9d855a369813689466
Reviewed-on: https://chromium-review.googlesource.com/559670
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Reviewed-by: Dominic Battré <battre@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484643}
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/components/password_manager/content/browser/credential_manager_impl.cc
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/components/password_manager/core/browser/credential_manager_password_form_manager_unittest.cc
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/components/password_manager/core/browser/password_form_manager.cc
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/components/password_manager/core/browser/password_form_manager.h
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/components/password_manager/core/browser/password_form_manager_unittest.cc
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/5a99c961041eac0dc02913a77398d1868f455e29/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc

Project Member

Comment 14 by bugdroid1@chromium.org, Jul 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/287feccb75080ce0939e6536a3afdc0ba8f03251

commit 287feccb75080ce0939e6536a3afdc0ba8f03251
Author: Vaclav Brozek <vabr@chromium.org>
Date: Thu Jul 06 18:12:21 2017

Introduce FormSaver::Clone

Introduces a method for cloning a FormSaver, which copies the state of the
original, but not unimportant cache data.

This will be necessary for cloning PasswordFormManager.

BUG= 725883 

Change-Id: I35f18122d7bb5879f66d355c5f6e802b523f0acd
Reviewed-on: https://chromium-review.googlesource.com/560170
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Reviewed-by: Maxim Kolosovskiy <kolos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484670}
[modify] https://crrev.com/287feccb75080ce0939e6536a3afdc0ba8f03251/components/password_manager/core/browser/BUILD.gn
[modify] https://crrev.com/287feccb75080ce0939e6536a3afdc0ba8f03251/components/password_manager/core/browser/form_saver.h
[modify] https://crrev.com/287feccb75080ce0939e6536a3afdc0ba8f03251/components/password_manager/core/browser/form_saver_impl.cc
[modify] https://crrev.com/287feccb75080ce0939e6536a3afdc0ba8f03251/components/password_manager/core/browser/form_saver_impl.h
[modify] https://crrev.com/287feccb75080ce0939e6536a3afdc0ba8f03251/components/password_manager/core/browser/form_saver_impl_unittest.cc
[add] https://crrev.com/287feccb75080ce0939e6536a3afdc0ba8f03251/components/password_manager/core/browser/stub_form_saver.cc
[modify] https://crrev.com/287feccb75080ce0939e6536a3afdc0ba8f03251/components/password_manager/core/browser/stub_form_saver.h

Project Member

Comment 15 by bugdroid1@chromium.org, Jul 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/01b4e652995e1255782dc157b7af7e14cd109127

commit 01b4e652995e1255782dc157b7af7e14cd109127
Author: Vaclav Brozek <vabr@chromium.org>
Date: Thu Jul 06 18:59:11 2017

Revert "Separate PasswordFormManager::metrics_recorder_ init from constructor"

This reverts commit 5a99c961041eac0dc02913a77398d1868f455e29.

Reason for revert: Seems to have broken Mac. vabr@ will investigate.

Original change's description:
> Separate PasswordFormManager::metrics_recorder_ init from constructor
> 
> Until now, PasswordFormManager created its metrics recorder in its constructor.
> However, soon we will need to be able to inject a reference to an existing
> recorder instead.
> 
> There are at least two ways to do that:
>   (1) Inject it through a constructor argument, or
>   (2) Inject it through a separate method
> 
> Case (1) allows to emulate the current state completely, but causes a lot of
> churn in updating all the PasswordFormManager construction sites (mostly in
> tests).
> 
> Case (2) makes it impossible to record events happening in the constructor, but
> causes just a handful of changes through the code.
> 
> Because there are no events logged during construction, and it is unlikely that
> there will be need to have them in the future, (2) is implemented by this CL.
> 
> Note that no "dummy" recorder is constructed, because it would upload confusing
> metrics. Therefore, the PasswordFormManager code needs to handle the null
> recorder gracefully.
> 
> An Init() method is added, it takes a scoped_refptr to a metrics recorder. If
> the pointer is null, it creates a fresh recorder, otherwise starts sharing
> ownership of the passed recorder. The Init() method also does some other work
> previously done by the constructor, because (1) that work might result in
> needing the recorder, and (2) it is good practice not to do heavy lifting
> during construction, when the object may not be fully working.
> 
> Bug:  725883 
> 
> Change-Id: I4e886ad1deeb9f1667d3ff9d855a369813689466
> Reviewed-on: https://chromium-review.googlesource.com/559670
> Commit-Queue: Vaclav Brozek <vabr@chromium.org>
> Reviewed-by: Dominic Battré <battre@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#484643}

TBR=vabr@chromium.org,battre@chromium.org

Change-Id: I9236faac0f774f42649724564452edb6e7b9e557
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  725883 
Reviewed-on: https://chromium-review.googlesource.com/562476
Reviewed-by: Vaclav Brozek <vabr@chromium.org>
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484697}
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/components/password_manager/content/browser/credential_manager_impl.cc
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/components/password_manager/core/browser/credential_manager_password_form_manager_unittest.cc
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/components/password_manager/core/browser/password_form_manager.cc
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/components/password_manager/core/browser/password_form_manager.h
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/components/password_manager/core/browser/password_form_manager_unittest.cc
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/01b4e652995e1255782dc157b7af7e14cd109127/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc

Project Member

Comment 16 by bugdroid1@chromium.org, Jul 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b8f36a12547e38b94967760a4d6d38600e7ecc5e

commit b8f36a12547e38b94967760a4d6d38600e7ecc5e
Author: Vaclav Brozek <vabr@chromium.org>
Date: Thu Jul 06 22:50:28 2017

Reland: Separate PasswordFormManager::metrics_recorder_ init from constructor

Why the original failed on debug builds:
There were two more places where Init was forgotten after a PasswordFormManager
creation. Those were only discovered by debug builds, which are not run on the
pre-submitting trybots.

Patch set 1 is the original, patch set 2 is the fix.

Original description:
-----------------------
Until now, PasswordFormManager created its metrics recorder in its constructor.
However, soon we will need to be able to inject a reference to an existing
recorder instead.

There are at least two ways to do that:
  (1) Inject it through a constructor argument, or
  (2) Inject it through a separate method

Case (1) allows to emulate the current state completely, but causes a lot of
churn in updating all the PasswordFormManager construction sites (mostly in
tests).

Case (2) makes it impossible to record events happening in the constructor, but
causes just a handful of changes through the code.

Because there are no events logged during construction, and it is unlikely that
there will be need to have them in the future, (2) is implemented by this CL.

Note that no "dummy" recorder is constructed, because it would upload confusing
metrics. Therefore, the PasswordFormManager code needs to handle the null
recorder gracefully.

An Init() method is added, it takes a scoped_refptr to a metrics recorder. If
the pointer is null, it creates a fresh recorder, otherwise starts sharing
ownership of the passed recorder. The Init() method also does some other work
previously done by the constructor, because (1) that work might result in
needing the recorder, and (2) it is good practice not to do heavy lifting
during construction, when the object may not be fully working.
-----------------------

TBR=battre@chromium.org

Bug:  725883 
Change-Id: I92ef32a9ee312774dfba64611ddf00d06a77c6ca
Reviewed-on: https://chromium-review.googlesource.com/562477
Reviewed-by: Vaclav Brozek <vabr@chromium.org>
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484759}
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/chrome/browser/ui/passwords/manage_passwords_state_unittest.cc
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/chrome/browser/ui/passwords/manage_passwords_test.cc
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/components/password_manager/content/browser/credential_manager_impl.cc
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/components/password_manager/core/browser/credential_manager_password_form_manager_unittest.cc
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/components/password_manager/core/browser/password_form_manager.cc
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/components/password_manager/core/browser/password_form_manager.h
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/components/password_manager/core/browser/password_form_manager_unittest.cc
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/b8f36a12547e38b94967760a4d6d38600e7ecc5e/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc

Project Member

Comment 17 by bugdroid1@chromium.org, Jul 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/85a42e6b28440f103afb6b90bd24081aba2e9dbe

commit 85a42e6b28440f103afb6b90bd24081aba2e9dbe
Author: Vaclav Brozek <vabr@chromium.org>
Date: Thu Jul 06 22:57:29 2017

Introduce PasswordFormManager::Clone

Cloning is a special operation to create a reduced copy of a
PasswordFormManager, which for the purposes of its usage in UI code is
identical to the original, despite not having all data members copied.

This CL introduced the Clone() method and uses it in PasswordManager to pass a
clone instead of the whole PasswordFormManager to the UI code. This will enable
in the future to do this repeatedly, as a reaction to user's manually triggered
saving.

BUG= 725883 

Change-Id: Ib0deafaf34ac62517b19dc411ebc81b687368243
Reviewed-on: https://chromium-review.googlesource.com/559543
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Reviewed-by: Vasilii Sukhanov <vasilii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484763}
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/fake_form_fetcher.cc
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/fake_form_fetcher.h
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/form_fetcher.h
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/form_fetcher_impl.cc
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/password_form_manager.cc
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/password_form_manager.h
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/password_form_manager_unittest.cc
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/85a42e6b28440f103afb6b90bd24081aba2e9dbe/components/password_manager/core/browser/password_manager_unittest.cc

Project Member

Comment 18 by bugdroid1@chromium.org, Jul 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1b24fe8864b850e20ead1147d2f6eb41c1624515

commit 1b24fe8864b850e20ead1147d2f6eb41c1624515
Author: Vaclav Brozek <vabr@chromium.org>
Date: Fri Jul 07 11:08:19 2017

Initialize PasswordFormManager in Android unittests

All PasswordFormManager instances need to be initialized since
https://chromium-review.googlesource.com/c/562477/, but android save password
delegate somehow fell through the cracks. It only crashed on debug, and there
are no debug trybots. This CL adds the Init() calls there.

TBR=battre@chromium.org

Bug:  725883 ,  740061 
Change-Id: I6e36e4604a3954e2beab5098ad6f7a03e8f262a5
Reviewed-on: https://chromium-review.googlesource.com/563377
Commit-Queue: Vaclav Brozek <vabr@chromium.org>
Reviewed-by: Dominic Battré <battre@chromium.org>
Reviewed-by: Vaclav Brozek <vabr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#484883}
[modify] https://crrev.com/1b24fe8864b850e20ead1147d2f6eb41c1624515/chrome/browser/password_manager/save_password_infobar_delegate_android_unittest.cc

Comment 19 by kolos@chromium.org, Jul 12 2017

Blockedon: 741612
Project Member

Comment 20 by bugdroid1@chromium.org, Jul 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8d78a50880f041ec722a23d583ae0ae9e44a68cf

commit 8d78a50880f041ec722a23d583ae0ae9e44a68cf
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Fri Jul 28 06:37:28 2017

[Password Manager] Refactor PasswordManager::ProvisionallySave

Two sections of ProvisionallySave are needed for implementation of manual fallbacks for saving (https://codereview.chromium.org/2915763003/). In this CL, the sections will extracted as new methods.

No specific tests for this CL since it doesn't change any logic, just re-organize the code.

The CL also renames PasswordFormManager::SetSubmittedForm to SaveSubmittedFormTypeForMetrics.

Bug:  725883 
Change-Id: I511b54fa2ca91d8bc3067ac708350db13e4ad766
Reviewed-on: https://chromium-review.googlesource.com/588088
Reviewed-by: Vasilii Sukhanov <vasilii@chromium.org>
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#490302}
[modify] https://crrev.com/8d78a50880f041ec722a23d583ae0ae9e44a68cf/components/password_manager/core/browser/password_form_manager.cc
[modify] https://crrev.com/8d78a50880f041ec722a23d583ae0ae9e44a68cf/components/password_manager/core/browser/password_form_manager.h
[modify] https://crrev.com/8d78a50880f041ec722a23d583ae0ae9e44a68cf/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/8d78a50880f041ec722a23d583ae0ae9e44a68cf/components/password_manager/core/browser/password_manager.h

Project Member

Comment 21 by bugdroid1@chromium.org, Aug 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7cf7408af869f5b605a6f35cdd458380c56fb73d

commit 7cf7408af869f5b605a6f35cdd458380c56fb73d
Author: kolos <kolos@chromium.org>
Date: Thu Aug 10 09:00:03 2017

[Password Manager] Show omnibox icon and anchored prompt once users start typing password

If the password to be save is a generated by Chrome password, the confirmation bubble will be shown (the bubble that a user sees when she submits a form with generated password).

If the password is not a generated one, a save or update bubble will be shown.

BUG= 725883 

Review-Url: https://codereview.chromium.org/2915763003
Cr-Commit-Position: refs/heads/master@{#493337}

[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/password_manager/chrome_password_manager_client.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/password_manager/chrome_password_manager_client.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/password_manager/credential_manager_browsertest.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/password_manager/password_manager_browsertest.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/password_manager/password_manager_interactive_uitest.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/password_manager/password_manager_test_base.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/password_manager/password_manager_test_base.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/browser/ui/passwords/passwords_client_ui_delegate.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/renderer/autofill/fake_content_password_manager_driver.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/renderer/autofill/fake_content_password_manager_driver.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/autofill/content/common/autofill_driver.mojom
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/autofill/content/renderer/password_autofill_agent.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/autofill/content/renderer/renderer_save_password_progress_logger_unittest.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/content/browser/bad_message.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/content/browser/content_password_manager_driver.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/content/browser/content_password_manager_driver.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/core/browser/password_manager.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/core/browser/password_manager_client.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/core/browser/password_manager_driver.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/core/browser/password_manager_unittest.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/core/browser/stub_password_manager_client.cc
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/components/password_manager/core/browser/stub_password_manager_client.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm
[modify] https://crrev.com/7cf7408af869f5b605a6f35cdd458380c56fb73d/tools/metrics/histograms/enums.xml

Project Member

Comment 22 by bugdroid1@chromium.org, Aug 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/00445c1ccd07875a0f3573b06bcc4feeb78e6b13

commit 00445c1ccd07875a0f3573b06bcc4feeb78e6b13
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Wed Aug 16 17:47:12 2017

[Password Manager] Timer for manual fallback for saving

* the manual fallback for saving should be disabled after 90 seconds since last user input.
* page navigation shouldn't hide the fallback. The fallback can be hidden by timeout or clearing user input

Bug:  725883 
Change-Id: I77a1351f0f7adee7efeeb412ca9c73d22cd26152
Reviewed-on: https://chromium-review.googlesource.com/612081
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Reviewed-by: Vasilii Sukhanov <vasilii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#494847}
[modify] https://crrev.com/00445c1ccd07875a0f3573b06bcc4feeb78e6b13/chrome/browser/password_manager/password_manager_interactive_uitest.cc
[modify] https://crrev.com/00445c1ccd07875a0f3573b06bcc4feeb78e6b13/chrome/browser/password_manager/password_manager_test_base.cc
[modify] https://crrev.com/00445c1ccd07875a0f3573b06bcc4feeb78e6b13/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
[modify] https://crrev.com/00445c1ccd07875a0f3573b06bcc4feeb78e6b13/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
[modify] https://crrev.com/00445c1ccd07875a0f3573b06bcc4feeb78e6b13/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc

Blockedon: 756415

Comment 24 by kolos@chromium.org, Aug 18 2017

Blockedon: 756778

Comment 25 by kolos@chromium.org, Aug 18 2017

Blockedon: 756793
Project Member

Comment 26 by bugdroid1@chromium.org, Aug 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3751e40eb241978d4bd46c0b6cb9d8967a026f49

commit 3751e40eb241978d4bd46c0b6cb9d8967a026f49
Author: Dominic Battre <battre@chromium.org>
Date: Fri Aug 18 18:31:37 2017

[Password Manager] Minor cleanups

Bug:  725883 
Change-Id: I37a70c83dc47011995e24ac972cc81a3c8a7377a
Reviewed-on: https://chromium-review.googlesource.com/620487
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Reviewed-by: Maxim Kolosovskiy <kolos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#495627}
[modify] https://crrev.com/3751e40eb241978d4bd46c0b6cb9d8967a026f49/chrome/browser/password_manager/password_manager_test_base.h
[modify] https://crrev.com/3751e40eb241978d4bd46c0b6cb9d8967a026f49/components/autofill/content/renderer/password_autofill_agent.cc

Project Member

Comment 27 by bugdroid1@chromium.org, Aug 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb

commit f27e8764a0f7a62a7bc08b6119b808d6db3c28fb
Author: Dominic Battre <battre@chromium.org>
Date: Wed Aug 23 11:16:25 2017

[Password Manager] Put manual saving behind a feature.

This CL adds a feature EnableManualSaving (enabled by default) to have a fall
back path to disable the feature. The feature is disabled at the
PasswordManagerClient level.

BUG= 725883 

Change-Id: Ica8dd483283d2cc0853fbd955801a93aea05bc61
Reviewed-on: https://chromium-review.googlesource.com/620729
Reviewed-by: Maxim Kolosovskiy <kolos@chromium.org>
Commit-Queue: Dominic Battré <battre@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496653}
[modify] https://crrev.com/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb/chrome/browser/about_flags.cc
[modify] https://crrev.com/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb/chrome/browser/flag_descriptions.cc
[modify] https://crrev.com/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb/chrome/browser/flag_descriptions.h
[modify] https://crrev.com/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb/chrome/browser/password_manager/password_manager_interactive_uitest.cc
[modify] https://crrev.com/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb/components/autofill/content/renderer/password_autofill_agent.cc
[modify] https://crrev.com/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb/components/password_manager/core/common/password_manager_features.cc
[modify] https://crrev.com/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb/components/password_manager/core/common/password_manager_features.h
[modify] https://crrev.com/f27e8764a0f7a62a7bc08b6119b808d6db3c28fb/tools/metrics/histograms/enums.xml

Comment 28 by kolos@chromium.org, Aug 23 2017

Blockedon: 758181
Project Member

Comment 29 by bugdroid1@chromium.org, Aug 24 2017

Blockedon: 760105
Project Member

Comment 31 by bugdroid1@chromium.org, Sep 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/909f27dd19e54dd99eb54a3151570e653a5e3cef

commit 909f27dd19e54dd99eb54a3151570e653a5e3cef
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Mon Sep 11 12:55:07 2017

[Password Manager] Let Password Manager work even if field values are confusing

Befor this CL, GetPasswordForm returned no form if it was unclear what fields should be saved. For such cases, let's simply save the first password.

The password selection (crbug.com/753806) will let user to correct password value.

Bug:  725883 , 753806
Change-Id: I8bf6f48f964ea4e2d2189fe1a10bedb3c850487c
Reviewed-on: https://chromium-review.googlesource.com/657818
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#500899}
[modify] https://crrev.com/909f27dd19e54dd99eb54a3151570e653a5e3cef/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
[modify] https://crrev.com/909f27dd19e54dd99eb54a3151570e653a5e3cef/components/autofill/content/renderer/password_form_conversion_utils.cc
[modify] https://crrev.com/909f27dd19e54dd99eb54a3151570e653a5e3cef/components/autofill/content/renderer/password_form_conversion_utils_browsertest.cc

Project Member

Comment 32 by bugdroid1@chromium.org, Oct 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/455aa605ebe316e720bda82dea55e31f55ba9c8b

commit 455aa605ebe316e720bda82dea55e31f55ba9c8b
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Thu Oct 12 16:19:42 2017

[Password Manager] Update the provisionally saved form when username/password was filled

When a user typed the username, but filled the password from the list of saved credentials, the provisionally saved form should be updated. So, the fallback for saving will be updated as well.

Bug:  725883 
Change-Id: Iede6e24e1b7e9b0e3b5706f2baff5739bd1fe7ab
Reviewed-on: https://chromium-review.googlesource.com/712040
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508364}
[modify] https://crrev.com/455aa605ebe316e720bda82dea55e31f55ba9c8b/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
[modify] https://crrev.com/455aa605ebe316e720bda82dea55e31f55ba9c8b/components/autofill/content/renderer/password_autofill_agent.cc
[modify] https://crrev.com/455aa605ebe316e720bda82dea55e31f55ba9c8b/components/autofill/content/renderer/password_autofill_agent.h

Project Member

Comment 33 by bugdroid1@chromium.org, Oct 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/64aae3069d6fe3c7227f5fae82a8e8c68e9359cf

commit 64aae3069d6fe3c7227f5fae82a8e8c68e9359cf
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Thu Oct 12 19:46:16 2017

[Password Manager] Don't show the fallback for saving if the credential is already saved

Bug:  725883 ,  767861 ,  774012 
Change-Id: I64b4729a1db3c450fc532403bb9764e2e8adcbb4
Reviewed-on: https://chromium-review.googlesource.com/714176
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Reviewed-by: Vasilii Sukhanov <vasilii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508387}
[modify] https://crrev.com/64aae3069d6fe3c7227f5fae82a8e8c68e9359cf/components/password_manager/core/browser/password_manager.cc
[modify] https://crrev.com/64aae3069d6fe3c7227f5fae82a8e8c68e9359cf/components/password_manager/core/browser/password_manager_unittest.cc

Comment 34 by kolos@chromium.org, Oct 13 2017

Blockedon: 767861
Project Member

Comment 35 by bugdroid1@chromium.org, Nov 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eb2186f3682000349de07278cc013da765ba364c

commit eb2186f3682000349de07278cc013da765ba364c
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Thu Nov 09 08:27:49 2017

[Password Manager] Show confirmation bubble as manual fallback for generated cases

Bug:  782663 ,  725883 
Change-Id: I1e836ff22ab8e729a5b2a30519fc8e9b7579e151
Reviewed-on: https://chromium-review.googlesource.com/758270
Reviewed-by: Vasilii Sukhanov <vasilii@chromium.org>
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515123}
[modify] https://crrev.com/eb2186f3682000349de07278cc013da765ba364c/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
[modify] https://crrev.com/eb2186f3682000349de07278cc013da765ba364c/chrome/renderer/autofill/fake_content_password_manager_driver.cc
[modify] https://crrev.com/eb2186f3682000349de07278cc013da765ba364c/chrome/renderer/autofill/fake_content_password_manager_driver.h
[modify] https://crrev.com/eb2186f3682000349de07278cc013da765ba364c/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
[modify] https://crrev.com/eb2186f3682000349de07278cc013da765ba364c/chrome/renderer/autofill/password_generation_agent_browsertest.cc
[modify] https://crrev.com/eb2186f3682000349de07278cc013da765ba364c/components/autofill/content/renderer/password_generation_agent.cc
[modify] https://crrev.com/eb2186f3682000349de07278cc013da765ba364c/components/password_manager/core/browser/password_form_metrics_recorder.cc
[modify] https://crrev.com/eb2186f3682000349de07278cc013da765ba364c/components/password_manager/core/browser/password_manager_metrics_util.h

Project Member

Comment 36 by bugdroid1@chromium.org, Nov 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bc80bd0bc8122c66c7a13c108137e2643754980e

commit bc80bd0bc8122c66c7a13c108137e2643754980e
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Thu Nov 09 20:24:46 2017

[Password Manager] Determine username and password elements based on user input

Bug:725883

Change-Id: I34399226fecf8180dc62cf5b846b2c3da2fda564
Reviewed-on: https://chromium-review.googlesource.com/610080
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Vadym Doroshenko <dvadym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515265}
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/chrome/browser/password_manager/password_generation_interactive_uitest.cc
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/chrome/renderer/autofill/fake_content_password_manager_driver.h
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/components/autofill/content/common/autofill_types.mojom
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/components/autofill/content/common/autofill_types_struct_traits.cc
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/components/autofill/content/common/autofill_types_struct_traits.h
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/components/autofill/content/renderer/password_form_conversion_utils.cc
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/components/autofill/content/renderer/password_form_conversion_utils_browsertest.cc
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/components/autofill/core/common/password_form.cc
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/components/autofill/core/common/password_form.h
[modify] https://crrev.com/bc80bd0bc8122c66c7a13c108137e2643754980e/components/password_manager/core/browser/password_manager.cc

Project Member

Comment 37 by bugdroid1@chromium.org, Nov 11 2017

Labels: merge-merged-3239
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517

commit 06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517
Author: Maxim Kolosovskiy <kolos@chromium.org>
Date: Sat Nov 11 10:15:14 2017

[Password Manager] Show confirmation bubble as manual fallback for generated cases

Bug:  782663 ,  725883 
Change-Id: I1e836ff22ab8e729a5b2a30519fc8e9b7579e151
Reviewed-on: https://chromium-review.googlesource.com/758270
Reviewed-by: Vasilii Sukhanov <vasilii@chromium.org>
Commit-Queue: Maxim Kolosovskiy <kolos@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#515123}(cherry picked from commit eb2186f3682000349de07278cc013da765ba364c)
Reviewed-on: https://chromium-review.googlesource.com/765327
Reviewed-by: Maxim Kolosovskiy <kolos@chromium.org>
Cr-Commit-Position: refs/branch-heads/3239@{#452}
Cr-Branched-From: adb61db19020ed8ecee5e91b1a0ea4c924ae2988-refs/heads/master@{#508578}
[modify] https://crrev.com/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517/chrome/browser/ui/passwords/manage_passwords_bubble_model.cc
[modify] https://crrev.com/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517/chrome/renderer/autofill/fake_content_password_manager_driver.cc
[modify] https://crrev.com/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517/chrome/renderer/autofill/fake_content_password_manager_driver.h
[modify] https://crrev.com/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
[modify] https://crrev.com/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517/chrome/renderer/autofill/password_generation_agent_browsertest.cc
[modify] https://crrev.com/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517/components/autofill/content/renderer/password_generation_agent.cc
[modify] https://crrev.com/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517/components/password_manager/core/browser/password_form_metrics_recorder.cc
[modify] https://crrev.com/06c9d3bc08a493a1fef3ff7879b3f9fcfde3e517/components/password_manager/core/browser/password_manager_metrics_util.h

Project Member

Comment 38 by bugdroid1@chromium.org, Nov 29 2017

Project Member

Comment 39 by bugdroid1@chromium.org, Nov 30 2017

Project Member

Comment 40 by bugdroid1@chromium.org, Apr 12 2018

Status: Fixed (was: Started)
Cc: -vabr@chromium.org

Sign in to add a comment