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

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

Issue 6171007: For prerendering, keep track of all the intermediate redirects, and hook into... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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_manager.h" 5 #include "chrome/browser/prerender/prerender_manager.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/prerender/prerender_contents.h" 10 #include "chrome/browser/prerender/prerender_contents.h"
(...skipping 22 matching lines...) Expand all
33 33
34 PrerenderManager::~PrerenderManager() { 34 PrerenderManager::~PrerenderManager() {
35 while (prerender_list_.size() > 0) { 35 while (prerender_list_.size() > 0) {
36 PrerenderContentsData data = prerender_list_.front(); 36 PrerenderContentsData data = prerender_list_.front();
37 prerender_list_.pop_front(); 37 prerender_list_.pop_front();
38 delete data.contents_; 38 delete data.contents_;
39 } 39 }
40 } 40 }
41 41
42 void PrerenderManager::AddPreload(const GURL& url) { 42 void PrerenderManager::AddPreload(const GURL& url) {
43 printf("\n\n\n\n**** PRERENDER REQUEST FOR %s\n\n\n\n", url.spec().c_str());
cbentzel 2011/01/12 18:04:14 Remove printf, or use VLOG if really necessary.
tburkard 2011/01/12 21:32:10 Done.
43 DCHECK(CalledOnValidThread()); 44 DCHECK(CalledOnValidThread());
44 DeleteOldEntries(); 45 DeleteOldEntries();
45 // If the URL already exists in the set of preloaded URLs, don't do anything. 46 // If the URL already exists in the set of preloaded URLs, don't do anything.
46 for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); 47 for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin();
47 it != prerender_list_.end(); 48 it != prerender_list_.end();
48 ++it) { 49 ++it) {
49 if (it->url_ == url) 50 if (it->url_ == url)
50 return; 51 return;
51 } 52 }
52 PrerenderContentsData data(CreatePrerenderContents(url), 53 PrerenderContentsData data(CreatePrerenderContents(url),
(...skipping 15 matching lines...) Expand all
68 prerender_list_.pop_front(); 69 prerender_list_.pop_front();
69 delete data.contents_; 70 delete data.contents_;
70 } 71 }
71 } 72 }
72 73
73 PrerenderContents* PrerenderManager::GetEntry(const GURL& url) { 74 PrerenderContents* PrerenderManager::GetEntry(const GURL& url) {
74 DeleteOldEntries(); 75 DeleteOldEntries();
75 for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); 76 for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin();
76 it != prerender_list_.end(); 77 it != prerender_list_.end();
77 ++it) { 78 ++it) {
78 if (it->url_ == url) { 79 PrerenderContents* pc = it->contents_;
80 if (pc->MatchesUrl(url)) {
79 PrerenderContents* pc = it->contents_; 81 PrerenderContents* pc = it->contents_;
80 prerender_list_.erase(it); 82 prerender_list_.erase(it);
81 return pc; 83 return pc;
82 } 84 }
83 } 85 }
84 // Entry not found. 86 // Entry not found.
85 return NULL; 87 return NULL;
86 } 88 }
87 89
88 bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tc, const GURL& url) { 90 bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tc, const GURL& url) {
89 DCHECK(CalledOnValidThread()); 91 DCHECK(CalledOnValidThread());
90 scoped_ptr<PrerenderContents> pc(GetEntry(url)); 92 scoped_ptr<PrerenderContents> pc(GetEntry(url));
93 printf("\n\nlooking for prerender for %s\n\n", url.spec().c_str());
91 if (pc.get() == NULL) 94 if (pc.get() == NULL)
92 return false; 95 return false;
93 96 printf("FOUND!!\n\n");
94 RenderViewHost* rvh = pc->render_view_host(); 97 RenderViewHost* rvh = pc->render_view_host();
95 pc->set_render_view_host(NULL); 98 pc->set_render_view_host(NULL);
96 tc->SwapInRenderViewHost(rvh); 99 tc->SwapInRenderViewHost(rvh);
97 100
98 ViewHostMsg_FrameNavigate_Params* p = pc->navigate_params(); 101 ViewHostMsg_FrameNavigate_Params* p = pc->navigate_params();
99 if (p != NULL) 102 if (p != NULL)
100 tc->DidNavigate(rvh, *p); 103 tc->DidNavigate(rvh, *p);
101 104
102 string16 title = pc->title(); 105 string16 title = pc->title();
103 if (!title.empty()) 106 if (!title.empty())
(...skipping 21 matching lines...) Expand all
125 } 128 }
126 129
127 bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const { 130 bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const {
128 base::Time now = GetCurrentTime(); 131 base::Time now = GetCurrentTime();
129 return (now - start < max_prerender_age_); 132 return (now - start < max_prerender_age_);
130 } 133 }
131 134
132 PrerenderContents* PrerenderManager::CreatePrerenderContents(const GURL& url) { 135 PrerenderContents* PrerenderManager::CreatePrerenderContents(const GURL& url) {
133 return new PrerenderContents(this, profile_, url); 136 return new PrerenderContents(this, profile_, url);
134 } 137 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698