OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/renderer/net/prescient_networking_dispatcher.h" | 5 #include "chrome/renderer/net/prescient_networking_dispatcher.h" |
6 | 6 |
| 7 #include "base/metrics/field_trial.h" |
7 #include "chrome/common/render_messages.h" | 8 #include "chrome/common/render_messages.h" |
8 #include "content/public/renderer/render_thread.h" | 9 #include "content/public/renderer/render_thread.h" |
9 | 10 |
10 using WebKit::WebPrescientNetworking; | 11 using WebKit::WebPrescientNetworking; |
11 | 12 |
| 13 const char kMouseEventPreconnectFieldTrialName[] = "MouseEventPreconnect"; |
| 14 const char kMouseEventPreconnectFieldTrialMouseDownGroup[] = "MouseDown"; |
| 15 const char kMouseEventPreconnectFieldTrialMouseOverGroup[] = "MouseOver"; |
| 16 const char kMouseEventPreconnectFieldTrialTapUnconfirmedGroup[] = |
| 17 "TapUnconfirmed"; |
| 18 const char kMouseEventPreconnectFieldTrialTapDownGroup[] = "TapDown"; |
| 19 |
| 20 namespace { |
| 21 |
| 22 // Returns true if preconnect is enabled for given motivation. |
| 23 // The preconnect via {mouse,gesture} event is enabled for limited userbase |
| 24 // for Finch field trial. |
| 25 bool isPreconnectEnabledForMotivation( |
| 26 WebKit::WebPreconnectMotivation motivation) { |
| 27 std::string group = |
| 28 base::FieldTrialList::FindFullName(kMouseEventPreconnectFieldTrialName); |
| 29 |
| 30 switch (motivation) { |
| 31 case WebKit::WebPreconnectMotivationLinkMouseDown: |
| 32 return group == kMouseEventPreconnectFieldTrialMouseDownGroup; |
| 33 case WebKit::WebPreconnectMotivationLinkMouseOver: |
| 34 return group == kMouseEventPreconnectFieldTrialMouseOverGroup; |
| 35 case WebKit::WebPreconnectMotivationLinkTapUnconfirmed: |
| 36 return group == kMouseEventPreconnectFieldTrialTapUnconfirmedGroup; |
| 37 case WebKit::WebPreconnectMotivationLinkTapDown: |
| 38 return group == kMouseEventPreconnectFieldTrialTapDownGroup; |
| 39 default: |
| 40 return false; |
| 41 } |
| 42 } |
| 43 |
| 44 } // namespace |
| 45 |
12 PrescientNetworkingDispatcher::~PrescientNetworkingDispatcher() { | 46 PrescientNetworkingDispatcher::~PrescientNetworkingDispatcher() { |
13 } | 47 } |
14 | 48 |
15 void PrescientNetworkingDispatcher::preconnect( | 49 void PrescientNetworkingDispatcher::preconnect( |
16 const WebKit::WebURL& url, | 50 const WebKit::WebURL& url, |
17 WebKit::WebPreconnectMotivation motivation) { | 51 WebKit::WebPreconnectMotivation motivation) { |
18 // FIXME(kouhei) actual pre-connecting is currently disabled. | 52 if (isPreconnectEnabledForMotivation(motivation)) |
19 // This should shortly be enabled via Finch field trials in upcoming patch. | 53 content::RenderThread::Get()->Send(new ChromeViewHostMsg_Preconnect(url)); |
20 // content::RenderThread::Get()->Send(new ChromeViewHostMsg_Preconnect(url)); | |
21 } | 54 } |
22 | 55 |
OLD | NEW |