Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Side by Side Diff: chrome/browser/prerender/prerender_contents.cc

Issue 8892011: Clean up TCW, make it solely a hub for 1:1 observer/helper objects. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/process_util.h" 10 #include "base/process_util.h"
11 #include "base/task.h" 11 #include "base/task.h"
12 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
13 #include "chrome/browser/history/history_tab_helper.h" 13 #include "chrome/browser/history/history_tab_helper.h"
14 #include "chrome/browser/history/history_types.h" 14 #include "chrome/browser/history/history_types.h"
15 #include "chrome/browser/prerender/prerender_final_status.h" 15 #include "chrome/browser/prerender/prerender_final_status.h"
16 #include "chrome/browser/prerender/prerender_manager.h" 16 #include "chrome/browser/prerender/prerender_manager.h"
17 #include "chrome/browser/prerender/prerender_render_view_host_observer.h" 17 #include "chrome/browser/prerender/prerender_render_view_host_observer.h"
18 #include "chrome/browser/prerender/prerender_tracker.h" 18 #include "chrome/browser/prerender/prerender_tracker.h"
19 #include "chrome/browser/profiles/profile.h" 19 #include "chrome/browser/profiles/profile.h"
20 #include "chrome/browser/ui/browser.h" 20 #include "chrome/browser/ui/browser.h"
21 #include "chrome/browser/ui/browser_list.h" 21 #include "chrome/browser/ui/browser_list.h"
22 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 22 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
23 #include "chrome/common/chrome_notification_types.h" 23 #include "chrome/common/chrome_notification_types.h"
24 #include "chrome/common/icon_messages.h" 24 #include "chrome/common/icon_messages.h"
25 #include "chrome/common/render_messages.h" 25 #include "chrome/common/render_messages.h"
26 #include "chrome/common/url_constants.h" 26 #include "chrome/common/url_constants.h"
27 #include "content/browser/in_process_webkit/session_storage_namespace.h" 27 #include "content/browser/in_process_webkit/session_storage_namespace.h"
28 #include "content/browser/renderer_host/render_view_host.h" 28 #include "content/browser/renderer_host/render_view_host.h"
29 #include "content/browser/renderer_host/resource_request_details.h" 29 #include "content/browser/renderer_host/resource_request_details.h"
30 #include "content/browser/tab_contents/tab_contents.h"
30 #include "content/browser/tab_contents/tab_contents_delegate.h" 31 #include "content/browser/tab_contents/tab_contents_delegate.h"
31 #include "content/browser/tab_contents/tab_contents_view.h" 32 #include "content/browser/tab_contents/tab_contents_view.h"
32 #include "content/public/browser/notification_service.h" 33 #include "content/public/browser/notification_service.h"
33 #include "ui/gfx/rect.h" 34 #include "ui/gfx/rect.h"
34 35
35 #if defined(OS_MACOSX) 36 #if defined(OS_MACOSX)
36 #include "content/browser/mach_broker_mac.h" 37 #include "content/browser/mach_broker_mac.h"
37 #endif 38 #endif
38 39
39 namespace prerender { 40 namespace prerender {
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 active_browser->active_index()); 276 active_browser->active_index());
276 active_tab_contents->view()->GetContainerBounds(&tab_bounds); 277 active_tab_contents->view()->GetContainerBounds(&tab_bounds);
277 } 278 }
278 } 279 }
279 280
280 // Add a safety margin of kPrerenderPageIdOffset to the starting page id (for 281 // Add a safety margin of kPrerenderPageIdOffset to the starting page id (for
281 // things such as redirects). 282 // things such as redirects).
282 if (starting_page_id_ < 0) 283 if (starting_page_id_ < 0)
283 starting_page_id_ = 0; 284 starting_page_id_ = 0;
284 starting_page_id_ += kPrerenderPageIdOffset; 285 starting_page_id_ += kPrerenderPageIdOffset;
285 prerender_contents_->controller().set_max_restored_page_id(starting_page_id_); 286 prerender_contents_->tab_contents()->controller().set_max_restored_page_id(
287 starting_page_id_);
286 288
287 tab_contents_delegate_.reset(new TabContentsDelegateImpl(this)); 289 tab_contents_delegate_.reset(new TabContentsDelegateImpl(this));
288 new_contents->set_delegate(tab_contents_delegate_.get()); 290 new_contents->set_delegate(tab_contents_delegate_.get());
289 291
290 // Set the size of the prerender TabContents. 292 // Set the size of the prerender TabContents.
291 prerender_contents_->view()->SizeContents(tab_bounds.size()); 293 prerender_contents_->tab_contents()->view()->SizeContents(tab_bounds.size());
292 294
293 // Register as an observer of the RenderViewHost so we get messages. 295 // Register as an observer of the RenderViewHost so we get messages.
294 render_view_host_observer_.reset( 296 render_view_host_observer_.reset(
295 new PrerenderRenderViewHostObserver(this, render_view_host_mutable())); 297 new PrerenderRenderViewHostObserver(this, render_view_host_mutable()));
296 298
297 child_id_ = render_view_host()->process()->GetID(); 299 child_id_ = render_view_host()->process()->GetID();
298 route_id_ = render_view_host()->routing_id(); 300 route_id_ = render_view_host()->routing_id();
299 301
300 // Register this with the ResourceDispatcherHost as a prerender 302 // Register this with the ResourceDispatcherHost as a prerender
301 // RenderViewHost. This must be done before the Navigate message to catch all 303 // RenderViewHost. This must be done before the Navigate message to catch all
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 return prerender_contents_->tab_contents(); 662 return prerender_contents_->tab_contents();
661 } 663 }
662 664
663 RenderViewHost* PrerenderContents::render_view_host_mutable() { 665 RenderViewHost* PrerenderContents::render_view_host_mutable() {
664 return const_cast<RenderViewHost*>(render_view_host()); 666 return const_cast<RenderViewHost*>(render_view_host());
665 } 667 }
666 668
667 const RenderViewHost* PrerenderContents::render_view_host() const { 669 const RenderViewHost* PrerenderContents::render_view_host() const {
668 if (!prerender_contents_.get()) 670 if (!prerender_contents_.get())
669 return NULL; 671 return NULL;
670 return prerender_contents_->render_view_host(); 672 return prerender_contents_->tab_contents()->render_view_host();
671 } 673 }
672 674
673 void PrerenderContents::CommitHistory(TabContentsWrapper* tab) { 675 void PrerenderContents::CommitHistory(TabContentsWrapper* tab) {
674 if (tab_contents_delegate_.get()) 676 if (tab_contents_delegate_.get())
675 tab_contents_delegate_->CommitHistory(tab); 677 tab_contents_delegate_->CommitHistory(tab);
676 } 678 }
677 679
678 Value* PrerenderContents::GetAsValue() const { 680 Value* PrerenderContents::GetAsValue() const {
679 if (!prerender_contents_.get()) 681 if (!prerender_contents_.get())
680 return NULL; 682 return NULL;
681 DictionaryValue* dict_value = new DictionaryValue(); 683 DictionaryValue* dict_value = new DictionaryValue();
682 dict_value->SetString("url", prerender_url_.spec()); 684 dict_value->SetString("url", prerender_url_.spec());
683 base::TimeTicks current_time = base::TimeTicks::Now(); 685 base::TimeTicks current_time = base::TimeTicks::Now();
684 base::TimeDelta duration = current_time - load_start_time_; 686 base::TimeDelta duration = current_time - load_start_time_;
685 dict_value->SetInteger("duration", duration.InSeconds()); 687 dict_value->SetInteger("duration", duration.InSeconds());
686 return dict_value; 688 return dict_value;
687 } 689 }
688 690
689 bool PrerenderContents::IsCrossSiteNavigationPending() const { 691 bool PrerenderContents::IsCrossSiteNavigationPending() const {
690 if (!prerender_contents_.get() || !prerender_contents_->tab_contents()) 692 if (!prerender_contents_.get() || !prerender_contents_->tab_contents())
691 return false; 693 return false;
692 const TabContents* tab_contents = prerender_contents_->tab_contents(); 694 const TabContents* tab_contents = prerender_contents_->tab_contents();
693 return (tab_contents->GetSiteInstance() != 695 return (tab_contents->GetSiteInstance() !=
694 tab_contents->GetPendingSiteInstance()); 696 tab_contents->GetPendingSiteInstance());
695 } 697 }
696 698
697 699
698 } // namespace prerender 700 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_browsertest.cc ('k') | chrome/browser/prerender/prerender_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698