diff options
author | Torne (Richard Coles) <torne@google.com> | 2014-05-16 13:12:08 +0100 |
---|---|---|
committer | Torne (Richard Coles) <torne@google.com> | 2014-05-16 13:12:08 +0100 |
commit | 4eff397521c1d60004c1862e807d8085c9620bf1 (patch) | |
tree | 5d1ad8e0ddb34e37e18e0fbdde057c2fe527f709 /system_wrappers | |
parent | d658c1128db26424e73674abd5a5051cc8ef15ab (diff) | |
parent | da7c539c377367da25fc913d4399c5f0f69764ad (diff) | |
download | webrtc-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.h | 71 | ||||
-rw-r--r-- | system_wrappers/source/field_trial_default.cc | 22 | ||||
-rw-r--r-- | system_wrappers/source/system_wrappers.gyp | 13 |
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': [ |