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/bind.h" | |
7 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
8 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
9 #include "base/time/time.h" | 10 #include "base/time/time.h" |
10 #include "chrome/browser/predictors/logged_in_predictor_table.h" | 11 #include "chrome/browser/predictors/logged_in_predictor_table.h" |
11 #include "chrome/browser/prerender/prerender_histograms.h" | 12 #include "chrome/browser/prerender/prerender_histograms.h" |
12 #include "chrome/browser/prerender/prerender_local_predictor.h" | 13 #include "chrome/browser/prerender/prerender_local_predictor.h" |
13 #include "chrome/browser/prerender/prerender_manager.h" | 14 #include "chrome/browser/prerender/prerender_manager.h" |
14 #include "chrome/browser/prerender/prerender_manager_factory.h" | 15 #include "chrome/browser/prerender/prerender_manager_factory.h" |
15 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
16 #include "content/public/browser/browser_thread.h" | 17 #include "content/public/browser/browser_thread.h" |
(...skipping 126 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, | 144 // Bitmap of what the last swapped in prerendered tab looked like at swapin, |
144 // and the WebContents that it was swapped into. | 145 // and the WebContents that it was swapped into. |
145 scoped_ptr<SkBitmap> bitmap_; | 146 scoped_ptr<SkBitmap> bitmap_; |
146 WebContents* bitmap_web_contents_; | 147 WebContents* bitmap_web_contents_; |
147 | 148 |
148 base::WeakPtrFactory<PixelStats> weak_factory_; | 149 base::WeakPtrFactory<PixelStats> weak_factory_; |
149 | 150 |
150 PrerenderTabHelper* tab_helper_; | 151 PrerenderTabHelper* tab_helper_; |
151 }; | 152 }; |
152 | 153 |
153 PrerenderTabHelper::PrerenderTabHelper(content::WebContents* web_contents) | 154 // static |
155 void PrerenderTabHelper::CreateForWebContentsWithPasswordManager( | |
156 content::WebContents* web_contents, | |
157 PasswordManager* password_manager) { | |
158 if (!FromWebContents(web_contents)) { | |
159 web_contents->SetUserData(UserDataKey(), | |
160 new PrerenderTabHelper(web_contents, | |
161 password_manager)); | |
162 } | |
163 } | |
164 | |
165 PrerenderTabHelper::PrerenderTabHelper(content::WebContents* web_contents, | |
166 PasswordManager* password_manager) | |
154 : content::WebContentsObserver(web_contents), | 167 : content::WebContentsObserver(web_contents), |
168 password_callback_(base::Bind(&PrerenderTabHelper::PasswordSubmitted, | |
169 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
| |
155 weak_factory_(this) { | 170 weak_factory_(this) { |
171 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
| |
172 password_manager->AddSubmissionCallback(password_callback_); | |
156 } | 173 } |
157 | 174 |
158 PrerenderTabHelper::~PrerenderTabHelper() { | 175 PrerenderTabHelper::~PrerenderTabHelper() { |
159 } | 176 } |
160 | 177 |
161 void PrerenderTabHelper::ProvisionalChangeToMainFrameUrl( | 178 void PrerenderTabHelper::ProvisionalChangeToMainFrameUrl( |
162 const GURL& url, | 179 const GURL& url, |
163 content::RenderViewHost* render_view_host) { | 180 content::RenderViewHost* render_view_host) { |
164 url_ = url; | 181 url_ = url; |
165 RecordEvent(EVENT_MAINFRAME_CHANGE); | 182 RecordEvent(EVENT_MAINFRAME_CHANGE); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
236 bool is_error_page, | 253 bool is_error_page, |
237 bool is_iframe_srcdoc, | 254 bool is_iframe_srcdoc, |
238 content::RenderViewHost* render_view_host) { | 255 content::RenderViewHost* render_view_host) { |
239 if (is_main_frame) { | 256 if (is_main_frame) { |
240 // Record the beginning of a new PPLT navigation. | 257 // Record the beginning of a new PPLT navigation. |
241 pplt_load_start_ = base::TimeTicks::Now(); | 258 pplt_load_start_ = base::TimeTicks::Now(); |
242 actual_load_start_ = base::TimeTicks(); | 259 actual_load_start_ = base::TimeTicks(); |
243 } | 260 } |
244 } | 261 } |
245 | 262 |
246 void PrerenderTabHelper::DidNavigateAnyFrame( | 263 void PrerenderTabHelper::PasswordSubmitted(const content::PasswordForm& form) { |
247 const content::LoadCommittedDetails& details, | |
248 const content::FrameNavigateParams& params) { | |
249 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); | 264 PrerenderManager* prerender_manager = MaybeGetPrerenderManager(); |
250 if (params.password_form.origin.is_valid() && prerender_manager) { | 265 if (prerender_manager) { |
251 prerender_manager->RecordLikelyLoginOnURL(params.url); | 266 prerender_manager->RecordLikelyLoginOnURL(form.origin); |
252 RecordEvent(EVENT_LOGIN_ACTION_ADDED); | 267 RecordEvent(EVENT_LOGIN_ACTION_ADDED); |
253 } | 268 } |
254 } | 269 } |
255 | 270 |
256 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const { | 271 PrerenderManager* PrerenderTabHelper::MaybeGetPrerenderManager() const { |
257 return PrerenderManagerFactory::GetForProfile( | 272 return PrerenderManagerFactory::GetForProfile( |
258 Profile::FromBrowserContext(web_contents()->GetBrowserContext())); | 273 Profile::FromBrowserContext(web_contents()->GetBrowserContext())); |
259 } | 274 } |
260 | 275 |
261 bool PrerenderTabHelper::IsPrerendering() { | 276 bool PrerenderTabHelper::IsPrerendering() { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
319 | 334 |
320 void PrerenderTabHelper::RecordEventIfLoggedInURLResult( | 335 void PrerenderTabHelper::RecordEventIfLoggedInURLResult( |
321 PrerenderTabHelper::Event event, | 336 PrerenderTabHelper::Event event, |
322 scoped_ptr<bool> is_present, | 337 scoped_ptr<bool> is_present, |
323 scoped_ptr<bool> lookup_succeeded) { | 338 scoped_ptr<bool> lookup_succeeded) { |
324 if (*lookup_succeeded && *is_present) | 339 if (*lookup_succeeded && *is_present) |
325 RecordEvent(event); | 340 RecordEvent(event); |
326 } | 341 } |
327 | 342 |
328 } // namespace prerender | 343 } // namespace prerender |
OLD | NEW |