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

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

Issue 6523062: Cancel prerender if any of the visited URLs are https. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 10 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 "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/background_contents_service.h" 8 #include "chrome/browser/background_contents_service.h"
9 #include "chrome/browser/browsing_instance.h" 9 #include "chrome/browser/browsing_instance.h"
10 #include "chrome/browser/prerender/prerender_final_status.h" 10 #include "chrome/browser/prerender/prerender_final_status.h"
(...skipping 30 matching lines...) Expand all
41 const GURL& referrer) 41 const GURL& referrer)
42 : prerender_manager_(prerender_manager), 42 : prerender_manager_(prerender_manager),
43 render_view_host_(NULL), 43 render_view_host_(NULL),
44 prerender_url_(url), 44 prerender_url_(url),
45 referrer_(referrer), 45 referrer_(referrer),
46 profile_(profile), 46 profile_(profile),
47 page_id_(0), 47 page_id_(0),
48 has_stopped_loading_(false), 48 has_stopped_loading_(false),
49 final_status_(FINAL_STATUS_MAX) { 49 final_status_(FINAL_STATUS_MAX) {
50 DCHECK(prerender_manager != NULL); 50 DCHECK(prerender_manager != NULL);
51 AddAliasURL(prerender_url_); 51 DCHECK(AddAliasURL(prerender_url_));
52 for (std::vector<GURL>::const_iterator it = alias_urls.begin(); 52 for (std::vector<GURL>::const_iterator it = alias_urls.begin();
53 it != alias_urls.end(); 53 it != alias_urls.end();
54 ++it) { 54 ++it) {
55 AddAliasURL(*it); 55 DCHECK(AddAliasURL(*it));
56 } 56 }
57 } 57 }
58 58
59 // static 59 // static
60 PrerenderContents::Factory* PrerenderContents::CreateFactory() { 60 PrerenderContents::Factory* PrerenderContents::CreateFactory() {
61 return new PrerenderContentsFactoryImpl(); 61 return new PrerenderContentsFactoryImpl();
62 } 62 }
63 63
64 void PrerenderContents::StartPrerendering() { 64 void PrerenderContents::StartPrerendering() {
65 DCHECK(profile_ != NULL); 65 DCHECK(profile_ != NULL);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 const ViewHostMsg_FrameNavigate_Params& params) { 144 const ViewHostMsg_FrameNavigate_Params& params) {
145 // We only care when the outer frame changes. 145 // We only care when the outer frame changes.
146 if (!PageTransition::IsMainFrame(params.transition)) 146 if (!PageTransition::IsMainFrame(params.transition))
147 return; 147 return;
148 148
149 // Store the navigation params. 149 // Store the navigation params.
150 ViewHostMsg_FrameNavigate_Params* p = new ViewHostMsg_FrameNavigate_Params(); 150 ViewHostMsg_FrameNavigate_Params* p = new ViewHostMsg_FrameNavigate_Params();
151 *p = params; 151 *p = params;
152 navigate_params_.reset(p); 152 navigate_params_.reset(p);
153 153
154 if (!AddAliasURL(params.url)) {
155 Destroy(FINAL_STATUS_HTTPS);
156 return;
157 }
158
154 url_ = params.url; 159 url_ = params.url;
155
156 AddAliasURL(url_);
157 } 160 }
158 161
159 void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host, 162 void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host,
160 int32 page_id, 163 int32 page_id,
161 const std::wstring& title) { 164 const std::wstring& title) {
162 if (title.empty()) { 165 if (title.empty()) {
163 return; 166 return;
164 } 167 }
165 168
166 title_ = WideToUTF16Hack(title); 169 title_ = WideToUTF16Hack(title);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFavIconURL, OnUpdateFavIconURL) 336 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFavIconURL, OnUpdateFavIconURL)
334 IPC_MESSAGE_UNHANDLED(handled = false) 337 IPC_MESSAGE_UNHANDLED(handled = false)
335 IPC_END_MESSAGE_MAP_EX() 338 IPC_END_MESSAGE_MAP_EX()
336 339
337 return handled; 340 return handled;
338 } 341 }
339 342
340 void PrerenderContents::OnDidStartProvisionalLoadForFrame(int64 frame_id, 343 void PrerenderContents::OnDidStartProvisionalLoadForFrame(int64 frame_id,
341 bool is_main_frame, 344 bool is_main_frame,
342 const GURL& url) { 345 const GURL& url) {
343 if (is_main_frame) 346 if (is_main_frame) {
344 AddAliasURL(url); 347 if (!AddAliasURL(url)) {
348 Destroy(FINAL_STATUS_HTTPS);
349 return;
350 }
351 }
345 } 352 }
346 353
347 void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id, 354 void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id,
348 const GURL& source_url, 355 const GURL& source_url,
349 const GURL& target_url) { 356 const GURL& target_url) {
350 AddAliasURL(target_url); 357 if (!AddAliasURL(target_url))
358 Destroy(FINAL_STATUS_HTTPS);
351 } 359 }
352 360
353 void PrerenderContents::OnUpdateFavIconURL(int32 page_id, 361 void PrerenderContents::OnUpdateFavIconURL(int32 page_id,
354 const GURL& icon_url) { 362 const GURL& icon_url) {
355 icon_url_ = icon_url; 363 icon_url_ = icon_url;
356 } 364 }
357 365
358 void PrerenderContents::AddAliasURL(const GURL& url) { 366 bool PrerenderContents::AddAliasURL(const GURL& url) {
367 if (!url.SchemeIs("http"))
368 return false;
359 alias_urls_.push_back(url); 369 alias_urls_.push_back(url);
370 return true;
360 } 371 }
361 372
362 bool PrerenderContents::MatchesURL(const GURL& url) const { 373 bool PrerenderContents::MatchesURL(const GURL& url) const {
363 return std::find(alias_urls_.begin(), alias_urls_.end(), url) 374 return std::find(alias_urls_.begin(), alias_urls_.end(), url)
364 != alias_urls_.end(); 375 != alias_urls_.end();
365 } 376 }
366 377
367 void PrerenderContents::DidStopLoading() { 378 void PrerenderContents::DidStopLoading() {
368 has_stopped_loading_ = true; 379 has_stopped_loading_ = true;
369 } 380 }
370 381
371 void PrerenderContents::Destroy(FinalStatus final_status) { 382 void PrerenderContents::Destroy(FinalStatus final_status) {
372 prerender_manager_->RemoveEntry(this); 383 prerender_manager_->RemoveEntry(this);
373 set_final_status(final_status); 384 set_final_status(final_status);
374 delete this; 385 delete this;
375 } 386 }
376 387
377 } // namespace prerender 388 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/browser/prerender/prerender_resource_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698