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

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

Issue 9463026: Add field trial to extend prerender expiration to 5 minutes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit tests Created 8 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) 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 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 408
409 // Try to set the prerendered page as used, so any subsequent attempts to 409 // Try to set the prerendered page as used, so any subsequent attempts to
410 // cancel on other threads will fail. If this fails because the prerender 410 // cancel on other threads will fail. If this fails because the prerender
411 // was already cancelled, possibly on another thread, fail. 411 // was already cancelled, possibly on another thread, fail.
412 if (!prerender_tracker_->TryUse(child_id, route_id)) 412 if (!prerender_tracker_->TryUse(child_id, route_id))
413 return false; 413 return false;
414 414
415 if (!prerender_contents->load_start_time().is_null()) { 415 if (!prerender_contents->load_start_time().is_null()) {
416 histograms_->RecordTimeUntilUsed(GetCurrentTimeTicks() - 416 histograms_->RecordTimeUntilUsed(GetCurrentTimeTicks() -
417 prerender_contents->load_start_time(), 417 prerender_contents->load_start_time(),
418 config_.max_age); 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->routing_id(),
427 false)); 427 false));
428 428
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 DictionaryValue* dict_value = new DictionaryValue(); 721 DictionaryValue* dict_value = new DictionaryValue();
722 dict_value->Set("history", prerender_history_->GetEntriesAsValue()); 722 dict_value->Set("history", prerender_history_->GetEntriesAsValue());
723 dict_value->Set("active", GetActivePrerendersAsValue()); 723 dict_value->Set("active", GetActivePrerendersAsValue());
724 dict_value->SetBoolean("enabled", enabled_); 724 dict_value->SetBoolean("enabled", enabled_);
725 dict_value->SetBoolean("omnibox_enabled", IsOmniboxEnabled(profile_)); 725 dict_value->SetBoolean("omnibox_enabled", IsOmniboxEnabled(profile_));
726 // If prerender is disabled via a flag this method is not even called. 726 // If prerender is disabled via a flag this method is not even called.
727 if (IsControlGroup()) 727 if (IsControlGroup())
728 dict_value->SetString("disabled_reason", "(Disabled for testing)"); 728 dict_value->SetString("disabled_reason", "(Disabled for testing)");
729 if (IsNoUseGroup()) 729 if (IsNoUseGroup())
730 dict_value->SetString("disabled_reason", "(Not using prerendered pages)"); 730 dict_value->SetString("disabled_reason", "(Not using prerendered pages)");
731 if (GetMode() == PRERENDER_MODE_EXPERIMENT_LONG_TTL_GROUP)
732 dict_value->SetString("disabled_reason", "(Long TTL)");
731 return dict_value; 733 return dict_value;
732 } 734 }
733 735
734 void PrerenderManager::ClearData(int clear_flags) { 736 void PrerenderManager::ClearData(int clear_flags) {
735 DCHECK_GE(clear_flags, 0); 737 DCHECK_GE(clear_flags, 0);
736 DCHECK_LT(clear_flags, CLEAR_MAX); 738 DCHECK_LT(clear_flags, CLEAR_MAX);
737 if (clear_flags & CLEAR_PRERENDER_CONTENTS) 739 if (clear_flags & CLEAR_PRERENDER_CONTENTS)
738 DestroyAllContents(FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); 740 DestroyAllContents(FINAL_STATUS_CACHE_OR_HISTORY_CLEARED);
739 // This has to be second, since destroying prerenders can add to the history. 741 // This has to be second, since destroying prerenders can add to the history.
740 if (clear_flags & CLEAR_PRERENDER_HISTORY) 742 if (clear_flags & CLEAR_PRERENDER_HISTORY)
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 } 979 }
978 980
979 void PrerenderManager::PostCleanupTask() { 981 void PrerenderManager::PostCleanupTask() {
980 DCHECK(CalledOnValidThread()); 982 DCHECK(CalledOnValidThread());
981 MessageLoop::current()->PostTask( 983 MessageLoop::current()->PostTask(
982 FROM_HERE, 984 FROM_HERE,
983 base::Bind(&PrerenderManager::PeriodicCleanup, 985 base::Bind(&PrerenderManager::PeriodicCleanup,
984 weak_factory_.GetWeakPtr())); 986 weak_factory_.GetWeakPtr()));
985 } 987 }
986 988
989 base::TimeDelta PrerenderManager::GetMaxAge() const {
990 base::TimeDelta max_age = config_.max_age;
991 if (GetMode() == PRERENDER_MODE_EXPERIMENT_LONG_TTL_GROUP)
992 max_age *= 10;
993 return max_age;
994 }
995
987 bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const { 996 bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const {
988 DCHECK(CalledOnValidThread()); 997 DCHECK(CalledOnValidThread());
989 base::Time now = GetCurrentTime(); 998 base::Time now = GetCurrentTime();
990 return (now - start < config_.max_age); 999 return (now - start < GetMaxAge());
991 } 1000 }
992 1001
993 void PrerenderManager::DeleteOldEntries() { 1002 void PrerenderManager::DeleteOldEntries() {
994 DCHECK(CalledOnValidThread()); 1003 DCHECK(CalledOnValidThread());
995 while (!prerender_list_.empty()) { 1004 while (!prerender_list_.empty()) {
996 PrerenderContentsData data = prerender_list_.front(); 1005 PrerenderContentsData data = prerender_list_.front();
997 if (IsPrerenderElementFresh(data.start_time_)) 1006 if (IsPrerenderElementFresh(data.start_time_))
998 return; 1007 return;
999 data.contents_->Destroy(FINAL_STATUS_TIMED_OUT); 1008 data.contents_->Destroy(FINAL_STATUS_TIMED_OUT);
1000 } 1009 }
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 if (!render_process_host || !render_process_host->GetBrowserContext()) 1203 if (!render_process_host || !render_process_host->GetBrowserContext())
1195 return NULL; 1204 return NULL;
1196 Profile* profile = Profile::FromBrowserContext( 1205 Profile* profile = Profile::FromBrowserContext(
1197 render_process_host->GetBrowserContext()); 1206 render_process_host->GetBrowserContext());
1198 if (!profile) 1207 if (!profile)
1199 return NULL; 1208 return NULL;
1200 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile); 1209 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile);
1201 } 1210 }
1202 1211
1203 } // namespace prerender 1212 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698