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..6e01620c0d4ce2a052e9248522dffa2e90ea8255 100644 |
--- a/chrome/renderer/net/prescient_networking_dispatcher.cc |
+++ b/chrome/renderer/net/prescient_networking_dispatcher.cc |
@@ -4,19 +4,55 @@ |
#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)) { |
+ return; |
+ } |
+ |
+ content::RenderThread::Get()->Send(new ChromeViewHostMsg_Preconnect(url)); |
Nico
2013/05/30 00:26:23
If it fits in 80 cols, write
if (isPrec…)
R
kouhei (in TOK)
2013/05/30 00:30:36
Done.
|
} |