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

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

Issue 2287993003: [NoStatePrefetch] Add UMA histogram to count prefetch requests (Closed)
Patch Set: Rebase Created 4 years, 3 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_resource_throttle.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_resource_throttle.cc
diff --git a/chrome/browser/prerender/prerender_resource_throttle.cc b/chrome/browser/prerender/prerender_resource_throttle.cc
index a23b5a9336e5327187b117b1c04e2ecb1fab6804..a8b9796acdbb0e0f567d3e3cde37cd0acccf8309 100644
--- a/chrome/browser/prerender/prerender_resource_throttle.cc
+++ b/chrome/browser/prerender/prerender_resource_throttle.cc
@@ -13,6 +13,7 @@
#include "content/public/browser/resource_controller.h"
#include "content/public/browser/resource_request_info.h"
#include "content/public/browser/web_contents.h"
+#include "net/http/http_response_headers.h"
#include "net/url_request/redirect_info.h"
#include "net/url_request/url_request.h"
@@ -25,7 +26,7 @@ static const char kFollowOnlyWhenPrerenderShown[] =
"follow-only-when-prerender-shown";
PrerenderContents* g_prerender_contents_for_testing;
-}
+} // namespace
void PrerenderResourceThrottle::OverridePrerenderContentsForTesting(
PrerenderContents* contents) {
@@ -67,6 +68,26 @@ void PrerenderResourceThrottle::WillRedirectRequest(
redirect_info.new_url));
}
+void PrerenderResourceThrottle::WillProcessResponse(bool* defer) {
+ const content::ResourceRequestInfo* info =
+ content::ResourceRequestInfo::ForRequest(request_);
+ if (!info)
+ return;
+
+ bool is_no_store = false;
+ const net::HttpResponseInfo& response_info = request_->response_info();
+ if (response_info.headers.get()) {
+ is_no_store =
+ response_info.headers->HasHeaderValue("cache-control", "no-store");
+ }
+
+ content::BrowserThread::PostTask(
+ content::BrowserThread::UI, FROM_HERE,
+ base::Bind(&PrerenderResourceThrottle::WillProcessResponseOnUI,
+ content::IsResourceTypeFrame(info->GetResourceType()),
+ is_no_store, info->GetChildID(), info->GetRenderFrameID()));
+}
+
const char* PrerenderResourceThrottle::GetNameForLogging() const {
return "PrerenderResourceThrottle";
}
@@ -79,6 +100,7 @@ void PrerenderResourceThrottle::Cancel() {
controller()->Cancel();
}
+// static
void PrerenderResourceThrottle::WillStartRequestOnUI(
const base::WeakPtr<PrerenderResourceThrottle>& throttle,
const std::string& method,
@@ -116,6 +138,7 @@ void PrerenderResourceThrottle::WillStartRequestOnUI(
&PrerenderResourceThrottle::Resume, throttle));
}
+// static
void PrerenderResourceThrottle::WillRedirectRequestOnUI(
const base::WeakPtr<PrerenderResourceThrottle>& throttle,
const std::string& follow_only_when_prerender_shown_header,
@@ -157,6 +180,24 @@ void PrerenderResourceThrottle::WillRedirectRequestOnUI(
&PrerenderResourceThrottle::Resume, throttle));
}
+// static
+void PrerenderResourceThrottle::WillProcessResponseOnUI(bool is_main_resource,
+ bool is_no_store,
+ int render_process_id,
+ int render_frame_id) {
+ PrerenderContents* prerender_contents =
+ PrerenderContentsFromRenderFrame(render_process_id, render_frame_id);
+ if (!prerender_contents)
+ return;
+
+ if (prerender_contents->prerender_mode() != PREFETCH_ONLY)
+ return;
+
+ prerender_contents->prerender_manager()->RecordResourcePrefetch(
+ prerender_contents->origin(), is_main_resource, is_no_store);
+}
+
+// static
PrerenderContents* PrerenderResourceThrottle::PrerenderContentsFromRenderFrame(
int render_process_id, int render_frame_id) {
if (g_prerender_contents_for_testing)
« no previous file with comments | « chrome/browser/prerender/prerender_resource_throttle.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698