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

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

Issue 6880139: Changing URL match method to support fragments. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: New browser tests Created 9 years, 8 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) 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>
8
7 #include "base/i18n/rtl.h" 9 #include "base/i18n/rtl.h"
8 #include "base/process_util.h" 10 #include "base/process_util.h"
9 #include "base/task.h" 11 #include "base/task.h"
10 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
11 #include "chrome/browser/background_contents_service.h" 13 #include "chrome/browser/background_contents_service.h"
12 #include "chrome/browser/browser_process.h" 14 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/prerender/prerender_final_status.h" 15 #include "chrome/browser/prerender/prerender_final_status.h"
14 #include "chrome/browser/prerender/prerender_manager.h" 16 #include "chrome/browser/prerender/prerender_manager.h"
15 #include "chrome/browser/prerender/prerender_render_widget_host_view.h" 17 #include "chrome/browser/prerender/prerender_render_widget_host_view.h"
16 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
(...skipping 13 matching lines...) Expand all
30 #include "content/common/notification_service.h" 32 #include "content/common/notification_service.h"
31 #include "content/common/view_messages.h" 33 #include "content/common/view_messages.h"
32 #include "ui/gfx/rect.h" 34 #include "ui/gfx/rect.h"
33 35
34 #if defined(OS_MACOSX) 36 #if defined(OS_MACOSX)
35 #include "chrome/browser/mach_broker_mac.h" 37 #include "chrome/browser/mach_broker_mac.h"
36 #endif 38 #endif
37 39
38 namespace prerender { 40 namespace prerender {
39 41
42 // Compares URLs ignoring any ref for the purposes of matching URLs when
43 // prerendering.
44 struct PrerenderUrlPredicate {
45 explicit PrerenderUrlPredicate(const GURL& url)
46 : url_(url) {
47 }
48
49 bool operator()(const GURL& url) const {
50 return url.scheme() == url_.scheme() &&
51 url.host() == url_.host() &&
52 url.port() == url_.port() &&
53 url.path() == url_.path() &&
54 url.query() == url_.query();
55 }
56 GURL url_;
57 };
58
40 void AddChildRoutePair(ResourceDispatcherHost* rdh, 59 void AddChildRoutePair(ResourceDispatcherHost* rdh,
41 int child_id, int route_id) { 60 int child_id, int route_id) {
42 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 61 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
43 rdh->AddPrerenderChildRoutePair(child_id, route_id); 62 rdh->AddPrerenderChildRoutePair(child_id, route_id);
44 } 63 }
45 64
46 void RemoveChildRoutePair(ResourceDispatcherHost* rdh, 65 void RemoveChildRoutePair(ResourceDispatcherHost* rdh,
47 int child_id, int route_id) { 66 int child_id, int route_id) {
48 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 67 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
49 rdh->RemovePrerenderChildRoutePair(child_id, route_id); 68 rdh->RemovePrerenderChildRoutePair(child_id, route_id);
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 } 519 }
501 520
502 bool PrerenderContents::AddAliasURL(const GURL& url) { 521 bool PrerenderContents::AddAliasURL(const GURL& url) {
503 if (!url.SchemeIs("http")) 522 if (!url.SchemeIs("http"))
504 return false; 523 return false;
505 alias_urls_.push_back(url); 524 alias_urls_.push_back(url);
506 return true; 525 return true;
507 } 526 }
508 527
509 bool PrerenderContents::MatchesURL(const GURL& url) const { 528 bool PrerenderContents::MatchesURL(const GURL& url) const {
510 return std::find(alias_urls_.begin(), alias_urls_.end(), url) 529 return std::find_if(alias_urls_.begin(),
511 != alias_urls_.end(); 530 alias_urls_.end(),
531 PrerenderUrlPredicate(url)) != alias_urls_.end();
512 } 532 }
513 533
514 void PrerenderContents::DidStopLoading() { 534 void PrerenderContents::DidStopLoading() {
515 has_stopped_loading_ = true; 535 has_stopped_loading_ = true;
516 } 536 }
517 537
518 void PrerenderContents::Destroy(FinalStatus final_status) { 538 void PrerenderContents::Destroy(FinalStatus final_status) {
519 prerender_manager_->RemoveEntry(this); 539 prerender_manager_->RemoveEntry(this);
520 set_final_status(final_status); 540 set_final_status(final_status);
521 delete this; 541 delete this;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 return; 577 return;
558 578
559 size_t private_bytes, shared_bytes; 579 size_t private_bytes, shared_bytes;
560 if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes)) { 580 if (metrics->GetMemoryBytes(&private_bytes, &shared_bytes)) {
561 if (private_bytes > kMaxPrerenderPrivateMB * 1024 * 1024) 581 if (private_bytes > kMaxPrerenderPrivateMB * 1024 * 1024)
562 Destroy(FINAL_STATUS_MEMORY_LIMIT_EXCEEDED); 582 Destroy(FINAL_STATUS_MEMORY_LIMIT_EXCEEDED);
563 } 583 }
564 } 584 }
565 585
566 } // namespace prerender 586 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698