Index: chrome/browser/prerender/prerender_tab_helper.cc |
diff --git a/chrome/browser/prerender/prerender_tab_helper.cc b/chrome/browser/prerender/prerender_tab_helper.cc |
index cd67ad28a3788700b4dbc0000e5bc2b193c0c999..17ff619fb7ec00ee4e8a65560e3db8a201f28de4 100644 |
--- a/chrome/browser/prerender/prerender_tab_helper.cc |
+++ b/chrome/browser/prerender/prerender_tab_helper.cc |
@@ -4,9 +4,11 @@ |
#include "chrome/browser/prerender/prerender_tab_helper.h" |
+#include "base/bind.h" |
#include "base/metrics/histogram.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/time/time.h" |
+#include "chrome/browser/password_manager/password_manager.h" |
#include "chrome/browser/predictors/logged_in_predictor_table.h" |
#include "chrome/browser/prerender/prerender_histograms.h" |
#include "chrome/browser/prerender/prerender_local_predictor.h" |
@@ -150,9 +152,24 @@ class PrerenderTabHelper::PixelStats { |
PrerenderTabHelper* tab_helper_; |
}; |
-PrerenderTabHelper::PrerenderTabHelper(content::WebContents* web_contents) |
+// static |
+void PrerenderTabHelper::CreateForWebContentsWithPasswordManager( |
+ content::WebContents* web_contents, |
+ PasswordManager* password_manager) { |
+ if (!FromWebContents(web_contents)) { |
+ web_contents->SetUserData(UserDataKey(), |
+ new PrerenderTabHelper(web_contents, |
+ password_manager)); |
+ } |
+} |
+ |
+PrerenderTabHelper::PrerenderTabHelper(content::WebContents* web_contents, |
+ PasswordManager* password_manager) |
: content::WebContentsObserver(web_contents), |
weak_factory_(this) { |
+ password_manager->AddSubmissionCallback( |
+ base::Bind(&PrerenderTabHelper::PasswordSubmitted, |
+ weak_factory_.GetWeakPtr())); |
} |
PrerenderTabHelper::~PrerenderTabHelper() { |
@@ -243,22 +260,13 @@ void PrerenderTabHelper::DidStartProvisionalLoadForFrame( |
} |
} |
-void PrerenderTabHelper::DidNavigateAnyFrame( |
- const content::LoadCommittedDetails& details, |
- const content::FrameNavigateParams& params) { |
+void PrerenderTabHelper::PasswordSubmitted(const content::PasswordForm& form) { |
PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); |
- if (params.password_form.origin.is_valid() && prerender_manager) { |
- prerender_manager->RecordLikelyLoginOnURL(params.url); |
+ if (prerender_manager) { |
+ prerender_manager->RecordLikelyLoginOnURL(form.origin); |
RecordEvent(EVENT_LOGIN_ACTION_ADDED); |
- if (details.is_main_frame) { |
- RecordEvent(EVENT_LOGIN_ACTION_ADDED_MAINFRAME); |
- if (params.password_form.password_value.empty()) |
- RecordEvent(EVENT_LOGIN_ACTION_ADDED_MAINFRAME_PW_EMPTY); |
- } else { |
- RecordEvent(EVENT_LOGIN_ACTION_ADDED_SUBFRAME); |
- if (params.password_form.password_value.empty()) |
- RecordEvent(EVENT_LOGIN_ACTION_ADDED_SUBFRAME_PW_EMPTY); |
- } |
+ if (form.password_value.empty()) |
+ RecordEvent(EVENT_LOGIN_ACTION_ADDED_PW_EMPTY); |
} |
} |