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

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

Issue 9473001: Extract minimal RenderViewHost interface for embedders, leaving (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to LKGR. Created 8 years, 9 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_manager.h" 5 #include "chrome/browser/prerender/prerender_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 return false; 378 return false;
379 } 379 }
380 380
381 // If the session storage namespaces don't match, cancel the prerender. 381 // If the session storage namespaces don't match, cancel the prerender.
382 RenderViewHost* old_render_view_host = web_contents->GetRenderViewHost(); 382 RenderViewHost* old_render_view_host = web_contents->GetRenderViewHost();
383 RenderViewHost* new_render_view_host = 383 RenderViewHost* new_render_view_host =
384 prerender_contents->prerender_contents()->web_contents()-> 384 prerender_contents->prerender_contents()->web_contents()->
385 GetRenderViewHost(); 385 GetRenderViewHost();
386 DCHECK(old_render_view_host); 386 DCHECK(old_render_view_host);
387 DCHECK(new_render_view_host); 387 DCHECK(new_render_view_host);
388 if (old_render_view_host->session_storage_namespace() != 388 if (old_render_view_host->GetSessionStorageNamespace() !=
389 new_render_view_host->session_storage_namespace()) { 389 new_render_view_host->GetSessionStorageNamespace()) {
390 DestroyAndMarkMatchCompleteAsUsed( 390 DestroyAndMarkMatchCompleteAsUsed(
391 prerender_contents.release(), 391 prerender_contents.release(),
392 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH); 392 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH);
393 return false; 393 return false;
394 } 394 }
395 395
396 // If we don't want to use prerenders at all, we are done. 396 // If we don't want to use prerenders at all, we are done.
397 // For bookkeeping purposes, we need to mark this TabContents to 397 // For bookkeeping purposes, we need to mark this TabContents to
398 // reflect that it would have been prerendered. 398 // reflect that it would have been prerendered.
399 if (GetMode() == PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP) { 399 if (GetMode() == PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP) {
(...skipping 16 matching lines...) Expand all
416 histograms_->RecordTimeUntilUsed(GetCurrentTimeTicks() - 416 histograms_->RecordTimeUntilUsed(GetCurrentTimeTicks() -
417 prerender_contents->load_start_time(), 417 prerender_contents->load_start_time(),
418 GetMaxAge()); 418 GetMaxAge());
419 } 419 }
420 420
421 histograms_->RecordPerSessionCount(++prerenders_per_session_count_); 421 histograms_->RecordPerSessionCount(++prerenders_per_session_count_);
422 histograms_->RecordUsedPrerender(prerender_contents->origin()); 422 histograms_->RecordUsedPrerender(prerender_contents->origin());
423 prerender_contents->set_final_status(FINAL_STATUS_USED); 423 prerender_contents->set_final_status(FINAL_STATUS_USED);
424 424
425 new_render_view_host->Send( 425 new_render_view_host->Send(
426 new ChromeViewMsg_SetIsPrerendering(new_render_view_host->routing_id(), 426 new ChromeViewMsg_SetIsPrerendering(new_render_view_host->GetRoutingID(),
427 false)); 427 false));
428 428
429 TabContentsWrapper* new_tab_contents = 429 TabContentsWrapper* new_tab_contents =
430 prerender_contents->ReleasePrerenderContents(); 430 prerender_contents->ReleasePrerenderContents();
431 TabContentsWrapper* old_tab_contents = 431 TabContentsWrapper* old_tab_contents =
432 TabContentsWrapper::GetCurrentWrapperForContents(web_contents); 432 TabContentsWrapper::GetCurrentWrapperForContents(web_contents);
433 DCHECK(new_tab_contents); 433 DCHECK(new_tab_contents);
434 DCHECK(old_tab_contents); 434 DCHECK(old_tab_contents);
435 435
436 MarkWebContentsAsPrerendered(new_tab_contents->web_contents()); 436 MarkWebContentsAsPrerendered(new_tab_contents->web_contents());
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 return false; 862 return false;
863 } 863 }
864 864
865 RenderViewHost* source_render_view_host = NULL; 865 RenderViewHost* source_render_view_host = NULL;
866 if (child_route_id_pair.first != -1) { 866 if (child_route_id_pair.first != -1) {
867 source_render_view_host = 867 source_render_view_host =
868 RenderViewHost::FromID(child_route_id_pair.first, 868 RenderViewHost::FromID(child_route_id_pair.first,
869 child_route_id_pair.second); 869 child_route_id_pair.second);
870 // Don't prerender page if parent RenderViewHost no longer exists, or it has 870 // Don't prerender page if parent RenderViewHost no longer exists, or it has
871 // no view. The latter should only happen when the RenderView has closed. 871 // no view. The latter should only happen when the RenderView has closed.
872 if (!source_render_view_host || !source_render_view_host->view()) { 872 if (!source_render_view_host || !source_render_view_host->GetView()) {
873 RecordFinalStatus(origin, experiment, 873 RecordFinalStatus(origin, experiment,
874 FINAL_STATUS_SOURCE_RENDER_VIEW_CLOSED); 874 FINAL_STATUS_SOURCE_RENDER_VIEW_CLOSED);
875 return false; 875 return false;
876 } 876 }
877 } 877 }
878 878
879 if (!session_storage_namespace && source_render_view_host) { 879 if (!session_storage_namespace && source_render_view_host) {
880 session_storage_namespace = 880 session_storage_namespace =
881 source_render_view_host->session_storage_namespace(); 881 source_render_view_host->GetSessionStorageNamespace();
882 } 882 }
883 883
884 PrerenderContents* prerender_contents = CreatePrerenderContents( 884 PrerenderContents* prerender_contents = CreatePrerenderContents(
885 url, referrer, origin, experiment); 885 url, referrer, origin, experiment);
886 if (!prerender_contents || !prerender_contents->Init()) 886 if (!prerender_contents || !prerender_contents->Init())
887 return false; 887 return false;
888 888
889 histograms_->RecordPrerenderStarted(origin); 889 histograms_->RecordPrerenderStarted(origin);
890 890
891 // TODO(cbentzel): Move invalid checks here instead of PrerenderContents? 891 // TODO(cbentzel): Move invalid checks here instead of PrerenderContents?
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 if (!render_process_host || !render_process_host->GetBrowserContext()) 1200 if (!render_process_host || !render_process_host->GetBrowserContext())
1201 return NULL; 1201 return NULL;
1202 Profile* profile = Profile::FromBrowserContext( 1202 Profile* profile = Profile::FromBrowserContext(
1203 render_process_host->GetBrowserContext()); 1203 render_process_host->GetBrowserContext());
1204 if (!profile) 1204 if (!profile)
1205 return NULL; 1205 return NULL;
1206 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile); 1206 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile);
1207 } 1207 }
1208 1208
1209 } // namespace prerender 1209 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_contents.cc ('k') | chrome/browser/printing/background_printing_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698