Index: chrome/browser/renderer_host/chrome_render_message_filter.cc |
diff --git a/chrome/browser/renderer_host/chrome_render_message_filter.cc b/chrome/browser/renderer_host/chrome_render_message_filter.cc |
index 2d25be6e00e746f60bbd4ae4d9eff5650004fd2e..ba19d67844746e6c5e76a9f5e4833e180c24a965 100644 |
--- a/chrome/browser/renderer_host/chrome_render_message_filter.cc |
+++ b/chrome/browser/renderer_host/chrome_render_message_filter.cc |
@@ -52,6 +52,7 @@ |
using content::BrowserThread; |
using extensions::APIPermission; |
using WebKit::WebCache; |
+using chrome_browser_net::UrlInfo; |
namespace { |
@@ -121,6 +122,23 @@ void AddDOMActionToExtensionActivityLog( |
} |
} |
+UrlInfo::ResolutionMotivation convertWebToUrlInfoMotivation( |
+ WebKit::WebPreconnectMotivation webMotivation) { |
+ switch(webMotivation) { |
+ case WebKit::WebPreconnectMotivationLinkMouseOver: |
+ return UrlInfo::MOUSE_OVER_MOTIVATED; |
+ case WebKit::WebPreconnectMotivationLinkMouseDown: |
+ return UrlInfo::MOUSE_DOWN_MOTIVATED; |
+ case WebKit::WebPreconnectMotivationLinkTapUnconfirmed: |
+ return UrlInfo::TAP_UNCONFIRMED_MOTIVATED; |
+ case WebKit::WebPreconnectMotivationLinkTapDown: |
+ return UrlInfo::TAP_DOWN_MOTIVATED; |
+ default: |
+ NOTREACHED(); |
+ return UrlInfo::MOUSE_OVER_MOTIVATED; |
+ } |
+} |
+ |
} // namespace |
ChromeRenderMessageFilter::ChromeRenderMessageFilter( |
@@ -155,6 +173,7 @@ bool ChromeRenderMessageFilter::OnMessageReceived(const IPC::Message& message, |
OnOpenNaClExecutable) |
#endif |
IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DnsPrefetch, OnDnsPrefetch) |
+ IPC_MESSAGE_HANDLER(ChromeViewHostMsg_Preconnect, OnPreconnect) |
IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ResourceTypeStats, |
OnResourceTypeStats) |
IPC_MESSAGE_HANDLER(ChromeViewHostMsg_UpdatedCacheStats, |
@@ -298,6 +317,17 @@ void ChromeRenderMessageFilter::OnDnsPrefetch( |
profile_->GetNetworkPredictor()->DnsPrefetchList(hostnames); |
} |
+void ChromeRenderMessageFilter::OnPreconnect( |
+ const GURL& url, |
+ WebKit::WebPreconnectMotivation motivation, |
+ uint32_t motivationVariationId) { |
+ if (profile_->GetNetworkPredictor()) |
+ profile_->GetNetworkPredictor()->PreconnectUrlAndSubresources( |
+ url, |
+ convertWebToUrlInfoMotivation(motivation), |
+ motivationVariationId); |
+} |
+ |
void ChromeRenderMessageFilter::OnResourceTypeStats( |
const WebCache::ResourceTypeStats& stats) { |
HISTOGRAM_COUNTS("WebCoreCache.ImagesSizeKB", |