Chromium Code Reviews| 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 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 137 UserDataKey(), | 137 UserDataKey(), |
| 138 new ChromePasswordManagerClient(contents, autofill_client)); | 138 new ChromePasswordManagerClient(contents, autofill_client)); |
| 139 } | 139 } |
| 140 | 140 |
| 141 ChromePasswordManagerClient::ChromePasswordManagerClient( | 141 ChromePasswordManagerClient::ChromePasswordManagerClient( |
| 142 content::WebContents* web_contents, | 142 content::WebContents* web_contents, |
| 143 autofill::AutofillClient* autofill_client) | 143 autofill::AutofillClient* autofill_client) |
| 144 : content::WebContentsObserver(web_contents), | 144 : content::WebContentsObserver(web_contents), |
| 145 profile_(Profile::FromBrowserContext(web_contents->GetBrowserContext())), | 145 profile_(Profile::FromBrowserContext(web_contents->GetBrowserContext())), |
| 146 password_manager_(this), | 146 password_manager_(this), |
| 147 password_reuse_detection_manager_(this), | |
| 147 driver_factory_(nullptr), | 148 driver_factory_(nullptr), |
| 148 credential_manager_impl_(web_contents, this), | 149 credential_manager_impl_(web_contents, this), |
| 149 password_manager_client_bindings_(web_contents, this), | 150 password_manager_client_bindings_(web_contents, this), |
| 150 observer_(nullptr), | 151 observer_(nullptr), |
| 151 credentials_filter_(this, | 152 credentials_filter_(this, |
| 152 base::Bind(&GetSyncService, profile_), | 153 base::Bind(&GetSyncService, profile_), |
| 153 base::Bind(&GetSigninManager, profile_)) { | 154 base::Bind(&GetSigninManager, profile_)) { |
| 154 ContentPasswordManagerDriverFactory::CreateForWebContents(web_contents, this, | 155 ContentPasswordManagerDriverFactory::CreateForWebContents(web_contents, this, |
| 155 autofill_client); | 156 autofill_client); |
| 156 driver_factory_ = | 157 driver_factory_ = |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 248 } | 249 } |
| 249 #else | 250 #else |
| 250 if (form_to_save->IsBlacklisted()) | 251 if (form_to_save->IsBlacklisted()) |
| 251 return false; | 252 return false; |
| 252 | 253 |
| 253 if (update_password) { | 254 if (update_password) { |
| 254 UpdatePasswordInfoBarDelegate::Create(web_contents(), | 255 UpdatePasswordInfoBarDelegate::Create(web_contents(), |
| 255 std::move(form_to_save)); | 256 std::move(form_to_save)); |
| 256 return true; | 257 return true; |
| 257 } | 258 } |
| 258 SavePasswordInfoBarDelegate::Create(web_contents(), | 259 SavePasswordInfoBarDelegate::Create(web_contents(), std::move(form_to_save)); |
| 259 std::move(form_to_save)); | |
| 260 #endif // !BUILDFLAG(ANDROID_JAVA_UI) | 260 #endif // !BUILDFLAG(ANDROID_JAVA_UI) |
| 261 return true; | 261 return true; |
| 262 } | 262 } |
| 263 | 263 |
| 264 bool ChromePasswordManagerClient::PromptUserToChooseCredentials( | 264 bool ChromePasswordManagerClient::PromptUserToChooseCredentials( |
| 265 std::vector<std::unique_ptr<autofill::PasswordForm>> local_forms, | 265 std::vector<std::unique_ptr<autofill::PasswordForm>> local_forms, |
| 266 const GURL& origin, | 266 const GURL& origin, |
| 267 const CredentialsCallback& callback) { | 267 const CredentialsCallback& callback) { |
| 268 // Set up an intercept callback if the prompt is zero-clickable (e.g. just one | 268 // Set up an intercept callback if the prompt is zero-clickable (e.g. just one |
| 269 // form provided). | 269 // form provided). |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 370 manage_passwords_ui_controller->OnPasswordAutofilled(best_matches, origin, | 370 manage_passwords_ui_controller->OnPasswordAutofilled(best_matches, origin, |
| 371 federated_matches); | 371 federated_matches); |
| 372 #endif | 372 #endif |
| 373 } | 373 } |
| 374 | 374 |
| 375 void ChromePasswordManagerClient::HidePasswordGenerationPopup() { | 375 void ChromePasswordManagerClient::HidePasswordGenerationPopup() { |
| 376 if (popup_controller_) | 376 if (popup_controller_) |
| 377 popup_controller_->HideAndDestroy(); | 377 popup_controller_->HideAndDestroy(); |
| 378 } | 378 } |
| 379 | 379 |
| 380 void ChromePasswordManagerClient::DidNavigateMainFrame( | |
| 381 const content::LoadCommittedDetails& details, | |
| 382 const content::FrameNavigateParams& params) { | |
| 383 password_reuse_detection_manager_.DidNavigateMainFrame(); | |
| 384 web_contents()->GetRenderViewHost()->GetWidget()->RemoveInputEventObserver( | |
|
vabr (Chromium)
2016/12/23 17:14:10
Why is it needed to remove and immediately add its
dvadym
2016/12/23 17:45:20
I've added a comment with explanation.
vabr (Chromium)
2016/12/23 21:24:24
Acknowledged.
| |
| 385 this); | |
| 386 web_contents()->GetRenderViewHost()->GetWidget()->AddInputEventObserver(this); | |
| 387 } | |
| 388 | |
| 389 void ChromePasswordManagerClient::OnInputEvent( | |
| 390 const blink::WebInputEvent& event) { | |
| 391 if (event.type != blink::WebInputEvent::Char) | |
| 392 return; | |
| 393 const blink::WebKeyboardEvent& key_event = | |
| 394 static_cast<const blink::WebKeyboardEvent&>(event); | |
| 395 password_reuse_detection_manager_.OnKeyPressed(key_event.text); | |
| 396 } | |
| 397 | |
| 380 PrefService* ChromePasswordManagerClient::GetPrefs() { | 398 PrefService* ChromePasswordManagerClient::GetPrefs() { |
| 381 return profile_->GetPrefs(); | 399 return profile_->GetPrefs(); |
| 382 } | 400 } |
| 383 | 401 |
| 384 password_manager::PasswordStore* | 402 password_manager::PasswordStore* ChromePasswordManagerClient::GetPasswordStore() |
|
vabr (Chromium)
2016/12/23 17:14:10
nit: Also here and on lines 408-409, please revert
dvadym
2016/12/23 17:45:20
Done.
| |
| 385 ChromePasswordManagerClient::GetPasswordStore() const { | 403 const { |
| 386 // Always use EXPLICIT_ACCESS as the password manager checks IsOffTheRecord | 404 // Always use EXPLICIT_ACCESS as the password manager checks IsOffTheRecord |
| 387 // itself when it shouldn't access the PasswordStore. | 405 // itself when it shouldn't access the PasswordStore. |
| 388 // TODO(gcasto): Is is safe to change this to | 406 // TODO(gcasto): Is is safe to change this to |
| 389 // ServiceAccessType::IMPLICIT_ACCESS? | 407 // ServiceAccessType::IMPLICIT_ACCESS? |
| 390 return PasswordStoreFactory::GetForProfile( | 408 return PasswordStoreFactory::GetForProfile(profile_, |
| 391 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); | 409 ServiceAccessType::EXPLICIT_ACCESS).get(); |
| 392 } | 410 } |
| 393 | 411 |
| 394 password_manager::PasswordSyncState | 412 password_manager::PasswordSyncState |
| 395 ChromePasswordManagerClient::GetPasswordSyncState() const { | 413 ChromePasswordManagerClient::GetPasswordSyncState() const { |
| 396 const browser_sync::ProfileSyncService* sync_service = | 414 const browser_sync::ProfileSyncService* sync_service = |
| 397 ProfileSyncServiceFactory::GetForProfile(profile_); | 415 ProfileSyncServiceFactory::GetForProfile(profile_); |
| 398 return password_manager_util::GetPasswordSyncState(sync_service); | 416 return password_manager_util::GetPasswordSyncState(sync_service); |
| 399 } | 417 } |
| 400 | 418 |
| 401 bool ChromePasswordManagerClient::WasLastNavigationHTTPError() const { | 419 bool ChromePasswordManagerClient::WasLastNavigationHTTPError() const { |
| 402 DCHECK(web_contents()); | 420 DCHECK(web_contents()); |
| 403 | 421 |
| 404 std::unique_ptr<password_manager::BrowserSavePasswordProgressLogger> logger; | 422 std::unique_ptr<password_manager::BrowserSavePasswordProgressLogger> logger; |
| 405 if (log_manager_->IsLoggingActive()) { | 423 if (log_manager_->IsLoggingActive()) { |
| 406 logger.reset(new password_manager::BrowserSavePasswordProgressLogger( | 424 logger.reset(new password_manager::BrowserSavePasswordProgressLogger( |
| 407 log_manager_.get())); | 425 log_manager_.get())); |
| 408 logger->LogMessage( | 426 logger->LogMessage(Logger::STRING_WAS_LAST_NAVIGATION_HTTP_ERROR_METHOD); |
| 409 Logger::STRING_WAS_LAST_NAVIGATION_HTTP_ERROR_METHOD); | |
| 410 } | 427 } |
| 411 | 428 |
| 412 content::NavigationEntry* entry = | 429 content::NavigationEntry* entry = |
| 413 web_contents()->GetController().GetVisibleEntry(); | 430 web_contents()->GetController().GetVisibleEntry(); |
| 414 if (!entry) | 431 if (!entry) |
| 415 return false; | 432 return false; |
| 416 int http_status_code = entry->GetHttpStatusCode(); | 433 int http_status_code = entry->GetHttpStatusCode(); |
| 417 | 434 |
| 418 if (logger) | 435 if (logger) |
| 419 logger->LogNumber(Logger::STRING_HTTP_STATUS_CODE, http_status_code); | 436 logger->LogNumber(Logger::STRING_HTTP_STATUS_CODE, http_status_code); |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 613 ChromePasswordManagerClient::FromWebContents(web_contents); | 630 ChromePasswordManagerClient::FromWebContents(web_contents); |
| 614 | 631 |
| 615 // Try to bind to the driver, but if driver is not available for this render | 632 // Try to bind to the driver, but if driver is not available for this render |
| 616 // frame host, the request will be just dropped. This will cause the message | 633 // frame host, the request will be just dropped. This will cause the message |
| 617 // pipe to be closed, which will raise a connection error on the peer side. | 634 // pipe to be closed, which will raise a connection error on the peer side. |
| 618 if (!instance) | 635 if (!instance) |
| 619 return; | 636 return; |
| 620 | 637 |
| 621 instance->credential_manager_impl_.BindRequest(std::move(request)); | 638 instance->credential_manager_impl_.BindRequest(std::move(request)); |
| 622 } | 639 } |
| OLD | NEW |