Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Side by Side Diff: chrome/browser/password_manager/chrome_password_manager_client.cc

Issue 1850923004: Disable the autofill password manager when a credential is sent via CM API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/password_manager/chrome_password_manager_client.h" 5 #include "chrome/browser/password_manager/chrome_password_manager_client.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 } 256 }
257 257
258 bool ChromePasswordManagerClient::PromptUserToChooseCredentials( 258 bool ChromePasswordManagerClient::PromptUserToChooseCredentials(
259 ScopedVector<autofill::PasswordForm> local_forms, 259 ScopedVector<autofill::PasswordForm> local_forms,
260 ScopedVector<autofill::PasswordForm> federated_forms, 260 ScopedVector<autofill::PasswordForm> federated_forms,
261 const GURL& origin, 261 const GURL& origin,
262 const CredentialsCallback& callback) { 262 const CredentialsCallback& callback) {
263 // Set up an intercept callback if the prompt is zero-clickable (e.g. just one 263 // Set up an intercept callback if the prompt is zero-clickable (e.g. just one
264 // form provided). 264 // form provided).
265 CredentialsCallback intercept = 265 CredentialsCallback intercept =
266 local_forms.size() == 1u 266 base::Bind(&ChromePasswordManagerClient::OnCredentialsChosen,
267 ? base::Bind(&ChromePasswordManagerClient::OnCredentialsChosen, 267 base::Unretained(this), callback, local_forms.size() == 1);
268 base::Unretained(this), callback)
269 : callback;
270 #if defined(OS_ANDROID) 268 #if defined(OS_ANDROID)
271 // Deletes itself on the event from Java counterpart, when user interacts with 269 // Deletes itself on the event from Java counterpart, when user interacts with
272 // dialog. 270 // dialog.
273 AccountChooserDialogAndroid* acccount_chooser_dialog = 271 AccountChooserDialogAndroid* acccount_chooser_dialog =
274 new AccountChooserDialogAndroid(web_contents(), std::move(local_forms), 272 new AccountChooserDialogAndroid(web_contents(), std::move(local_forms),
275 std::move(federated_forms), origin, 273 std::move(federated_forms), origin,
276 intercept); 274 intercept);
277 acccount_chooser_dialog->ShowDialog(); 275 acccount_chooser_dialog->ShowDialog();
278 return true; 276 return true;
279 #else 277 #else
280 return PasswordsClientUIDelegateFromWebContents(web_contents()) 278 return PasswordsClientUIDelegateFromWebContents(web_contents())
281 ->OnChooseCredentials(std::move(local_forms), std::move(federated_forms), 279 ->OnChooseCredentials(std::move(local_forms), std::move(federated_forms),
282 origin, intercept); 280 origin, intercept);
283 #endif 281 #endif
284 } 282 }
285 283
286 void ChromePasswordManagerClient::OnCredentialsChosen( 284 void ChromePasswordManagerClient::OnCredentialsChosen(
287 const CredentialsCallback& callback, 285 const CredentialsCallback& callback,
286 bool one_local_credential,
288 const autofill::PasswordForm* form) { 287 const autofill::PasswordForm* form) {
289 callback.Run(form); 288 callback.Run(form);
289 // If a site gets back a credential some navigations are likely to occur. They
290 // shouldn't trigger the autofill password manager.
290 if (form) 291 if (form)
292 password_manager_.DropFormManagers();
293 if (form && one_local_credential)
291 PromptUserToEnableAutosigninIfNecessary(); 294 PromptUserToEnableAutosigninIfNecessary();
292 } 295 }
293 296
294 void ChromePasswordManagerClient::ForceSavePassword() { 297 void ChromePasswordManagerClient::ForceSavePassword() {
295 password_manager::ContentPasswordManagerDriver* driver = 298 password_manager::ContentPasswordManagerDriver* driver =
296 driver_factory_->GetDriverForFrame(web_contents()->GetFocusedFrame()); 299 driver_factory_->GetDriverForFrame(web_contents()->GetFocusedFrame());
297 driver->ForceSavePassword(); 300 driver->ForceSavePassword();
298 } 301 }
299 302
300 void ChromePasswordManagerClient::GeneratePassword() { 303 void ChromePasswordManagerClient::GeneratePassword() {
301 password_manager::ContentPasswordManagerDriver* driver = 304 password_manager::ContentPasswordManagerDriver* driver =
302 driver_factory_->GetDriverForFrame(web_contents()->GetFocusedFrame()); 305 driver_factory_->GetDriverForFrame(web_contents()->GetFocusedFrame());
303 driver->GeneratePassword(); 306 driver->GeneratePassword();
304 } 307 }
305 308
306 void ChromePasswordManagerClient::NotifyUserAutoSignin( 309 void ChromePasswordManagerClient::NotifyUserAutoSignin(
307 ScopedVector<autofill::PasswordForm> local_forms, 310 ScopedVector<autofill::PasswordForm> local_forms,
308 const GURL& origin) { 311 const GURL& origin) {
309 DCHECK(!local_forms.empty()); 312 DCHECK(!local_forms.empty());
313 // If a site gets back a credential some navigations are likely to occur. They
314 // shouldn't trigger the autofill password manager.
315 password_manager_.DropFormManagers();
310 #if BUILDFLAG(ANDROID_JAVA_UI) 316 #if BUILDFLAG(ANDROID_JAVA_UI)
311 ShowAutoSigninPrompt(web_contents(), local_forms[0]->username_value); 317 ShowAutoSigninPrompt(web_contents(), local_forms[0]->username_value);
312 #else 318 #else
313 PasswordsClientUIDelegateFromWebContents(web_contents()) 319 PasswordsClientUIDelegateFromWebContents(web_contents())
314 ->OnAutoSignin(std::move(local_forms), origin); 320 ->OnAutoSignin(std::move(local_forms), origin);
315 #endif 321 #endif
316 } 322 }
317 323
318 void ChromePasswordManagerClient::NotifyUserCouldBeAutoSignedIn( 324 void ChromePasswordManagerClient::NotifyUserCouldBeAutoSignedIn(
319 std::unique_ptr<autofill::PasswordForm> form) { 325 std::unique_ptr<autofill::PasswordForm> form) {
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 611
606 const password_manager::CredentialsFilter* 612 const password_manager::CredentialsFilter*
607 ChromePasswordManagerClient::GetStoreResultFilter() const { 613 ChromePasswordManagerClient::GetStoreResultFilter() const {
608 return &credentials_filter_; 614 return &credentials_filter_;
609 } 615 }
610 616
611 const password_manager::LogManager* ChromePasswordManagerClient::GetLogManager() 617 const password_manager::LogManager* ChromePasswordManagerClient::GetLogManager()
612 const { 618 const {
613 return log_manager_.get(); 619 return log_manager_.get();
614 } 620 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698