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

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

Issue 7374008: Move download stuff from download helper back to TabContents. This is basically a revert of r8576... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix unittests Created 9 years, 5 months 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
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/browser/profiles/profile.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 81
82 // TabContentsDelegate implementation: 82 // TabContentsDelegate implementation:
83 virtual bool ShouldAddNavigationToHistory( 83 virtual bool ShouldAddNavigationToHistory(
84 const history::HistoryAddPageArgs& add_page_args, 84 const history::HistoryAddPageArgs& add_page_args,
85 NavigationType::Type navigation_type) OVERRIDE { 85 NavigationType::Type navigation_type) OVERRIDE {
86 add_page_vector_.push_back( 86 add_page_vector_.push_back(
87 scoped_refptr<history::HistoryAddPageArgs>(add_page_args.Clone())); 87 scoped_refptr<history::HistoryAddPageArgs>(add_page_args.Clone()));
88 return false; 88 return false;
89 } 89 }
90 90
91 bool CanDownload(TabContents* source, int request_id) OVERRIDE {
92 prerender_contents_->Destroy(FINAL_STATUS_DOWNLOAD);
93 // Cancel the download.
94 return false;
95 }
96
97 void OnStartDownload(TabContents* source, DownloadItem* download) OVERRIDE {
98 // Prerendered pages should never be able to download files.
99 NOTREACHED();
100 }
101
91 // Commits the History of Pages to the given TabContents. 102 // Commits the History of Pages to the given TabContents.
92 void CommitHistory(TabContentsWrapper* tab) { 103 void CommitHistory(TabContentsWrapper* tab) {
93 for (size_t i = 0; i < add_page_vector_.size(); ++i) 104 for (size_t i = 0; i < add_page_vector_.size(); ++i)
94 tab->history_tab_helper()->UpdateHistoryForNavigation( 105 tab->history_tab_helper()->UpdateHistoryForNavigation(
95 add_page_vector_[i].get()); 106 add_page_vector_[i].get());
96 } 107 }
97 108
98 private: 109 private:
99 typedef std::vector<scoped_refptr<history::HistoryAddPageArgs> > 110 typedef std::vector<scoped_refptr<history::HistoryAddPageArgs> >
100 AddPageVector; 111 AddPageVector;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 const RenderViewHost* source_render_view_host) { 154 const RenderViewHost* source_render_view_host) {
144 DCHECK(profile_ != NULL); 155 DCHECK(profile_ != NULL);
145 DCHECK(!prerendering_has_started_); 156 DCHECK(!prerendering_has_started_);
146 DCHECK(prerender_contents_.get() == NULL); 157 DCHECK(prerender_contents_.get() == NULL);
147 158
148 prerendering_has_started_ = true; 159 prerendering_has_started_ = true;
149 TabContents* new_contents = new TabContents(profile_, NULL, MSG_ROUTING_NONE, 160 TabContents* new_contents = new TabContents(profile_, NULL, MSG_ROUTING_NONE,
150 NULL, NULL); 161 NULL, NULL);
151 prerender_contents_.reset(new TabContentsWrapper(new_contents)); 162 prerender_contents_.reset(new TabContentsWrapper(new_contents));
152 TabContentsObserver::Observe(new_contents); 163 TabContentsObserver::Observe(new_contents);
153 prerender_contents_->download_tab_helper()->set_delegate(this);
154 164
155 gfx::Rect tab_bounds; 165 gfx::Rect tab_bounds;
156 if (source_render_view_host) { 166 if (source_render_view_host) {
157 DCHECK(source_render_view_host->view() != NULL); 167 DCHECK(source_render_view_host->view() != NULL);
158 TabContents* source_tc = 168 TabContents* source_tc =
159 source_render_view_host->delegate()->GetAsTabContents(); 169 source_render_view_host->delegate()->GetAsTabContents();
160 if (source_tc) { 170 if (source_tc) {
161 // So that history merging will work, get the max page ID 171 // So that history merging will work, get the max page ID
162 // of the old page as a starting id. 172 // of the old page as a starting id.
163 starting_page_id_ = source_tc->GetMaxPageID(); 173 starting_page_id_ = source_tc->GetMaxPageID();
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 } 520 }
511 set_final_status(final_status); 521 set_final_status(final_status);
512 522
513 // We may destroy the PrerenderContents before we have initialized the 523 // We may destroy the PrerenderContents before we have initialized the
514 // RenderViewHost. Otherwise set the Observer's PrerenderContents to NULL to 524 // RenderViewHost. Otherwise set the Observer's PrerenderContents to NULL to
515 // avoid any more messages being sent. 525 // avoid any more messages being sent.
516 if (render_view_host_observer_.get()) 526 if (render_view_host_observer_.get())
517 render_view_host_observer_->set_prerender_contents(NULL); 527 render_view_host_observer_->set_prerender_contents(NULL);
518 } 528 }
519 529
520 bool PrerenderContents::CanDownload(int request_id) {
521 Destroy(FINAL_STATUS_DOWNLOAD);
522 // Cancel the download.
523 return false;
524 }
525
526 void PrerenderContents::OnStartDownload(DownloadItem* download,
527 TabContentsWrapper* tab) {
528 // Prerendered pages should never be able to download files.
529 NOTREACHED();
530 }
531
532 base::ProcessMetrics* PrerenderContents::MaybeGetProcessMetrics() { 530 base::ProcessMetrics* PrerenderContents::MaybeGetProcessMetrics() {
533 if (process_metrics_.get() == NULL) { 531 if (process_metrics_.get() == NULL) {
534 // If a PrenderContents hasn't started prerending, don't be fully formed. 532 // If a PrenderContents hasn't started prerending, don't be fully formed.
535 if (!render_view_host() || !render_view_host()->process()) 533 if (!render_view_host() || !render_view_host()->process())
536 return NULL; 534 return NULL;
537 base::ProcessHandle handle = render_view_host()->process()->GetHandle(); 535 base::ProcessHandle handle = render_view_host()->process()->GetHandle();
538 if (handle == base::kNullProcessHandle) 536 if (handle == base::kNullProcessHandle)
539 return NULL; 537 return NULL;
540 #if !defined(OS_MACOSX) 538 #if !defined(OS_MACOSX)
541 process_metrics_.reset(base::ProcessMetrics::CreateProcessMetrics(handle)); 539 process_metrics_.reset(base::ProcessMetrics::CreateProcessMetrics(handle));
(...skipping 15 matching lines...) Expand all
557 size_t private_bytes, shared_bytes; 555 size_t private_bytes, shared_bytes;
558 if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes) && 556 if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes) &&
559 private_bytes > prerender_manager_->config().max_bytes) { 557 private_bytes > prerender_manager_->config().max_bytes) {
560 Destroy(FINAL_STATUS_MEMORY_LIMIT_EXCEEDED); 558 Destroy(FINAL_STATUS_MEMORY_LIMIT_EXCEEDED);
561 } 559 }
562 } 560 }
563 561
564 TabContentsWrapper* PrerenderContents::ReleasePrerenderContents() { 562 TabContentsWrapper* PrerenderContents::ReleasePrerenderContents() {
565 prerender_contents_->tab_contents()->set_delegate(NULL); 563 prerender_contents_->tab_contents()->set_delegate(NULL);
566 render_view_host_observer_.reset(); 564 render_view_host_observer_.reset();
567 prerender_contents_->download_tab_helper()->set_delegate(NULL);
568 TabContentsObserver::Observe(NULL); 565 TabContentsObserver::Observe(NULL);
569 return prerender_contents_.release(); 566 return prerender_contents_.release();
570 } 567 }
571 568
572 RenderViewHostDelegate* PrerenderContents::GetRenderViewHostDelegate() { 569 RenderViewHostDelegate* PrerenderContents::GetRenderViewHostDelegate() {
573 if (!prerender_contents_.get()) 570 if (!prerender_contents_.get())
574 return NULL; 571 return NULL;
575 return prerender_contents_->tab_contents(); 572 return prerender_contents_->tab_contents();
576 } 573 }
577 574
(...skipping 17 matching lines...) Expand all
595 return NULL; 592 return NULL;
596 DictionaryValue* dict_value = new DictionaryValue(); 593 DictionaryValue* dict_value = new DictionaryValue();
597 dict_value->SetString("url", prerender_url_.spec()); 594 dict_value->SetString("url", prerender_url_.spec());
598 base::TimeTicks current_time = base::TimeTicks::Now(); 595 base::TimeTicks current_time = base::TimeTicks::Now();
599 base::TimeDelta duration = current_time - load_start_time_; 596 base::TimeDelta duration = current_time - load_start_time_;
600 dict_value->SetInteger("duration", duration.InSeconds()); 597 dict_value->SetInteger("duration", duration.InSeconds());
601 return dict_value; 598 return dict_value;
602 } 599 }
603 600
604 } // namespace prerender 601 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/browser/profiles/profile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698