Chromium Code Reviews| 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 5203148aff46872e9d8d2909c28eb095f5101dd8..0441cd86304a69256aad27c3a6a052b2a287a9e3 100644 |
| --- a/chrome/browser/prerender/prerender_tab_helper.cc |
| +++ b/chrome/browser/prerender/prerender_tab_helper.cc |
| @@ -4,6 +4,7 @@ |
| #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" |
| @@ -150,9 +151,25 @@ 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), |
| + password_callback_(base::Bind(&PrerenderTabHelper::PasswordSubmitted, |
| + base::Unretained(this))), |
|
Ilya Sherman
2013/07/27 01:09:48
Why is base::Unretained() safe here?
Garrett Casto
2013/08/03 00:38:42
Deletion of the PasswordManager and this object ha
Ilya Sherman
2013/08/06 09:34:11
So, while you might be right, this strikes me as r
|
| weak_factory_(this) { |
| + DCHECK(password_manager); |
|
Ilya Sherman
2013/07/27 01:09:48
nit: This seems redundant with the immediate use o
Garrett Casto
2013/08/03 00:38:42
I just wanted to give a slightly better error mess
|
| + password_manager->AddSubmissionCallback(password_callback_); |
| } |
| PrerenderTabHelper::~PrerenderTabHelper() { |
| @@ -243,12 +260,10 @@ 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); |
| } |
| } |