OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/prerender/prerender_tab_helper.h" | 5 #include "chrome/browser/prerender/prerender_tab_helper.h" |
6 | 6 |
7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
10 #include "chrome/browser/predictors/logged_in_predictor_table.h" | 10 #include "chrome/browser/predictors/logged_in_predictor_table.h" |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
143 // Bitmap of what the last swapped in prerendered tab looked like at swapin, | 143 // Bitmap of what the last swapped in prerendered tab looked like at swapin, |
144 // and the WebContents that it was swapped into. | 144 // and the WebContents that it was swapped into. |
145 scoped_ptr<SkBitmap> bitmap_; | 145 scoped_ptr<SkBitmap> bitmap_; |
146 WebContents* bitmap_web_contents_; | 146 WebContents* bitmap_web_contents_; |
147 | 147 |
148 base::WeakPtrFactory<PixelStats> weak_factory_; | 148 base::WeakPtrFactory<PixelStats> weak_factory_; |
149 | 149 |
150 PrerenderTabHelper* tab_helper_; | 150 PrerenderTabHelper* tab_helper_; |
151 }; | 151 }; |
152 | 152 |
153 PrerenderTabHelper::PrerenderTabHelper(content::WebContents* web_contents) | 153 // static |
154 void PrerenderTabHelper::CreateForWebContentsWithPasswordManager( | |
tburkard
2013/07/25 16:59:17
Can't this be done as a template in web_contents_u
Garrett Casto
2013/07/25 17:34:06
Do you mean something generic like WebContentsUser
| |
155 content::WebContents* web_contents, | |
156 PasswordManager* password_manager) { | |
157 if (!FromWebContents(web_contents)) { | |
158 web_contents->SetUserData(UserDataKey(), | |
159 new PrerenderTabHelper(web_contents, | |
160 password_manager)); | |
161 } | |
162 } | |
163 | |
164 PrerenderTabHelper::PrerenderTabHelper(content::WebContents* web_contents, | |
165 PasswordManager* password_manager) | |
154 : content::WebContentsObserver(web_contents), | 166 : content::WebContentsObserver(web_contents), |
155 weak_factory_(this) { | 167 weak_factory_(this) { |
168 DCHECK(password_manager); | |
169 password_manager->AddSubmissionObserver(this); | |
156 } | 170 } |
157 | 171 |
158 PrerenderTabHelper::~PrerenderTabHelper() { | 172 PrerenderTabHelper::~PrerenderTabHelper() { |
159 } | 173 } |
160 | 174 |
161 void PrerenderTabHelper::ProvisionalChangeToMainFrameUrl( | 175 void PrerenderTabHelper::ProvisionalChangeToMainFrameUrl( |
162 const GURL& url, | 176 const GURL& url, |
163 content::RenderViewHost* render_view_host) { | 177 content::RenderViewHost* render_view_host) { |
164 url_ = url; | 178 url_ = url; |
165 RecordEvent(EVENT_MAINFRAME_CHANGE); | 179 RecordEvent(EVENT_MAINFRAME_CHANGE); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
236 bool is_error_page, | 250 bool is_error_page, |
237 bool is_iframe_srcdoc, | 251 bool is_iframe_srcdoc, |
238 content::RenderViewHost* render_view_host) { | 252 content::RenderViewHost* render_view_host) { |
239 if (is_main_frame) { | 253 if (is_main_frame) { |
240 // Record the beginning of a new PPLT navigation. | 254 // Record the beginning of a new PPLT navigation. |
241 pplt_load_start_ = base::TimeTicks::Now(); | 255 pplt_load_start_ = base::TimeTicks::Now(); |
242 actual_load_start_ = base::TimeTicks(); | 256 actual_load_start_ = base::TimeTicks(); |
243 } | 257 } |
244 } | 258 } |
245 | 259 |
246 void PrerenderTabHelper::DidNavigateAnyFrame( | 260 void PrerenderTabHelper::PasswordSubmitted(const content::PasswordForm& form) { |
247 const content::LoadCommittedDetails& details, | |
248 const content::FrameNavigateParams& params) { | |
249 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); | 261 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); |
250 if (params.password_form.origin.is_valid() && prerender_manager) { | 262 if (prerender_manager) { |
251 prerender_manager->RecordLikelyLoginOnURL(params.url); | 263 prerender_manager->RecordLikelyLoginOnURL(form.origin); |
252 RecordEvent(EVENT_LOGIN_ACTION_ADDED); | 264 RecordEvent(EVENT_LOGIN_ACTION_ADDED); |
253 } | 265 } |
254 } | 266 } |
255 | 267 |
256 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const { | 268 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const { |
257 return PrerenderManagerFactory::GetForProfile( | 269 return PrerenderManagerFactory::GetForProfile( |
258 Profile::FromBrowserContext(web_contents()->GetBrowserContext())); | 270 Profile::FromBrowserContext(web_contents()->GetBrowserContext())); |
259 } | 271 } |
260 | 272 |
261 bool PrerenderTabHelper::IsPrerendering() { | 273 bool PrerenderTabHelper::IsPrerendering() { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
319 | 331 |
320 void PrerenderTabHelper::RecordEventIfLoggedInURLResult( | 332 void PrerenderTabHelper::RecordEventIfLoggedInURLResult( |
321 PrerenderTabHelper::Event event, | 333 PrerenderTabHelper::Event event, |
322 scoped_ptr<bool> is_present, | 334 scoped_ptr<bool> is_present, |
323 scoped_ptr<bool> lookup_succeeded) { | 335 scoped_ptr<bool> lookup_succeeded) { |
324 if (*lookup_succeeded && *is_present) | 336 if (*lookup_succeeded && *is_present) |
325 RecordEvent(event); | 337 RecordEvent(event); |
326 } | 338 } |
327 | 339 |
328 } // namespace prerender | 340 } // namespace prerender |
OLD | NEW |