Chromium Code Reviews| 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 |