#include "chrome/browser/password_manager/chrome_password_manager_client.h"
#include "chrome/browser/prerender/prerender_contents.h"
#include "chrome/browser/tab_contents/tab_util.h"
+#include "components/password_manager/core/browser/browser_save_password_progress_logger.h"
#include "components/password_manager/core/browser/password_manager.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_registrar.h"
password_form_ = form;
}
-void LoginHandler::SetPasswordManager(PasswordManager* password_manager) {
+void LoginHandler::SetPasswordManager(
+ password_manager::PasswordManager* password_manager) {
password_manager_ = password_manager;
}
WebContents* LoginHandler::GetWebContentsForLogin() const {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
render_process_host_id_, render_frame_id_);
void LoginHandler::SetAuth(const base::string16& username,
const base::string16& password) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+ scoped_ptr<password_manager::BrowserSavePasswordProgressLogger> logger;
+ if (password_manager_ && password_manager_->client()->IsLoggingActive()) {
+ logger.reset(new password_manager::BrowserSavePasswordProgressLogger(
+ password_manager_->client()));
+ logger->LogMessage(
+ autofill::SavePasswordProgressLogger::STRING_SET_AUTH_METHOD);
+ }
- if (TestAndSetAuthHandled())
+ bool already_handled = TestAndSetAuthHandled();
+ if (logger) {
+ logger->LogBoolean(
+ autofill::SavePasswordProgressLogger::STRING_AUTHENTICATION_HANDLED,
+ already_handled);
+ }
+ if (already_handled)
return;
// Tell the password manager the credentials were submitted / accepted.
password_form_.username_value = username;
password_form_.password_value = password;
password_manager_->ProvisionallySavePassword(password_form_);
+ if (logger) {
+ logger->LogPasswordForm(
+ autofill::SavePasswordProgressLogger::STRING_LOGINHANDLER_FORM,
+ password_form_);
+ }
}
// Calling NotifyAuthSupplied() directly instead of posting a task
void LoginHandler::Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(type == chrome::NOTIFICATION_AUTH_SUPPLIED ||
type == chrome::NOTIFICATION_AUTH_CANCELLED);
SetModel(NULL);
}
-void LoginHandler::SetModel(LoginModel* model) {
+void LoginHandler::SetModel(password_manager::LoginModel* model) {
if (login_model_)
login_model_->RemoveObserver(this);
login_model_ = model;
}
void LoginHandler::NotifyAuthNeeded() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (WasAuthHandled())
return;
}
void LoginHandler::AddObservers() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
// This is probably OK; we need to listen to everything and we break out of
// the Observe() if we aren't handling the same auth_info().
}
void LoginHandler::RemoveObservers() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
registrar_.reset();
}
void LoginHandler::NotifyAuthSupplied(const base::string16& username,
const base::string16& password) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(WasAuthHandled());
WebContents* requesting_contents = GetWebContentsForLogin();
}
void LoginHandler::NotifyAuthCancelled() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(WasAuthHandled());
content::NotificationService* service =
// Calls SetAuth from the IO loop.
void LoginHandler::SetAuthDeferred(const base::string16& username,
const base::string16& password) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (request_) {
request_->SetAuth(net::AuthCredentials(username, password));
// Calls CancelAuth from the IO loop.
void LoginHandler::CancelAuthDeferred() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (request_) {
request_->CancelAuth();
// Closes the view_contents from the UI loop.
void LoginHandler::CloseContentsDeferred() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
CloseDialog();
}
return;
}
- PasswordManager* password_manager =
+ password_manager::PasswordManager* password_manager =
ChromePasswordManagerClient::GetManagerFromWebContents(parent_contents);
if (!password_manager) {
// Same logic as above.