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 8c611a4c1e00f40a267bda4ffe63cb5752e109c9..97d1c641ec5f494169b217867a12dfcdfa8e6002 100644 |
--- a/chrome/browser/prerender/prerender_tab_helper.cc |
+++ b/chrome/browser/prerender/prerender_tab_helper.cc |
@@ -12,6 +12,7 @@ |
#include "chrome/browser/prerender/prerender_manager.h" |
#include "chrome/browser/prerender/prerender_manager_factory.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "components/password_manager/content/browser/content_password_manager_driver.h" |
#include "components/password_manager/core/browser/password_manager.h" |
#include "content/public/browser/navigation_details.h" |
#include "content/public/browser/navigation_entry.h" |
@@ -43,32 +44,12 @@ void ReportTabHelperURLSeenToLocalPredictor( |
} // namespace |
-// static |
-void PrerenderTabHelper::CreateForWebContentsWithPasswordManager( |
- content::WebContents* web_contents, |
- password_manager::PasswordManager* password_manager) { |
- if (!FromWebContents(web_contents)) { |
- web_contents->SetUserData(UserDataKey(), |
- new PrerenderTabHelper(web_contents, |
- password_manager)); |
- } |
-} |
- |
-PrerenderTabHelper::PrerenderTabHelper( |
- content::WebContents* web_contents, |
- password_manager::PasswordManager* password_manager) |
+PrerenderTabHelper::PrerenderTabHelper(content::WebContents* web_contents) |
: content::WebContentsObserver(web_contents), |
origin_(ORIGIN_NONE), |
next_load_is_control_prerender_(false), |
next_load_origin_(ORIGIN_NONE), |
weak_factory_(this) { |
- if (password_manager) { |
- // May be NULL in testing. |
- password_manager->AddSubmissionCallback( |
- base::Bind(&PrerenderTabHelper::PasswordSubmitted, |
- weak_factory_.GetWeakPtr())); |
- } |
- |
// Determine if this is a prerender. |
PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); |
if (prerender_manager && |
@@ -77,11 +58,26 @@ PrerenderTabHelper::PrerenderTabHelper( |
} else { |
navigation_type_ = NAVIGATION_TYPE_NORMAL; |
} |
+ |
+ if (web_contents->GetMainFrame()) |
+ RenderFrameCreated(web_contents->GetMainFrame()); |
} |
PrerenderTabHelper::~PrerenderTabHelper() { |
} |
+void PrerenderTabHelper::RenderFrameCreated( |
+ content::RenderFrameHost* render_frame_host) { |
+ password_manager::ContentPasswordManagerDriver* driver = |
+ password_manager::ContentPasswordManagerDriver::GetForRenderFrameHost( |
+ render_frame_host); |
+ // May be NULL in testing. |
+ if (!driver) |
+ return; |
+ driver->GetPasswordManager()->AddSubmissionCallback(base::Bind( |
+ &PrerenderTabHelper::PasswordSubmitted, weak_factory_.GetWeakPtr())); |
+} |
+ |
void PrerenderTabHelper::DidGetRedirectForResourceRequest( |
content::RenderViewHost* render_view_host, |
const content::ResourceRedirectDetails& details) { |