Index: chrome/browser/net/resource_prefetch_predictor_observer.cc |
diff --git a/chrome/browser/net/resource_prefetch_predictor_observer.cc b/chrome/browser/net/resource_prefetch_predictor_observer.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d47c379bea6399bd8bdc693bf2736515c8be2dbf |
--- /dev/null |
+++ b/chrome/browser/net/resource_prefetch_predictor_observer.cc |
@@ -0,0 +1,84 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/net/resource_prefetch_predictor_observer.h" |
+ |
+#include "content/public/browser/browser_thread.h" |
+#include "net/url_request/url_request.h" |
+ |
+using content::BrowserThread; |
+using predictors::ResourcePrefetchPredictor; |
+ |
+namespace chrome_browser_net { |
+ |
+ResourcePrefetchPredictorObserver::ResourcePrefetchPredictorObserver( |
+ ResourcePrefetchPredictor* predictor) |
+ : predictor_(predictor->AsWeakPtr()) { |
+} |
+ |
+ResourcePrefetchPredictorObserver::~ResourcePrefetchPredictorObserver() { |
+} |
+ |
+void ResourcePrefetchPredictorObserver::OnRequestStarted( |
+ net::URLRequest* request, |
+ ResourceType::Type resource_type, |
+ int child_id, |
+ int route_id) { |
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ |
+ if (!ResourcePrefetchPredictor::ShouldRecordRequest(request, resource_type)) |
+ return; |
+ |
+ ResourcePrefetchPredictor::URLRequestSummary summary; |
dominich
2012/05/30 15:35:01
I think it's Chromium-style to create and initiali
Shishir
2012/05/30 18:07:15
Added a todo to NavigationId to use a constructor
|
+ summary.navigation_id_.render_process_id_ = child_id; |
+ summary.navigation_id_.render_view_id_ = route_id; |
+ summary.navigation_id_.main_frame_url_ = request->first_party_for_cookies(); |
+ summary.resource_url_ = request->original_url(); |
+ summary.resource_type_ = resource_type; |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&ResourcePrefetchPredictor::RecordURLRequest, |
+ predictor_, |
+ summary)); |
+} |
+ |
+void ResourcePrefetchPredictorObserver::OnRequestRedirected( |
+ net::URLRequest* request) { |
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ |
+ if (!ResourcePrefetchPredictor::ShouldRecordRedirect(request)) |
+ return; |
+ ResourcePrefetchPredictor::URLRequestSummary summary; |
dominich
2012/05/30 15:35:01
similar to the above - I prefer a constructor that
Shishir
2012/05/30 18:07:15
As Above.
|
+ if (!summary.InitFromURLRequest(request, true)) |
+ return; |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&ResourcePrefetchPredictor::RecordUrlRedirect, |
+ predictor_, |
+ summary)); |
+} |
+ |
+void ResourcePrefetchPredictorObserver::OnResponseStarted( |
+ net::URLRequest* request) { |
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ |
+ if (!ResourcePrefetchPredictor::ShouldRecordResponse(request)) |
+ return; |
+ ResourcePrefetchPredictor::URLRequestSummary summary; |
+ if (!summary.InitFromURLRequest(request, true)) |
+ return; |
+ |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, |
+ FROM_HERE, |
+ base::Bind(&ResourcePrefetchPredictor::RecordUrlResponse, |
+ predictor_, |
+ summary)); |
+} |
+ |
+} // namespace chrome_browser_net |