Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / login / login_prompt.cc
index f677f96..c15bd18 100644 (file)
@@ -14,6 +14,7 @@
 #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"
@@ -118,12 +119,13 @@ void LoginHandler::SetPasswordForm(const autofill::PasswordForm& form) {
   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_);
@@ -132,9 +134,23 @@ WebContents* LoginHandler::GetWebContentsForLogin() const {
 
 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.
@@ -142,6 +158,11 @@ void LoginHandler::SetAuth(const base::string16& username,
     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
@@ -185,7 +206,7 @@ void LoginHandler::CancelAuth() {
 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);
 
@@ -235,7 +256,7 @@ LoginHandler::~LoginHandler() {
   SetModel(NULL);
 }
 
-void LoginHandler::SetModel(LoginModel* model) {
+void LoginHandler::SetModel(password_manager::LoginModel* model) {
   if (login_model_)
     login_model_->RemoveObserver(this);
   login_model_ = model;
@@ -244,7 +265,7 @@ void LoginHandler::SetModel(LoginModel* model) {
 }
 
 void LoginHandler::NotifyAuthNeeded() {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (WasAuthHandled())
     return;
 
@@ -282,7 +303,7 @@ void LoginHandler::ReleaseSoon() {
 }
 
 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().
@@ -294,14 +315,14 @@ void LoginHandler::AddObservers() {
 }
 
 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();
@@ -321,7 +342,7 @@ void LoginHandler::NotifyAuthSupplied(const base::string16& username,
 }
 
 void LoginHandler::NotifyAuthCancelled() {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(WasAuthHandled());
 
   content::NotificationService* service =
@@ -350,7 +371,7 @@ bool LoginHandler::TestAndSetAuthHandled() {
 // 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));
@@ -360,7 +381,7 @@ void LoginHandler::SetAuthDeferred(const base::string16& username,
 
 // Calls CancelAuth from the IO loop.
 void LoginHandler::CancelAuthDeferred() {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+  DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
   if (request_) {
     request_->CancelAuth();
@@ -372,7 +393,7 @@ void LoginHandler::CancelAuthDeferred() {
 
 // Closes the view_contents from the UI loop.
 void LoginHandler::CloseContentsDeferred() {
-  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
   CloseDialog();
 }
@@ -434,7 +455,7 @@ void LoginDialogCallback(const GURL& request_url,
     return;
   }
 
-  PasswordManager* password_manager =
+  password_manager::PasswordManager* password_manager =
       ChromePasswordManagerClient::GetManagerFromWebContents(parent_contents);
   if (!password_manager) {
     // Same logic as above.