summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-10 23:00:35 +0000
committermattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-10 23:00:35 +0000
commit781ffd638fa641c8fbd6d6d049ce9d88e9b201fc (patch)
tree2c66b9f50a2b7043df18b970d1bc06186406167a
parent7d3d2ed0aa4396620c38aee1aafd2e56f6133b5e (diff)
downloadchromium_src-781ffd638fa641c8fbd6d6d049ce9d88e9b201fc.zip
chromium_src-781ffd638fa641c8fbd6d6d049ce9d88e9b201fc.tar.gz
chromium_src-781ffd638fa641c8fbd6d6d049ce9d88e9b201fc.tar.bz2
TLS channel id field trial.
BUG=136462 Review URL: https://chromiumcodereview.appspot.com/10753022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145978 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chrome_browser_main.cc21
-rw-r--r--chrome/browser/chrome_browser_main.h3
-rw-r--r--net/base/ssl_config_service.cc8
-rw-r--r--net/base/ssl_config_service.h3
4 files changed, 35 insertions, 0 deletions
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
index b3f67d7..6f4e57c 100644
--- a/chrome/browser/chrome_browser_main.cc
+++ b/chrome/browser/chrome_browser_main.cc
@@ -115,6 +115,7 @@
#include "grit/platform_locale_settings.h"
#include "net/base/net_module.h"
#include "net/base/sdch_manager.h"
+#include "net/base/ssl_config_service.h"
#include "net/cookies/cookie_monster.h"
#include "net/http/http_basic_stream.h"
#include "net/http/http_network_layer.h"
@@ -1099,6 +1100,25 @@ void ChromeBrowserMainParts::DisableNewTabFieldTrialIfNecesssary() {
}
}
+void ChromeBrowserMainParts::ChannelIDFieldTrial() {
+ chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
+ if (channel == chrome::VersionInfo::CHANNEL_CANARY) {
+ net::SSLConfigService::EnableChannelIDTrial();
+ } else if (channel == chrome::VersionInfo::CHANNEL_DEV &&
+ base::FieldTrialList::IsOneTimeRandomizationEnabled()) {
+ const base::FieldTrial::Probability kDivisor = 100;
+ // 10% probability of being in the enabled group.
+ const base::FieldTrial::Probability kEnableProbability = 10;
+ scoped_refptr<base::FieldTrial> trial =
+ base::FieldTrialList::FactoryGetFieldTrial(
+ "ChannelID", kDivisor, "disable", 2012, 8, 23, NULL);
+ trial->UseOneTimeRandomization();
+ int enable_group = trial->AppendGroup("enable", kEnableProbability);
+ if (trial->group() == enable_group)
+ net::SSLConfigService::EnableChannelIDTrial();
+ }
+}
+
// ChromeBrowserMainParts: |SetupMetricsAndFieldTrials()| related --------------
void ChromeBrowserMainParts::SetupFieldTrials(bool proxy_policy_is_set) {
@@ -1121,6 +1141,7 @@ void ChromeBrowserMainParts::SetupFieldTrials(bool proxy_policy_is_set) {
SetupUniformityFieldTrials();
AutocompleteFieldTrial::Activate();
DisableNewTabFieldTrialIfNecesssary();
+ ChannelIDFieldTrial();
}
void ChromeBrowserMainParts::StartMetricsRecording() {
diff --git a/chrome/browser/chrome_browser_main.h b/chrome/browser/chrome_browser_main.h
index 347e7f86..e957a53 100644
--- a/chrome/browser/chrome_browser_main.h
+++ b/chrome/browser/chrome_browser_main.h
@@ -140,6 +140,9 @@ class ChromeBrowserMainParts : public content::BrowserMainParts {
// Disables the new tab field trial if not running in desktop mode.
void DisableNewTabFieldTrialIfNecesssary();
+ // Field trial for testing TLS channel id.
+ void ChannelIDFieldTrial();
+
// Methods for |SetupMetricsAndFieldTrials()| --------------------------------
// Constructs metrics service and does related initialization, including
diff --git a/net/base/ssl_config_service.cc b/net/base/ssl_config_service.cc
index ad2928e16..f9ee9ef 100644
--- a/net/base/ssl_config_service.cc
+++ b/net/base/ssl_config_service.cc
@@ -74,6 +74,7 @@ SSLConfigService::SSLConfigService()
}
static bool g_cached_info_enabled = false;
+static bool g_channel_id_trial = false;
// GlobalCRLSet holds a reference to the global CRLSet. It simply wraps a lock
// around a scoped_refptr so that getting a reference doesn't race with
@@ -132,6 +133,11 @@ uint16 SSLConfigService::default_version_max() {
return g_default_version_max;
}
+// static
+void SSLConfigService::EnableChannelIDTrial() {
+ g_channel_id_trial = true;
+}
+
void SSLConfigService::AddObserver(Observer* observer) {
observer_list_.AddObserver(observer);
}
@@ -146,6 +152,8 @@ SSLConfigService::~SSLConfigService() {
// static
void SSLConfigService::SetSSLConfigFlags(SSLConfig* ssl_config) {
ssl_config->cached_info_enabled = g_cached_info_enabled;
+ if (g_channel_id_trial)
+ ssl_config->channel_id_enabled = true;
}
void SSLConfigService::ProcessConfigUpdate(const SSLConfig& orig_config,
diff --git a/net/base/ssl_config_service.h b/net/base/ssl_config_service.h
index b4ba45a..94c5efc 100644
--- a/net/base/ssl_config_service.h
+++ b/net/base/ssl_config_service.h
@@ -181,6 +181,9 @@ class NET_EXPORT SSLConfigService
static void SetDefaultVersionMax(uint16 version_max);
static uint16 default_version_max();
+ // Force channel ID support to be enabled.
+ static void EnableChannelIDTrial();
+
// Is SNI available in this configuration?
static bool IsSNIAvailable(SSLConfigService* service);