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

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

Issue 10386223: Renaming poorly named classes and adding missing unit tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Undo rename of Dispatcher Created 8 years, 7 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 <utility> 8 #include <utility>
9 9
10 #include "base/process_util.h" 10 #include "base/process_util.h"
11 #include "base/utf_string_conversions.h" 11 #include "base/utf_string_conversions.h"
12 #include "chrome/browser/history/history_tab_helper.h" 12 #include "chrome/browser/history/history_tab_helper.h"
13 #include "chrome/browser/history/history_types.h" 13 #include "chrome/browser/history/history_types.h"
14 #include "chrome/browser/prerender/prerender_final_status.h" 14 #include "chrome/browser/prerender/prerender_final_status.h"
15 #include "chrome/browser/prerender/prerender_manager.h" 15 #include "chrome/browser/prerender/prerender_manager.h"
16 #include "chrome/browser/prerender/prerender_render_view_host_observer.h" 16 #include "chrome/browser/prerender/prerender_render_view_host_observer.h"
17 #include "chrome/browser/prerender/prerender_tracker.h" 17 #include "chrome/browser/prerender/prerender_render_view_tracker.h"
18 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
19 #include "chrome/browser/ui/browser.h" 19 #include "chrome/browser/ui/browser.h"
20 #include "chrome/browser/ui/browser_finder.h" 20 #include "chrome/browser/ui/browser_finder.h"
21 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 21 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
22 #include "chrome/common/chrome_notification_types.h" 22 #include "chrome/common/chrome_notification_types.h"
23 #include "chrome/common/icon_messages.h" 23 #include "chrome/common/icon_messages.h"
24 #include "chrome/common/prerender_messages.h" 24 #include "chrome/common/prerender_messages.h"
25 #include "chrome/common/url_constants.h" 25 #include "chrome/common/url_constants.h"
26 #include "content/public/browser/resource_request_details.h" 26 #include "content/public/browser/resource_request_details.h"
27 #include "content/public/browser/browser_child_process_host.h" 27 #include "content/public/browser/browser_child_process_host.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 else 81 else
82 message = new PrerenderMsg_RemovePrerenderURL(url); 82 message = new PrerenderMsg_RemovePrerenderURL(url);
83 render_process_host->Send(message); 83 render_process_host->Send(message);
84 } 84 }
85 85
86 } // namespace 86 } // namespace
87 87
88 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory { 88 class PrerenderContentsFactoryImpl : public PrerenderContents::Factory {
89 public: 89 public:
90 virtual PrerenderContents* CreatePrerenderContents( 90 virtual PrerenderContents* CreatePrerenderContents(
91 PrerenderManager* prerender_manager, PrerenderTracker* prerender_tracker, 91 PrerenderManager* prerender_manager,
92 PrerenderRenderViewTracker* prerender_render_view_tracker,
92 Profile* profile, const GURL& url, const content::Referrer& referrer, 93 Profile* profile, const GURL& url, const content::Referrer& referrer,
93 Origin origin, uint8 experiment_id) OVERRIDE { 94 Origin origin, uint8 experiment_id) OVERRIDE {
94 return new PrerenderContents(prerender_manager, prerender_tracker, profile, 95 return new PrerenderContents(prerender_manager,
96 prerender_render_view_tracker, profile,
95 url, referrer, origin, experiment_id); 97 url, referrer, origin, experiment_id);
96 } 98 }
97 }; 99 };
98 100
99 struct PrerenderContents::PendingPrerenderInfo { 101 struct PrerenderContents::PendingPrerenderInfo {
100 PendingPrerenderInfo(const GURL& url, 102 PendingPrerenderInfo(const GURL& url,
101 const content::Referrer& referrer, 103 const content::Referrer& referrer,
102 const gfx::Size& size); 104 const gfx::Size& size);
103 const GURL url; 105 const GURL url;
104 const content::Referrer referrer; 106 const content::Referrer referrer;
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 for (PendingPrerenderList::iterator it = pending_prerender_list.begin(); 231 for (PendingPrerenderList::iterator it = pending_prerender_list.begin();
230 it != pending_prerender_list.end(); 232 it != pending_prerender_list.end();
231 ++it) { 233 ++it) {
232 prerender_manager_->AddPrerenderFromLinkRelPrerender( 234 prerender_manager_->AddPrerenderFromLinkRelPrerender(
233 child_id_, route_id_, it->url, it->referrer, it->size); 235 child_id_, route_id_, it->url, it->referrer, it->size);
234 } 236 }
235 } 237 }
236 238
237 PrerenderContents::PrerenderContents( 239 PrerenderContents::PrerenderContents(
238 PrerenderManager* prerender_manager, 240 PrerenderManager* prerender_manager,
239 PrerenderTracker* prerender_tracker, 241 PrerenderRenderViewTracker* prerender_render_view_tracker,
240 Profile* profile, 242 Profile* profile,
241 const GURL& url, 243 const GURL& url,
242 const content::Referrer& referrer, 244 const content::Referrer& referrer,
243 Origin origin, 245 Origin origin,
244 uint8 experiment_id) 246 uint8 experiment_id)
245 : prerendering_has_started_(false), 247 : prerendering_has_started_(false),
246 prerender_manager_(prerender_manager), 248 prerender_manager_(prerender_manager),
247 prerender_tracker_(prerender_tracker), 249 prerender_render_view_tracker_(prerender_render_view_tracker),
248 prerender_url_(url), 250 prerender_url_(url),
249 referrer_(referrer), 251 referrer_(referrer),
250 profile_(profile), 252 profile_(profile),
251 page_id_(0), 253 page_id_(0),
252 has_stopped_loading_(false), 254 has_stopped_loading_(false),
253 has_finished_loading_(false), 255 has_finished_loading_(false),
254 final_status_(FINAL_STATUS_MAX), 256 final_status_(FINAL_STATUS_MAX),
255 match_complete_status_(MATCH_COMPLETE_DEFAULT), 257 match_complete_status_(MATCH_COMPLETE_DEFAULT),
256 prerendering_has_been_cancelled_(false), 258 prerendering_has_been_cancelled_(false),
257 child_id_(-1), 259 child_id_(-1),
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 render_view_host_observer_.reset( 327 render_view_host_observer_.reset(
326 new PrerenderRenderViewHostObserver(this, GetRenderViewHostMutable())); 328 new PrerenderRenderViewHostObserver(this, GetRenderViewHostMutable()));
327 329
328 child_id_ = GetRenderViewHost()->GetProcess()->GetID(); 330 child_id_ = GetRenderViewHost()->GetProcess()->GetID();
329 route_id_ = GetRenderViewHost()->GetRoutingID(); 331 route_id_ = GetRenderViewHost()->GetRoutingID();
330 332
331 // Register this with the ResourceDispatcherHost as a prerender 333 // Register this with the ResourceDispatcherHost as a prerender
332 // RenderViewHost. This must be done before the Navigate message to catch all 334 // RenderViewHost. This must be done before the Navigate message to catch all
333 // resource requests, but as it is on the same thread as the Navigate message 335 // resource requests, but as it is on the same thread as the Navigate message
334 // (IO) there is no race condition. 336 // (IO) there is no race condition.
335 prerender_tracker_->OnPrerenderingStarted( 337 prerender_render_view_tracker_->OnPrerenderingStarted(
336 child_id_, 338 child_id_,
337 route_id_, 339 route_id_,
338 prerender_manager_); 340 prerender_manager_);
339 341
340 // Close ourselves when the application is shutting down. 342 // Close ourselves when the application is shutting down.
341 notification_registrar_.Add(this, content::NOTIFICATION_APP_TERMINATING, 343 notification_registrar_.Add(this, content::NOTIFICATION_APP_TERMINATING,
342 content::NotificationService::AllSources()); 344 content::NotificationService::AllSources());
343 345
344 // Register for our parent profile to shutdown, so we can shut ourselves down 346 // Register for our parent profile to shutdown, so we can shut ourselves down
345 // as well (should only be called for OTR profiles, as we should receive 347 // as well (should only be called for OTR profiles, as we should receive
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 final_status_ == FINAL_STATUS_USED); 398 final_status_ == FINAL_STATUS_USED);
397 DCHECK(origin_ != ORIGIN_MAX); 399 DCHECK(origin_ != ORIGIN_MAX);
398 400
399 prerender_manager_->RecordFinalStatusWithMatchCompleteStatus( 401 prerender_manager_->RecordFinalStatusWithMatchCompleteStatus(
400 origin_, 402 origin_,
401 experiment_id_, 403 experiment_id_,
402 match_complete_status_, 404 match_complete_status_,
403 final_status_); 405 final_status_);
404 406
405 if (child_id_ != -1 && route_id_ != -1) { 407 if (child_id_ != -1 && route_id_ != -1) {
406 prerender_tracker_->OnPrerenderingFinished(child_id_, route_id_); 408 prerender_render_view_tracker_->OnPrerenderingFinished(child_id_,
409 route_id_);
407 for (std::vector<GURL>::const_iterator it = alias_urls_.begin(); 410 for (std::vector<GURL>::const_iterator it = alias_urls_.begin();
408 it != alias_urls_.end(); 411 it != alias_urls_.end();
409 ++it) { 412 ++it) {
410 InformRenderProcessAboutPrerender(*it, false, creator_child_id_); 413 InformRenderProcessAboutPrerender(*it, false, creator_child_id_);
411 } 414 }
412 } 415 }
413 416
414 // If we still have a WebContents, clean up anything we need to and then 417 // If we still have a WebContents, clean up anything we need to and then
415 // destroy it. 418 // destroy it.
416 if (prerender_contents_.get()) 419 if (prerender_contents_.get())
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 // page, so cancel this prerender. 601 // page, so cancel this prerender.
599 Destroy(FINAL_STATUS_JAVASCRIPT_ALERT); 602 Destroy(FINAL_STATUS_JAVASCRIPT_ALERT);
600 return true; 603 return true;
601 } 604 }
602 605
603 void PrerenderContents::Destroy(FinalStatus final_status) { 606 void PrerenderContents::Destroy(FinalStatus final_status) {
604 if (prerendering_has_been_cancelled_) 607 if (prerendering_has_been_cancelled_)
605 return; 608 return;
606 609
607 if (child_id_ != -1 && route_id_ != -1) { 610 if (child_id_ != -1 && route_id_ != -1) {
608 // Cancel the prerender in the PrerenderTracker. This is needed 611 // Cancel the prerender in the PrerenderRenderViewTracker. This is needed
609 // because destroy may be called directly from the UI thread without calling 612 // because destroy may be called directly from the UI thread without calling
610 // TryCancel(). This is difficult to completely avoid, since prerendering 613 // TryCancel(). This is difficult to completely avoid, since prerendering
611 // can be cancelled before a RenderView is created. 614 // can be cancelled before a RenderView is created.
612 bool is_cancelled = prerender_tracker_->TryCancel( 615 bool is_cancelled = prerender_render_view_tracker_->TryCancel(
613 child_id_, route_id_, final_status); 616 child_id_, route_id_, final_status);
614 CHECK(is_cancelled); 617 CHECK(is_cancelled);
615 618
616 // A different final status may have been set already from another thread. 619 // A different final status may have been set already from another thread.
617 // If so, use it instead. 620 // If so, use it instead.
618 if (!prerender_tracker_->GetFinalStatus(child_id_, route_id_, 621 if (!prerender_render_view_tracker_->GetFinalStatus(child_id_, route_id_,
619 &final_status)) { 622 &final_status)) {
620 NOTREACHED(); 623 NOTREACHED();
621 } 624 }
622 } 625 }
623 set_final_status(final_status); 626 set_final_status(final_status);
624 627
625 prerendering_has_been_cancelled_ = true; 628 prerendering_has_been_cancelled_ = true;
626 // This has to be done after setting the final status, as it adds the 629 // This has to be done after setting the final status, as it adds the
627 // prerender to the history. 630 // prerender to the history.
628 prerender_manager_->MoveEntryToPendingDelete(this, final_status); 631 prerender_manager_->MoveEntryToPendingDelete(this, final_status);
629 632
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 bool PrerenderContents::IsCrossSiteNavigationPending() const { 711 bool PrerenderContents::IsCrossSiteNavigationPending() const {
709 if (!prerender_contents_.get() || !prerender_contents_->web_contents()) 712 if (!prerender_contents_.get() || !prerender_contents_->web_contents())
710 return false; 713 return false;
711 const WebContents* web_contents = prerender_contents_->web_contents(); 714 const WebContents* web_contents = prerender_contents_->web_contents();
712 return (web_contents->GetSiteInstance() != 715 return (web_contents->GetSiteInstance() !=
713 web_contents->GetPendingSiteInstance()); 716 web_contents->GetPendingSiteInstance());
714 } 717 }
715 718
716 719
717 } // namespace prerender 720 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.h ('k') | chrome/browser/prerender/prerender_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698