| 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_contents.h" | 5 #include "chrome/browser/prerender/prerender_contents.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/process_util.h" | 10 #include "base/process_util.h" |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 | 315 |
| 316 tab_contents_delegate_.reset(new TabContentsDelegateImpl(this)); | 316 tab_contents_delegate_.reset(new TabContentsDelegateImpl(this)); |
| 317 new_contents->SetDelegate(tab_contents_delegate_.get()); | 317 new_contents->SetDelegate(tab_contents_delegate_.get()); |
| 318 | 318 |
| 319 // Set the size of the prerender WebContents. | 319 // Set the size of the prerender WebContents. |
| 320 prerender_contents_->web_contents()->GetView()->SizeContents( | 320 prerender_contents_->web_contents()->GetView()->SizeContents( |
| 321 tab_bounds.size()); | 321 tab_bounds.size()); |
| 322 | 322 |
| 323 // Register as an observer of the RenderViewHost so we get messages. | 323 // Register as an observer of the RenderViewHost so we get messages. |
| 324 render_view_host_observer_.reset( | 324 render_view_host_observer_.reset( |
| 325 new PrerenderRenderViewHostObserver(this, render_view_host_mutable())); | 325 new PrerenderRenderViewHostObserver(this, GetRenderViewHostMutable())); |
| 326 | 326 |
| 327 child_id_ = render_view_host()->GetProcess()->GetID(); | 327 child_id_ = GetRenderViewHost()->GetProcess()->GetID(); |
| 328 route_id_ = render_view_host()->GetRoutingID(); | 328 route_id_ = GetRenderViewHost()->GetRoutingID(); |
| 329 | 329 |
| 330 // Register this with the ResourceDispatcherHost as a prerender | 330 // Register this with the ResourceDispatcherHost as a prerender |
| 331 // RenderViewHost. This must be done before the Navigate message to catch all | 331 // RenderViewHost. This must be done before the Navigate message to catch all |
| 332 // resource requests, but as it is on the same thread as the Navigate message | 332 // resource requests, but as it is on the same thread as the Navigate message |
| 333 // (IO) there is no race condition. | 333 // (IO) there is no race condition. |
| 334 prerender_tracker_->OnPrerenderingStarted( | 334 prerender_tracker_->OnPrerenderingStarted( |
| 335 child_id_, | 335 child_id_, |
| 336 route_id_, | 336 route_id_, |
| 337 prerender_manager_); | 337 prerender_manager_); |
| 338 | 338 |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 627 // We may destroy the PrerenderContents before we have initialized the | 627 // We may destroy the PrerenderContents before we have initialized the |
| 628 // RenderViewHost. Otherwise set the Observer's PrerenderContents to NULL to | 628 // RenderViewHost. Otherwise set the Observer's PrerenderContents to NULL to |
| 629 // avoid any more messages being sent. | 629 // avoid any more messages being sent. |
| 630 if (render_view_host_observer_.get()) | 630 if (render_view_host_observer_.get()) |
| 631 render_view_host_observer_->set_prerender_contents(NULL); | 631 render_view_host_observer_->set_prerender_contents(NULL); |
| 632 } | 632 } |
| 633 | 633 |
| 634 base::ProcessMetrics* PrerenderContents::MaybeGetProcessMetrics() { | 634 base::ProcessMetrics* PrerenderContents::MaybeGetProcessMetrics() { |
| 635 if (process_metrics_.get() == NULL) { | 635 if (process_metrics_.get() == NULL) { |
| 636 // If a PrenderContents hasn't started prerending, don't be fully formed. | 636 // If a PrenderContents hasn't started prerending, don't be fully formed. |
| 637 if (!render_view_host() || !render_view_host()->GetProcess()) | 637 if (!GetRenderViewHost() || !GetRenderViewHost()->GetProcess()) |
| 638 return NULL; | 638 return NULL; |
| 639 base::ProcessHandle handle = render_view_host()->GetProcess()->GetHandle(); | 639 base::ProcessHandle handle = GetRenderViewHost()->GetProcess()->GetHandle(); |
| 640 if (handle == base::kNullProcessHandle) | 640 if (handle == base::kNullProcessHandle) |
| 641 return NULL; | 641 return NULL; |
| 642 #if !defined(OS_MACOSX) | 642 #if !defined(OS_MACOSX) |
| 643 process_metrics_.reset(base::ProcessMetrics::CreateProcessMetrics(handle)); | 643 process_metrics_.reset(base::ProcessMetrics::CreateProcessMetrics(handle)); |
| 644 #else | 644 #else |
| 645 process_metrics_.reset(base::ProcessMetrics::CreateProcessMetrics( | 645 process_metrics_.reset(base::ProcessMetrics::CreateProcessMetrics( |
| 646 handle, | 646 handle, |
| 647 content::BrowserChildProcessHost::GetPortProvider())); | 647 content::BrowserChildProcessHost::GetPortProvider())); |
| 648 #endif | 648 #endif |
| 649 } | 649 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 669 content::WebContentsObserver::Observe(NULL); | 669 content::WebContentsObserver::Observe(NULL); |
| 670 return prerender_contents_.release(); | 670 return prerender_contents_.release(); |
| 671 } | 671 } |
| 672 | 672 |
| 673 WebContents* PrerenderContents::GetWebContents() { | 673 WebContents* PrerenderContents::GetWebContents() { |
| 674 if (!prerender_contents_.get()) | 674 if (!prerender_contents_.get()) |
| 675 return NULL; | 675 return NULL; |
| 676 return prerender_contents_->web_contents(); | 676 return prerender_contents_->web_contents(); |
| 677 } | 677 } |
| 678 | 678 |
| 679 RenderViewHost* PrerenderContents::render_view_host_mutable() { | 679 RenderViewHost* PrerenderContents::GetRenderViewHostMutable() { |
| 680 return const_cast<RenderViewHost*>(render_view_host()); | 680 return const_cast<RenderViewHost*>(GetRenderViewHost()); |
| 681 } | 681 } |
| 682 | 682 |
| 683 const RenderViewHost* PrerenderContents::render_view_host() const { | 683 const RenderViewHost* PrerenderContents::GetRenderViewHost() const { |
| 684 if (!prerender_contents_.get()) | 684 if (!prerender_contents_.get()) |
| 685 return NULL; | 685 return NULL; |
| 686 return prerender_contents_->web_contents()->GetRenderViewHost(); | 686 return prerender_contents_->web_contents()->GetRenderViewHost(); |
| 687 } | 687 } |
| 688 | 688 |
| 689 void PrerenderContents::CommitHistory(TabContentsWrapper* tab) { | 689 void PrerenderContents::CommitHistory(TabContentsWrapper* tab) { |
| 690 if (tab_contents_delegate_.get()) | 690 if (tab_contents_delegate_.get()) |
| 691 tab_contents_delegate_->CommitHistory(tab); | 691 tab_contents_delegate_->CommitHistory(tab); |
| 692 } | 692 } |
| 693 | 693 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 705 bool PrerenderContents::IsCrossSiteNavigationPending() const { | 705 bool PrerenderContents::IsCrossSiteNavigationPending() const { |
| 706 if (!prerender_contents_.get() || !prerender_contents_->web_contents()) | 706 if (!prerender_contents_.get() || !prerender_contents_->web_contents()) |
| 707 return false; | 707 return false; |
| 708 const WebContents* web_contents = prerender_contents_->web_contents(); | 708 const WebContents* web_contents = prerender_contents_->web_contents(); |
| 709 return (web_contents->GetSiteInstance() != | 709 return (web_contents->GetSiteInstance() != |
| 710 web_contents->GetPendingSiteInstance()); | 710 web_contents->GetPendingSiteInstance()); |
| 711 } | 711 } |
| 712 | 712 |
| 713 | 713 |
| 714 } // namespace prerender | 714 } // namespace prerender |
| OLD | NEW |