Index: chrome/browser/password_manager/chrome_password_manager_client.cc |
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc |
index ab2f0d809b36cca89f7ca3ab0c5df4836e784696..6b471e1380aa937362d7d6ca7cbf9b5c955b115a 100644 |
--- a/chrome/browser/password_manager/chrome_password_manager_client.cc |
+++ b/chrome/browser/password_manager/chrome_password_manager_client.cc |
@@ -29,6 +29,7 @@ |
#include "components/password_manager/content/browser/password_manager_internals_service_factory.h" |
#include "components/password_manager/content/common/credential_manager_messages.h" |
#include "components/password_manager/content/common/credential_manager_types.h" |
+#include "components/password_manager/core/browser/browser_save_password_progress_logger.h" |
#include "components/password_manager/core/browser/log_receiver.h" |
#include "components/password_manager/core/browser/password_form_manager.h" |
#include "components/password_manager/core/browser/password_manager.h" |
@@ -51,6 +52,10 @@ using password_manager::PasswordManagerInternalsServiceFactory; |
DEFINE_WEB_CONTENTS_USER_DATA_KEY(ChromePasswordManagerClient); |
+// Shorten the name to spare line breaks. The code provides enough context |
+// already. |
+typedef autofill::SavePasswordProgressLogger Logger; |
+ |
// static |
void ChromePasswordManagerClient::CreateForWebContentsWithAutofillClient( |
content::WebContents* contents, |
@@ -290,6 +295,32 @@ bool ChromePasswordManagerClient::IsLoggingActive() const { |
return can_use_log_router_ && !web_contents()->GetWebUI(); |
} |
+bool ChromePasswordManagerClient::WasLastNavigationHTTPError() const { |
+ DCHECK(web_contents()); |
+ |
+ scoped_ptr<password_manager::BrowserSavePasswordProgressLogger> logger; |
+ if (IsLoggingActive()) { |
+ ChromePasswordManagerClient* client = |
vabr (Chromium)
2014/11/18 10:10:11
Don't retrieve the |client| and use |this| instead
Sunil Ratnu
2014/11/18 12:58:39
The function had const in its signature. Hence, I
vabr (Chromium)
2014/11/18 14:22:49
This should be fixed by https://codereview.chromiu
|
+ ChromePasswordManagerClient::FromWebContents(web_contents()); |
+ logger.reset( |
+ new password_manager::BrowserSavePasswordProgressLogger(client)); |
+ logger->LogMessage(Logger::STRING_WAS_LAST_NAVIGATION_HTTP_ERROR); |
+ } |
+ |
+ content::NavigationEntry* entry = |
+ web_contents()->GetController().GetVisibleEntry(); |
+ if (!entry) |
+ return false; |
+ int http_status_code = entry->GetHttpStatusCode(); |
+ |
+ if (logger) |
+ logger->LogNumber(Logger::STRING_HTTP_STATUS_CODE, http_status_code); |
+ |
+ if (http_status_code >= 400 && http_status_code < 600) |
+ return true; |
+ return false; |
+} |
+ |
// static |
password_manager::PasswordGenerationManager* |
ChromePasswordManagerClient::GetGenerationManagerFromWebContents( |