|  | // 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" | 
|  | #include "webrtc/system_wrappers/interface/field_trial_default.h" | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | // Simple field trial implementation, which allows client to | 
|  | // specify desired flags in InitFieldTrialsFromString. | 
|  | namespace webrtc { | 
|  | namespace field_trial { | 
|  |  | 
|  | static const char *trials_init_string = NULL; | 
|  |  | 
|  | std::string FindFullName(const std::string& name) { | 
|  | if (trials_init_string == NULL) | 
|  | return std::string(); | 
|  |  | 
|  | std::string trials_string(trials_init_string); | 
|  | if (trials_string.empty()) | 
|  | return std::string(); | 
|  |  | 
|  | static const char kPersistentStringSeparator = '/'; | 
|  | size_t next_item = 0; | 
|  | while (next_item < trials_string.length()) { | 
|  |  | 
|  | // Find next name/value pair in field trial configuration string. | 
|  | size_t field_name_end = trials_string.find( | 
|  | kPersistentStringSeparator, next_item); | 
|  | if (field_name_end == trials_string.npos || field_name_end == next_item) | 
|  | break; | 
|  | size_t field_value_end = trials_string.find( | 
|  | kPersistentStringSeparator, field_name_end + 1); | 
|  | if (field_value_end == trials_string.npos || | 
|  | field_value_end == field_name_end + 1) | 
|  | break; | 
|  | std::string field_name(trials_string, next_item, | 
|  | field_name_end - next_item); | 
|  | std::string field_value(trials_string, field_name_end + 1, | 
|  | field_value_end - field_name_end - 1); | 
|  | next_item = field_value_end + 1; | 
|  |  | 
|  | if (name == field_name) | 
|  | return field_value; | 
|  | } | 
|  | return std::string(); | 
|  | } | 
|  |  | 
|  | // Optionally initialize field trial from a string. | 
|  | void InitFieldTrialsFromString(const char* trials_string) { | 
|  | trials_init_string = trials_string; | 
|  | } | 
|  |  | 
|  | }  // namespace field_trial | 
|  | }  // namespace webrtc |