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

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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 const ViewHostMsg_FrameNavigate_Params& params) { 139 const ViewHostMsg_FrameNavigate_Params& params) {
140 // We only care when the outer frame changes. 140 // We only care when the outer frame changes.
141 if (!PageTransition::IsMainFrame(params.transition)) 141 if (!PageTransition::IsMainFrame(params.transition))
142 return; 142 return;
143 143
144 // Store the navigation params. 144 // Store the navigation params.
145 ViewHostMsg_FrameNavigate_Params* p = new ViewHostMsg_FrameNavigate_Params(); 145 ViewHostMsg_FrameNavigate_Params* p = new ViewHostMsg_FrameNavigate_Params();
146 *p = params; 146 *p = params;
147 navigate_params_.reset(p); 147 navigate_params_.reset(p);
148 148
149 if (!AddAliasURL(params.url)) {
150 Destroy(FINAL_STATUS_HTTPS);
151 return;
152 }
153
149 url_ = params.url; 154 url_ = params.url;
150
151 AddAliasURL(url_);
152 } 155 }
153 156
154 void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host, 157 void PrerenderContents::UpdateTitle(RenderViewHost* render_view_host,
155 int32 page_id, 158 int32 page_id,
156 const std::wstring& title) { 159 const std::wstring& title) {
157 if (title.empty()) { 160 if (title.empty()) {
158 return; 161 return;
159 } 162 }
160 163
161 title_ = WideToUTF16Hack(title); 164 title_ = WideToUTF16Hack(title);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFavIconURL, OnUpdateFavIconURL) 313 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateFavIconURL, OnUpdateFavIconURL)
311 IPC_MESSAGE_UNHANDLED(handled = false) 314 IPC_MESSAGE_UNHANDLED(handled = false)
312 IPC_END_MESSAGE_MAP_EX() 315 IPC_END_MESSAGE_MAP_EX()
313 316
314 return handled; 317 return handled;
315 } 318 }
316 319
317 void PrerenderContents::OnDidStartProvisionalLoadForFrame(int64 frame_id, 320 void PrerenderContents::OnDidStartProvisionalLoadForFrame(int64 frame_id,
318 bool is_main_frame, 321 bool is_main_frame,
319 const GURL& url) { 322 const GURL& url) {
320 if (is_main_frame) 323 if (is_main_frame) {
321 AddAliasURL(url); 324 if (!AddAliasURL(url)) {
325 Destroy(FINAL_STATUS_HTTPS);
326 return;
327 }
328 }
322 } 329 }
323 330
324 void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id, 331 void PrerenderContents::OnDidRedirectProvisionalLoad(int32 page_id,
325 const GURL& source_url, 332 const GURL& source_url,
326 const GURL& target_url) { 333 const GURL& target_url) {
327 AddAliasURL(target_url); 334 if (!AddAliasURL(target_url))
335 Destroy(FINAL_STATUS_HTTPS);
328 } 336 }
329 337
330 void PrerenderContents::OnUpdateFavIconURL(int32 page_id, 338 void PrerenderContents::OnUpdateFavIconURL(int32 page_id,
331 const GURL& icon_url) { 339 const GURL& icon_url) {
332 icon_url_ = icon_url; 340 icon_url_ = icon_url;
333 } 341 }
334 342
335 void PrerenderContents::AddAliasURL(const GURL& url) { 343 bool PrerenderContents::AddAliasURL(const GURL& url) {
344 if (!url.SchemeIs("http"))
345 return false;
336 alias_urls_.push_back(url); 346 alias_urls_.push_back(url);
347 return true;
337 } 348 }
338 349
339 bool PrerenderContents::MatchesURL(const GURL& url) const { 350 bool PrerenderContents::MatchesURL(const GURL& url) const {
340 return std::find(alias_urls_.begin(), alias_urls_.end(), url) 351 return std::find(alias_urls_.begin(), alias_urls_.end(), url)
341 != alias_urls_.end(); 352 != alias_urls_.end();
342 } 353 }
343 354
344 void PrerenderContents::DidStopLoading() { 355 void PrerenderContents::DidStopLoading() {
345 has_stopped_loading_ = true; 356 has_stopped_loading_ = true;
346 } 357 }
347 358
348 void PrerenderContents::Destroy(FinalStatus final_status) { 359 void PrerenderContents::Destroy(FinalStatus final_status) {
349 prerender_manager_->RemoveEntry(this); 360 prerender_manager_->RemoveEntry(this);
350 set_final_status(final_status); 361 set_final_status(final_status);
351 delete this; 362 delete this;
352 } 363 }
353 364
354 } // namespace prerender 365 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698