summaryrefslogtreecommitdiff
path: root/system_wrappers
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2014-05-16 13:12:08 +0100
committerTorne (Richard Coles) <torne@google.com>2014-05-16 13:12:08 +0100
commit4eff397521c1d60004c1862e807d8085c9620bf1 (patch)
tree5d1ad8e0ddb34e37e18e0fbdde057c2fe527f709 /system_wrappers
parentd658c1128db26424e73674abd5a5051cc8ef15ab (diff)
parentda7c539c377367da25fc913d4399c5f0f69764ad (diff)
downloadwebrtc-4eff397521c1d60004c1862e807d8085c9620bf1.tar.gz
Merge third_party/webrtc from https://chromium.googlesource.com/external/webrtc/trunk/webrtc.git at da7c539c377367da25fc913d4399c5f0f69764ad
This commit was generated by merge_from_chromium.py. Change-Id: Ieab52294a0a33f311c9f61dad4f7ab932a7280d5
Diffstat (limited to 'system_wrappers')
-rw-r--r--system_wrappers/interface/field_trial.h71
-rw-r--r--system_wrappers/source/field_trial_default.cc22
-rw-r--r--system_wrappers/source/system_wrappers.gyp13
3 files changed, 106 insertions, 0 deletions
diff --git a/system_wrappers/interface/field_trial.h b/system_wrappers/interface/field_trial.h
new file mode 100644
index 00000000..d38df26c
--- /dev/null
+++ b/system_wrappers/interface/field_trial.h
@@ -0,0 +1,71 @@
+//
+// Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
+//
+// Use of this source code is governed by a BSD-style license
+// that can be found in the LICENSE file in the root of the source
+// tree. An additional intellectual property rights grant can be found
+// in the file PATENTS. All contributing project authors may
+// be found in the AUTHORS file in the root of the source tree.
+//
+
+#ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_FIELD_TRIAL_H_
+#define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_FIELD_TRIAL_H_
+
+#include <string>
+
+#include "webrtc/common_types.h"
+
+// Field trials allow webrtc clients (such as Chrome) to turn on feature code
+// in binaries out in the field and gather information with that.
+//
+// WebRTC clients MUST provide an implementation of:
+//
+// std::string webrtc::field_trial::FindFullName(const std::string& trial).
+//
+// Or link with a default one provided in:
+//
+// system_wrappers/source/system_wrappers.gyp:field_trial_default
+//
+//
+// They are designed to wire up directly to chrome field trials and to speed up
+// developers by reducing the need to wire APIs to control whether a feature is
+// on/off. E.g. to experiment with a new method that could lead to a different
+// trade-off between CPU/bandwidth:
+//
+// 1 - Develop the feature with default behaviour off:
+//
+// if (FieldTrial::FindFullName("WebRTCExperimenMethod2") == "Enabled")
+// method2();
+// else
+// method1();
+//
+// 2 - Once the changes are rolled to chrome, the new code path can be
+// controlled as normal chrome field trials.
+//
+// 3 - Evaluate the new feature and clean the code paths.
+//
+// Notes:
+// - NOT every feature is a candidate to be controlled by this mechanism as
+// it may require negotation between involved parties (e.g. SDP).
+//
+// TODO(andresp): since chrome --force-fieldtrials does not marks the trial
+// as active it does not gets propaged to renderer process. For now one
+// needs to push a config with start_active:true or run a local finch
+// server.
+//
+// TODO(andresp): support --force_fieldtirals from webrtc tests.
+// TODO(andresp): find out how to get bots to run tests with trials enabled.
+
+namespace webrtc {
+namespace field_trial {
+
+// Returns the group name chosen for the named trial, or the empty string
+// if the trial does not exists.
+//
+// Note: To keep things tidy append all the trial names with WebRTC.
+std::string FindFullName(const std::string& name);
+
+} // namespace field_trial
+} // namespace webrtc
+
+#endif // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_FIELD_TRIAL_H_
diff --git a/system_wrappers/source/field_trial_default.cc b/system_wrappers/source/field_trial_default.cc
new file mode 100644
index 00000000..892623ce
--- /dev/null
+++ b/system_wrappers/source/field_trial_default.cc
@@ -0,0 +1,22 @@
+// Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
+//
+// Use of this source code is governed by a BSD-style license
+// that can be found in the LICENSE file in the root of the source
+// tree. An additional intellectual property rights grant can be found
+// in the file PATENTS. All contributing project authors may
+// be found in the AUTHORS file in the root of the source tree.
+//
+
+#include "webrtc/system_wrappers/interface/field_trial.h"
+
+// Clients of webrtc that do not want to configure field trials can link with
+// this instead of providing their own implementation.
+namespace webrtc {
+namespace field_trial {
+
+std::string FindFullName(const std::string& name) {
+ return std::string();
+}
+
+} // namespace field_trial
+} // namespace webrtc
diff --git a/system_wrappers/source/system_wrappers.gyp b/system_wrappers/source/system_wrappers.gyp
index 36d4d9cd..66b34356 100644
--- a/system_wrappers/source/system_wrappers.gyp
+++ b/system_wrappers/source/system_wrappers.gyp
@@ -16,6 +16,9 @@
'spreadsortlib',
'../interface',
],
+ 'dependencies': [
+ '../../base/base.gyp:webrtc_base',
+ ],
'direct_dependent_settings': {
'include_dirs': [
'../interface',
@@ -35,6 +38,7 @@
'../interface/data_log_impl.h',
'../interface/event_tracer.h',
'../interface/event_wrapper.h',
+ '../interface/field_trial.h',
'../interface/file_wrapper.h',
'../interface/fix_interlocked_exchange_pointer_win.h',
'../interface/logcat_trace_context.h',
@@ -191,6 +195,15 @@
4267, # size_t to int truncation.
4334, # Ignore warning on shift operator promotion.
],
+ }, {
+ 'target_name': 'field_trial_default',
+ 'type': 'static_library',
+ 'sources': [
+ 'field_trial_default.cc',
+ ],
+ 'dependencies': [
+ 'system_wrappers',
+ ]
},
], # targets
'conditions': [