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

Unified Diff: chrome/browser/prerender/prerender_tracker.cc

Issue 7060012: PrerenderTracker Cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prerender/prerender_tracker.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_tracker.cc
===================================================================
--- chrome/browser/prerender/prerender_tracker.cc (revision 86287)
+++ chrome/browser/prerender/prerender_tracker.cc (working copy)
@@ -46,9 +46,9 @@
bool PrerenderTracker::TryUse(int child_id, int route_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- FinalStatus final_status = SetFinalStatus(child_id, route_id,
- FINAL_STATUS_USED);
- return final_status == FINAL_STATUS_USED;
+ FinalStatus actual_final_status;
+ SetFinalStatus(child_id, route_id, FINAL_STATUS_USED, &actual_final_status);
cbentzel 2011/05/23 17:02:23 Ah, I thought you could get away with just doing
mmenke 2011/05/23 17:31:46 Done. Inertia, basically. Unit tests quite delib
+ return actual_final_status == FINAL_STATUS_USED;
}
bool PrerenderTracker::TryCancel(
@@ -58,8 +58,10 @@
DCHECK_NE(FINAL_STATUS_USED, final_status);
DCHECK(final_status >= 0 && final_status < FINAL_STATUS_MAX);
- final_status = SetFinalStatus(child_id, route_id, final_status);
- return final_status != FINAL_STATUS_USED && final_status != FINAL_STATUS_MAX;
+ FinalStatus actual_final_status;
+ SetFinalStatus(child_id, route_id, final_status, &actual_final_status);
+ return actual_final_status != FINAL_STATUS_USED &&
+ actual_final_status != FINAL_STATUS_MAX;
}
bool PrerenderTracker::TryCancelOnIOThread(
@@ -118,6 +120,12 @@
std::make_pair(child_route_id_pair, RenderViewInfo(prerender_manager)));
}
+PrerenderTracker::PrerenderTracker() {
+}
+
+PrerenderTracker::~PrerenderTracker() {
+}
+
void PrerenderTracker::OnPrerenderingFinished(int child_id, int route_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK_GE(child_id, 0);
@@ -134,16 +142,12 @@
DCHECK_EQ(1u, num_erased);
}
-PrerenderTracker::PrerenderTracker() {
-}
+bool PrerenderTracker::SetFinalStatus(int child_id, int route_id,
+ FinalStatus desired_final_status,
+ FinalStatus* actual_final_status) {
+ DCHECK(desired_final_status >= FINAL_STATUS_USED &&
+ desired_final_status < FINAL_STATUS_MAX);
-PrerenderTracker::~PrerenderTracker() {
-}
-
-FinalStatus PrerenderTracker::SetFinalStatus(int child_id, int route_id,
- FinalStatus final_status) {
- DCHECK(final_status >= FINAL_STATUS_USED && final_status < FINAL_STATUS_MAX);
-
ChildRouteIdPair child_route_id_pair(child_id, route_id);
base::AutoLock lock(final_status_map_lock_);
@@ -151,22 +155,28 @@
final_status_map_.find(child_route_id_pair);
if (final_status_it == final_status_map_.end()) {
// The RenderView has already been either used or destroyed.
- return FINAL_STATUS_MAX;
+ *actual_final_status = FINAL_STATUS_MAX;
+ return false;
}
if (final_status_it->second.final_status == FINAL_STATUS_MAX) {
- final_status_it->second.final_status = final_status;
- if (final_status != FINAL_STATUS_USED) {
+ final_status_it->second.final_status = desired_final_status;
+ if (desired_final_status != FINAL_STATUS_USED) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
NewRunnableFunction(&DestroyPreloadForRenderView,
final_status_it->second.prerender_manager,
child_id,
route_id,
- final_status));
+ desired_final_status));
}
+
+ *actual_final_status = desired_final_status;
+ return true;
}
- return final_status_it->second.final_status;
+
+ *actual_final_status = final_status_it->second.final_status;
+ return false;
}
void PrerenderTracker::AddPrerenderOnIOThread(
« no previous file with comments | « chrome/browser/prerender/prerender_tracker.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698