| 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/i18n/rtl.h" | 7 #include "base/i18n/rtl.h" |
| 8 #include "base/process_util.h" | 8 #include "base/process_util.h" |
| 9 #include "base/task.h" | 9 #include "base/task.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 } | 240 } |
| 241 | 241 |
| 242 ViewType::Type PrerenderContents::GetRenderViewType() const { | 242 ViewType::Type PrerenderContents::GetRenderViewType() const { |
| 243 return ViewType::BACKGROUND_CONTENTS; | 243 return ViewType::BACKGROUND_CONTENTS; |
| 244 } | 244 } |
| 245 | 245 |
| 246 int PrerenderContents::GetBrowserWindowID() const { | 246 int PrerenderContents::GetBrowserWindowID() const { |
| 247 return extension_misc::kUnknownWindowId; | 247 return extension_misc::kUnknownWindowId; |
| 248 } | 248 } |
| 249 | 249 |
| 250 void PrerenderContents::RenderViewGone(RenderViewHost* render_view_host, |
| 251 base::TerminationStatus status, |
| 252 int error_code) { |
| 253 DCHECK_EQ(render_view_host_, render_view_host); |
| 254 // Cancel the prerender if the RenderView crashes. |
| 255 Destroy(FINAL_STATUS_RENDERER_CRASHED); |
| 256 } |
| 257 |
| 250 void PrerenderContents::DidNavigate( | 258 void PrerenderContents::DidNavigate( |
| 251 RenderViewHost* render_view_host, | 259 RenderViewHost* render_view_host, |
| 252 const ViewHostMsg_FrameNavigate_Params& params) { | 260 const ViewHostMsg_FrameNavigate_Params& params) { |
| 261 DCHECK_EQ(render_view_host_, render_view_host); |
| 262 |
| 253 // We only care when the outer frame changes. | 263 // We only care when the outer frame changes. |
| 254 if (!PageTransition::IsMainFrame(params.transition)) | 264 if (!PageTransition::IsMainFrame(params.transition)) |
| 255 return; | 265 return; |
| 256 | 266 |
| 257 // Store the navigation params. | 267 // Store the navigation params. |
| 258 ViewHostMsg_FrameNavigate_Params* p = new ViewHostMsg_FrameNavigate_Params(); | 268 ViewHostMsg_FrameNavigate_Params* p = new ViewHostMsg_FrameNavigate_Params(); |
| 259 *p = params; | 269 *p = params; |
| 260 navigate_params_.reset(p); | 270 navigate_params_.reset(p); |
| 261 | 271 |
| 262 if (!AddAliasURL(params.url)) { | 272 if (!AddAliasURL(params.url)) { |
| 263 Destroy(FINAL_STATUS_HTTPS); | 273 Destroy(FINAL_STATUS_HTTPS); |
| 264 return; | 274 return; |
| 265 } | 275 } |
| 266 | 276 |
| 267 url_ = params.url; | 277 url_ = params.url; |
| 268 } | 278 } |
| 269 | 279 |
| 270 void PrerenderContents::UpdateTitle( | 280 void PrerenderContents::UpdateTitle( |
| 271 RenderViewHost* render_view_host, | 281 RenderViewHost* render_view_host, |
| 272 int32 page_id, | 282 int32 page_id, |
| 273 const base::i18n::String16WithDirection& title) { | 283 const base::i18n::String16WithDirection& title) { |
| 284 DCHECK_EQ(render_view_host_, render_view_host); |
| 274 if (title.string().empty()) | 285 if (title.string().empty()) |
| 275 return; | 286 return; |
| 276 | 287 |
| 277 // TODO(evan): use directionality of title. | 288 // TODO(evan): use directionality of title. |
| 278 // http://code.google.com/p/chromium/issues/detail?id=27094 | 289 // http://code.google.com/p/chromium/issues/detail?id=27094 |
| 279 title_ = title.string(); | 290 title_ = title.string(); |
| 280 page_id_ = page_id; | 291 page_id_ = page_id; |
| 281 } | 292 } |
| 282 | 293 |
| 283 void PrerenderContents::RunJavaScriptMessage( | 294 void PrerenderContents::RunJavaScriptMessage( |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 set_final_status(final_status); | 531 set_final_status(final_status); |
| 521 delete this; | 532 delete this; |
| 522 } | 533 } |
| 523 | 534 |
| 524 void PrerenderContents::OnJSOutOfMemory() { | 535 void PrerenderContents::OnJSOutOfMemory() { |
| 525 Destroy(FINAL_STATUS_JS_OUT_OF_MEMORY); | 536 Destroy(FINAL_STATUS_JS_OUT_OF_MEMORY); |
| 526 } | 537 } |
| 527 | 538 |
| 528 void PrerenderContents::RendererUnresponsive(RenderViewHost* render_view_host, | 539 void PrerenderContents::RendererUnresponsive(RenderViewHost* render_view_host, |
| 529 bool is_during_unload) { | 540 bool is_during_unload) { |
| 541 DCHECK_EQ(render_view_host_, render_view_host); |
| 530 Destroy(FINAL_STATUS_RENDERER_UNRESPONSIVE); | 542 Destroy(FINAL_STATUS_RENDERER_UNRESPONSIVE); |
| 531 } | 543 } |
| 532 | 544 |
| 533 | 545 |
| 534 base::ProcessMetrics* PrerenderContents::MaybeGetProcessMetrics() { | 546 base::ProcessMetrics* PrerenderContents::MaybeGetProcessMetrics() { |
| 535 if (process_metrics_.get() == NULL) { | 547 if (process_metrics_.get() == NULL) { |
| 536 // If a PrenderContents hasn't started prerending, don't be fully formed. | 548 // If a PrenderContents hasn't started prerending, don't be fully formed. |
| 537 if (!render_view_host_ || !render_view_host_->process()) | 549 if (!render_view_host_ || !render_view_host_->process()) |
| 538 return NULL; | 550 return NULL; |
| 539 base::ProcessHandle handle = render_view_host_->process()->GetHandle(); | 551 base::ProcessHandle handle = render_view_host_->process()->GetHandle(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 557 return; | 569 return; |
| 558 | 570 |
| 559 size_t private_bytes, shared_bytes; | 571 size_t private_bytes, shared_bytes; |
| 560 if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes)) { | 572 if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes)) { |
| 561 if (private_bytes > kMaxPrerenderPrivateMB * 1024 * 1024) | 573 if (private_bytes > kMaxPrerenderPrivateMB * 1024 * 1024) |
| 562 Destroy(FINAL_STATUS_MEMORY_LIMIT_EXCEEDED); | 574 Destroy(FINAL_STATUS_MEMORY_LIMIT_EXCEEDED); |
| 563 } | 575 } |
| 564 } | 576 } |
| 565 | 577 |
| 566 } // namespace prerender | 578 } // namespace prerender |
| OLD | NEW |