Add runtime enabled features API to webrtc.

API is not used anywhere for now. When depending projects implement it
or build with default implementation, it will be used.

Bug: webrtc:8287
Change-Id: I9e2aa922c2bb2b543793cd0561d797b02288ea6c
Reviewed-on: https://webrtc-review.googlesource.com/39042
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21611}
This commit is contained in:
Ilya Nikolaevskiy
2018-01-15 10:16:54 +01:00
committed by Commit Bot
parent ce5c19add1
commit 8cf45e99c5
4 changed files with 86 additions and 0 deletions

View File

@ -52,6 +52,7 @@ rtc_static_library("system_wrappers") {
":cpu_features_api", ":cpu_features_api",
":field_trial_api", ":field_trial_api",
":metrics_api", ":metrics_api",
":runtime_enabled_features_api",
"..:webrtc_common", "..:webrtc_common",
"../:typedefs", "../:typedefs",
"../api:optional", "../api:optional",
@ -127,6 +128,12 @@ rtc_source_set("field_trial_api") {
] ]
} }
rtc_source_set("runtime_enabled_features_api") {
sources = [
"include/runtime_enabled_features.h",
]
}
rtc_source_set("metrics_api") { rtc_source_set("metrics_api") {
visibility = [ "*" ] visibility = [ "*" ]
sources = [ sources = [
@ -150,6 +157,16 @@ rtc_source_set("field_trial_default") {
] ]
} }
rtc_source_set("runtime_enabled_features_default") {
sources = [
"source/runtime_enabled_features_default.cc",
]
deps = [
":runtime_enabled_features_api",
"../rtc_base:rtc_base_approved",
]
}
rtc_source_set("metrics_default") { rtc_source_set("metrics_default") {
visibility = [ "*" ] visibility = [ "*" ]
sources = [ sources = [
@ -166,6 +183,7 @@ group("system_wrappers_default") {
deps = [ deps = [
":field_trial_default", ":field_trial_default",
":metrics_default", ":metrics_default",
":runtime_enabled_features_default",
":system_wrappers", ":system_wrappers",
] ]
} }

View File

@ -69,6 +69,12 @@ inline bool IsEnabled(const char* name) {
return FindFullName(name).find("Enabled") == 0; return FindFullName(name).find("Enabled") == 0;
} }
// Convenience method, returns true iff FindFullName(name) return a string that
// starts with "Disabled".
inline bool IsDisabled(const char* name) {
return FindFullName(name).find("Disabled") == 0;
}
} // namespace field_trial } // namespace field_trial
} // namespace webrtc } // namespace webrtc

View File

@ -0,0 +1,31 @@
/*
* Copyright (c) 2018 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 SYSTEM_WRAPPERS_INCLUDE_RUNTIME_ENABLED_FEATURES_H_
#define SYSTEM_WRAPPERS_INCLUDE_RUNTIME_ENABLED_FEATURES_H_
#include <string>
// These functions for querying enabled runtime features must be implemented
// by all webrtc clients (such as Chrome).
// Default implementation is provided in:
//
// system_wrappers/system_wrappers:runtime_enabled_features_default
// TODO(ilnik): Find a more flexible way to use Chrome features.
// This interface requires manual translation from feature name to
// Chrome feature class in third_party/webrtc_overrides.
namespace webrtc {
namespace runtime_enabled_features {
bool IsFeatureEnabled(std::string feature_name);
} // namespace runtime_enabled_features
} // namespace webrtc
#endif // SYSTEM_WRAPPERS_INCLUDE_RUNTIME_ENABLED_FEATURES_H_

View File

@ -0,0 +1,31 @@
/*
* Copyright (c) 2018 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 "system_wrappers/include/runtime_enabled_features.h"
#include "rtc_base/flags.h"
namespace flags {
DEFINE_bool(enable_dual_stream_mode,
false,
"Enables dual video stream mode.");
}
namespace webrtc {
namespace runtime_enabled_features {
bool IsFeatureEnabled(std::string feature_name) {
if (feature_name == "WebRtcDualStreamMode")
return flags::FLAG_enable_dual_stream_mode;
return false;
}
} // namespace runtime_enabled_features
} // namespace webrtc