| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_contents.h" | 5 #include "chrome/browser/prerender/prerender_contents.h" |
| 6 | 6 |
| 7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
| 8 #include "chrome/browser/background_contents_service.h" | 8 #include "chrome/browser/background_contents_service.h" |
| 9 #include "chrome/browser/browsing_instance.h" | 9 #include "chrome/browser/browsing_instance.h" |
| 10 #include "chrome/browser/prerender/prerender_final_status.h" | 10 #include "chrome/browser/prerender/prerender_final_status.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 const GURL& referrer) | 41 const GURL& referrer) |
| 42 : prerender_manager_(prerender_manager), | 42 : prerender_manager_(prerender_manager), |
| 43 render_view_host_(NULL), | 43 render_view_host_(NULL), |
| 44 prerender_url_(url), | 44 prerender_url_(url), |
| 45 referrer_(referrer), | 45 referrer_(referrer), |
| 46 profile_(profile), | 46 profile_(profile), |
| 47 page_id_(0), | 47 page_id_(0), |
| 48 has_stopped_loading_(false), | 48 has_stopped_loading_(false), |
| 49 final_status_(FINAL_STATUS_MAX) { | 49 final_status_(FINAL_STATUS_MAX) { |
| 50 DCHECK(prerender_manager != NULL); | 50 DCHECK(prerender_manager != NULL); |
| 51 AddAliasURL(prerender_url_); | 51 DCHECK(AddAliasURL(prerender_url_)); |
| 52 for (std::vector<GURL>::const_iterator it = alias_urls.begin(); | 52 for (std::vector<GURL>::const_iterator it = alias_urls.begin(); |
| 53 it != alias_urls.end(); | 53 it != alias_urls.end(); |
| 54 ++it) { | 54 ++it) { |
| 55 AddAliasURL(*it); | 55 DCHECK(AddAliasURL(*it)); |
| 56 } | 56 } |
| 57 } | 57 } |
| 58 | 58 |
| 59 // static | 59 // static |
| 60 PrerenderContents::Factory* PrerenderContents::CreateFactory() { | 60 PrerenderContents::Factory* PrerenderContents::CreateFactory() { |
| 61 return new PrerenderContentsFactoryImpl(); | 61 return new PrerenderContentsFactoryImpl(); |
| 62 } | 62 } |
| 63 | 63 |
| 64 void PrerenderContents::StartPrerendering() { | 64 void PrerenderContents::StartPrerendering() { |
| 65 DCHECK(profile_ != NULL); | 65 DCHECK(profile_ != NULL); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 const ViewHostMsg_FrameNavigate_Params& params) { | 139 const ViewHostMsg_FrameNavigate_Params& params) { |
| 140 // We only care when the outer frame changes. | 140 // We only care when the outer frame changes. |
| 141 if (!PageTransition::IsMainFrame(params.transition)) | 141 if (!PageTransition::IsMainFrame(params.transition)) |
| 142 return; | 142 return; |
| 143 | 143 |
| 144 // Store the navigation params. | 144 // Store the navigation params. |
| 145 ViewHostMsg_FrameNavigate_Params* p = new ViewHostMsg_FrameNavigate_Params(); | 145 ViewHostMsg_FrameNavigate_Params* p = new ViewHostMsg_FrameNavigate_Params(); |
| 146 *p = params; | 146 *p = params; |
| 147 navigate_params_.reset(p); | 147 navigate_params_.reset(p); |
| 148 | 148 |
| 149 if (!AddAliasURL(params.url)) { |
| 150 Destroy(FINAL_STATUS_HTTPS); |
| 151 return; |
| 152 } |
| 153 |
| 149 url_ = params.url; | 154 url_ = params.url; |
| 150 | |
| 151 AddAliasURL(url_); | |
| 152 } | 155 } |
| 153 | 156 |
| 154 void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host, | 157 void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host, |
| 155 int32 page_id, | 158 int32 page_id, |
| 156 const std::wstring& title) { | 159 const std::wstring& title) { |
| 157 if (title.empty()) { | 160 if (title.empty()) { |
| 158 return; | 161 return; |
| 159 } | 162 } |
| 160 | 163 |
| 161 title_ = WideToUTF16Hack(title); | 164 title_ = WideToUTF16Hack(title); |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFavIconURL, OnUpdateFavIconURL) | 313 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFavIconURL, OnUpdateFavIconURL) |
| 311 IPC_MESSAGE_UNHANDLED(handled = false) | 314 IPC_MESSAGE_UNHANDLED(handled = false) |
| 312 IPC_END_MESSAGE_MAP_EX() | 315 IPC_END_MESSAGE_MAP_EX() |
| 313 | 316 |
| 314 return handled; | 317 return handled; |
| 315 } | 318 } |
| 316 | 319 |
| 317 void PrerenderContents::OnDidStartProvisionalLoadForFrame(int64 frame_id, | 320 void PrerenderContents::OnDidStartProvisionalLoadForFrame(int64 frame_id, |
| 318 bool is_main_frame, | 321 bool is_main_frame, |
| 319 const GURL& url) { | 322 const GURL& url) { |
| 320 if (is_main_frame) | 323 if (is_main_frame) { |
| 321 AddAliasURL(url); | 324 if (!AddAliasURL(url)) { |
| 325 Destroy(FINAL_STATUS_HTTPS); |
| 326 return; |
| 327 } |
| 328 } |
| 322 } | 329 } |
| 323 | 330 |
| 324 void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id, | 331 void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id, |
| 325 const GURL& source_url, | 332 const GURL& source_url, |
| 326 const GURL& target_url) { | 333 const GURL& target_url) { |
| 327 AddAliasURL(target_url); | 334 if (!AddAliasURL(target_url)) |
| 335 Destroy(FINAL_STATUS_HTTPS); |
| 328 } | 336 } |
| 329 | 337 |
| 330 void PrerenderContents::OnUpdateFavIconURL(int32 page_id, | 338 void PrerenderContents::OnUpdateFavIconURL(int32 page_id, |
| 331 const GURL& icon_url) { | 339 const GURL& icon_url) { |
| 332 icon_url_ = icon_url; | 340 icon_url_ = icon_url; |
| 333 } | 341 } |
| 334 | 342 |
| 335 void PrerenderContents::AddAliasURL(const GURL& url) { | 343 bool PrerenderContents::AddAliasURL(const GURL& url) { |
| 344 if (!url.SchemeIs("http")) |
| 345 return false; |
| 336 alias_urls_.push_back(url); | 346 alias_urls_.push_back(url); |
| 347 return true; |
| 337 } | 348 } |
| 338 | 349 |
| 339 bool PrerenderContents::MatchesURL(const GURL& url) const { | 350 bool PrerenderContents::MatchesURL(const GURL& url) const { |
| 340 return std::find(alias_urls_.begin(), alias_urls_.end(), url) | 351 return std::find(alias_urls_.begin(), alias_urls_.end(), url) |
| 341 != alias_urls_.end(); | 352 != alias_urls_.end(); |
| 342 } | 353 } |
| 343 | 354 |
| 344 void PrerenderContents::DidStopLoading() { | 355 void PrerenderContents::DidStopLoading() { |
| 345 has_stopped_loading_ = true; | 356 has_stopped_loading_ = true; |
| 346 } | 357 } |
| 347 | 358 |
| 348 void PrerenderContents::Destroy(FinalStatus final_status) { | 359 void PrerenderContents::Destroy(FinalStatus final_status) { |
| 349 prerender_manager_->RemoveEntry(this); | 360 prerender_manager_->RemoveEntry(this); |
| 350 set_final_status(final_status); | 361 set_final_status(final_status); |
| 351 delete this; | 362 delete this; |
| 352 } | 363 } |
| 353 | 364 |
| 354 } // namespace prerender | 365 } // namespace prerender |
| OLD | NEW |