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

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

Issue 11028037: Fix prerender histograms for multiple prerender case. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... new tests, indent. Created 8 years, 2 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) 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 <functional> 8 #include <functional>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 // prerenders. 162 // prerenders.
163 prerender_contents_->Destroy(FINAL_STATUS_REGISTER_PROTOCOL_HANDLER); 163 prerender_contents_->Destroy(FINAL_STATUS_REGISTER_PROTOCOL_HANDLER);
164 } 164 }
165 165
166 private: 166 private:
167 PrerenderContents* prerender_contents_; 167 PrerenderContents* prerender_contents_;
168 }; 168 };
169 169
170 void PrerenderContents::AddPendingPrerender( 170 void PrerenderContents::AddPendingPrerender(
171 const base::WeakPtr<PrerenderHandle> weak_prerender_handle, 171 const base::WeakPtr<PrerenderHandle> weak_prerender_handle,
172 const Origin origin,
172 const GURL& url, 173 const GURL& url,
173 const content::Referrer& referrer, 174 const content::Referrer& referrer,
174 const gfx::Size& size) { 175 const gfx::Size& size) {
175 pending_prerenders_.push_back( 176 pending_prerenders_.push_back(
176 PendingPrerenderInfo(weak_prerender_handle, url, referrer, size)); 177 PendingPrerenderInfo(weak_prerender_handle, origin, url, referrer, size));
177 } 178 }
178 179
179 bool PrerenderContents::IsPendingEntry( 180 bool PrerenderContents::IsPendingEntry(
180 const PrerenderHandle& prerender_handle) const { 181 const PrerenderHandle& prerender_handle) const {
181 for (std::vector<PendingPrerenderInfo>::const_iterator it = 182 for (std::vector<PendingPrerenderInfo>::const_iterator it =
182 pending_prerenders_.begin(); 183 pending_prerenders_.begin();
183 it != pending_prerenders_.end(); 184 it != pending_prerenders_.end();
184 ++it) { 185 ++it) {
185 if (it->weak_prerender_handle.get() == &prerender_handle) 186 if (it->weak_prerender_handle.get() == &prerender_handle)
186 return true; 187 return true;
(...skipping 12 matching lines...) Expand all
199 DCHECK(child_id_ == -1 || session_storage_namespace); 200 DCHECK(child_id_ == -1 || session_storage_namespace);
200 201
201 std::vector<PendingPrerenderInfo> pending_prerender_list; 202 std::vector<PendingPrerenderInfo> pending_prerender_list;
202 pending_prerender_list.swap(pending_prerenders_); 203 pending_prerender_list.swap(pending_prerenders_);
203 for (std::vector<PendingPrerenderInfo>::iterator it = 204 for (std::vector<PendingPrerenderInfo>::iterator it =
204 pending_prerender_list.begin(); 205 pending_prerender_list.begin();
205 it != pending_prerender_list.end(); 206 it != pending_prerender_list.end();
206 ++it) { 207 ++it) {
207 if (it->weak_prerender_handle && it->weak_prerender_handle->IsValid()) { 208 if (it->weak_prerender_handle && it->weak_prerender_handle->IsValid()) {
208 prerender_manager_->StartPendingPrerender( 209 prerender_manager_->StartPendingPrerender(
209 it->weak_prerender_handle.get(), ORIGIN_LINK_REL_PRERENDER, child_id_, 210 it->weak_prerender_handle.get(), it->origin, child_id_,
210 it->url, it->referrer, it->size, session_storage_namespace); 211 it->url, it->referrer, it->size, session_storage_namespace);
211 } 212 }
212 } 213 }
213 } 214 }
214 215
215 PrerenderContents::PendingPrerenderInfo::PendingPrerenderInfo( 216 PrerenderContents::PendingPrerenderInfo::PendingPrerenderInfo(
216 const base::WeakPtr<PrerenderHandle> weak_prerender_handle, 217 const base::WeakPtr<PrerenderHandle> weak_prerender_handle,
218 const Origin origin,
217 const GURL& url, 219 const GURL& url,
218 const content::Referrer& referrer, 220 const content::Referrer& referrer,
219 const gfx::Size& size) 221 const gfx::Size& size)
220 : weak_prerender_handle(weak_prerender_handle), 222 : weak_prerender_handle(weak_prerender_handle),
223 origin(origin),
221 url(url), 224 url(url),
222 referrer(referrer), 225 referrer(referrer),
223 size(size) { 226 size(size) {
224 } 227 }
225 228
226 PrerenderContents::PendingPrerenderInfo::~PendingPrerenderInfo() { 229 PrerenderContents::PendingPrerenderInfo::~PendingPrerenderInfo() {
227 } 230 }
228 231
229 PrerenderContents::PrerenderContents( 232 PrerenderContents::PrerenderContents(
230 PrerenderManager* prerender_manager, 233 PrerenderManager* prerender_manager,
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 DCHECK_NE(MATCH_COMPLETE_REPLACEMENT_PENDING, match_complete_status_); 518 DCHECK_NE(MATCH_COMPLETE_REPLACEMENT_PENDING, match_complete_status_);
516 Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME); 519 Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME);
517 return false; 520 return false;
518 } 521 }
519 if (https && !prerender_manager_->config().https_allowed) { 522 if (https && !prerender_manager_->config().https_allowed) {
520 DCHECK_NE(MATCH_COMPLETE_REPLACEMENT_PENDING, match_complete_status_); 523 DCHECK_NE(MATCH_COMPLETE_REPLACEMENT_PENDING, match_complete_status_);
521 Destroy(FINAL_STATUS_HTTPS); 524 Destroy(FINAL_STATUS_HTTPS);
522 return false; 525 return false;
523 } 526 }
524 if (match_complete_status_ != MATCH_COMPLETE_REPLACEMENT_PENDING && 527 if (match_complete_status_ != MATCH_COMPLETE_REPLACEMENT_PENDING &&
525 prerender_manager_->HasRecentlyBeenNavigatedTo(url)) { 528 prerender_manager_->HasRecentlyBeenNavigatedTo(origin(), url)) {
526 Destroy(FINAL_STATUS_RECENTLY_VISITED); 529 Destroy(FINAL_STATUS_RECENTLY_VISITED);
527 return false; 530 return false;
528 } 531 }
529 532
530 alias_urls_.push_back(url); 533 alias_urls_.push_back(url);
531 InformRenderProcessAboutPrerender(url, true, creator_child_id_); 534 InformRenderProcessAboutPrerender(url, true, creator_child_id_);
532 return true; 535 return true;
533 } 536 }
534 537
535 void PrerenderContents::AddAliasURLsFromOtherPrerenderContents( 538 void PrerenderContents::AddAliasURLsFromOtherPrerenderContents(
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 bool PrerenderContents::IsCrossSiteNavigationPending() const { 708 bool PrerenderContents::IsCrossSiteNavigationPending() const {
706 if (!prerender_contents_.get() || !prerender_contents_->web_contents()) 709 if (!prerender_contents_.get() || !prerender_contents_->web_contents())
707 return false; 710 return false;
708 const WebContents* web_contents = prerender_contents_->web_contents(); 711 const WebContents* web_contents = prerender_contents_->web_contents();
709 return (web_contents->GetSiteInstance() != 712 return (web_contents->GetSiteInstance() !=
710 web_contents->GetPendingSiteInstance()); 713 web_contents->GetPendingSiteInstance());
711 } 714 }
712 715
713 716
714 } // namespace prerender 717 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/browser/prerender/prerender_histograms.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698