Index: chrome/browser/predictors/resource_prefetch_predictor.cc |
diff --git a/chrome/browser/predictors/resource_prefetch_predictor.cc b/chrome/browser/predictors/resource_prefetch_predictor.cc |
index 5f247e0151d04ad6f3cc1ed8c07f0dfe897ad7d6..9720e15b8156ef52f55c39e1899cfaa2fb630b6d 100644 |
--- a/chrome/browser/predictors/resource_prefetch_predictor.cc |
+++ b/chrome/browser/predictors/resource_prefetch_predictor.cc |
@@ -88,7 +88,8 @@ ResourcePrefetchPredictor::URLRequestSummary::URLRequestSummary( |
resource_url(other.resource_url), |
resource_type(other.resource_type), |
mime_type(other.mime_type), |
- was_cached(other.was_cached) { |
+ was_cached(other.was_cached), |
+ redirect_url(other.redirect_url) { |
} |
ResourcePrefetchPredictor::URLRequestSummary::~URLRequestSummary() { |
@@ -353,7 +354,18 @@ void ResourcePrefetchPredictor::OnMainFrameRedirect( |
const URLRequestSummary& response) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ // Remove the older navigation. |
inflight_navigations_.erase(response.navigation_id); |
+ |
+ // We do not see another navigation start for a redirect, so record the |
+ // redirect url as a new navigation. |
+ if (!response.redirect_url.is_valid()) |
dominich
2012/07/31 19:49:36
This should probably be is_empty(), and you probab
Shishir
2012/07/31 19:59:44
Done.
|
+ return; |
+ |
+ NavigationID navigation_id(response.navigation_id); |
+ navigation_id.main_frame_url = response.redirect_url; |
+ inflight_navigations_.insert(std::make_pair( |
+ navigation_id, std::vector<URLRequestSummary>())); |
} |
void ResourcePrefetchPredictor::OnSubresourceResponse( |