| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |