Index: chrome/renderer/net/prescient_networking_dispatcher.cc |
diff --git a/chrome/renderer/net/prescient_networking_dispatcher.cc b/chrome/renderer/net/prescient_networking_dispatcher.cc |
index e97c167e39d2301a6e52c016912eda82c3b9a9d2..4f9cabc9753bc4010f3a8f1221a77f3e8245b0d8 100644 |
--- a/chrome/renderer/net/prescient_networking_dispatcher.cc |
+++ b/chrome/renderer/net/prescient_networking_dispatcher.cc |
@@ -4,19 +4,52 @@ |
#include "chrome/renderer/net/prescient_networking_dispatcher.h" |
+#include "base/metrics/field_trial.h" |
#include "chrome/common/render_messages.h" |
#include "content/public/renderer/render_thread.h" |
using WebKit::WebPrescientNetworking; |
+const char kMouseEventPreconnectFieldTrialName[] = "MouseEventPreconnect"; |
+const char kMouseEventPreconnectFieldTrialMouseDownGroup[] = "MouseDown"; |
+const char kMouseEventPreconnectFieldTrialMouseOverGroup[] = "MouseOver"; |
+const char kMouseEventPreconnectFieldTrialTapUnconfirmedGroup[] = |
+ "TapUnconfirmed"; |
+const char kMouseEventPreconnectFieldTrialTapDownGroup[] = "TapDown"; |
+ |
+namespace { |
+ |
+// Returns true if preconnect is enabled for given motivation. |
+// The preconnect via {mouse,gesture} event is enabled for limited userbase |
+// for Finch field trial. |
+bool isPreconnectEnabledForMotivation( |
+ WebKit::WebPreconnectMotivation motivation) { |
+ std::string group = |
+ base::FieldTrialList::FindFullName(kMouseEventPreconnectFieldTrialName); |
+ |
+ switch (motivation) { |
+ case WebKit::WebPreconnectMotivationLinkMouseDown: |
+ return group == kMouseEventPreconnectFieldTrialMouseDownGroup; |
+ case WebKit::WebPreconnectMotivationLinkMouseOver: |
+ return group == kMouseEventPreconnectFieldTrialMouseOverGroup; |
+ case WebKit::WebPreconnectMotivationLinkTapUnconfirmed: |
+ return group == kMouseEventPreconnectFieldTrialTapUnconfirmedGroup; |
+ case WebKit::WebPreconnectMotivationLinkTapDown: |
+ return group == kMouseEventPreconnectFieldTrialTapDownGroup; |
+ default: |
+ return false; |
+ } |
+} |
+ |
+} // namespace |
+ |
PrescientNetworkingDispatcher::~PrescientNetworkingDispatcher() { |
} |
void PrescientNetworkingDispatcher::preconnect( |
const WebKit::WebURL& url, |
WebKit::WebPreconnectMotivation motivation) { |
- // FIXME(kouhei) actual pre-connecting is currently disabled. |
- // This should shortly be enabled via Finch field trials in upcoming patch. |
- // content::RenderThread::Get()->Send(new ChromeViewHostMsg_Preconnect(url)); |
+ if (isPreconnectEnabledForMotivation(motivation)) |
+ content::RenderThread::Get()->Send(new ChromeViewHostMsg_Preconnect(url)); |
} |