blob: b24c03c6f76cf85979fb89867df7e4e0b49e97fe [file] [log] [blame]
droger09a79c42015-10-27 12:02:321// Copyright 2015 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/version_ui/version_handler_helper.h"
6
dcheng51ace48a2015-12-26 22:45:177#include <utility>
droger09a79c42015-10-27 12:02:328#include <vector>
9
10#include "base/metrics/field_trial.h"
11#include "base/strings/string_util.h"
12#include "base/values.h"
13#include "components/variations/active_field_trials.h"
14
15namespace version_ui {
16
dcheng3f767dc32016-04-25 22:54:2217std::unique_ptr<base::Value> GetVariationsList() {
droger09a79c42015-10-27 12:02:3218 std::vector<std::string> variations;
19#if !defined(NDEBUG)
20 base::FieldTrial::ActiveGroups active_groups;
21 base::FieldTrialList::GetActiveFieldTrialGroups(&active_groups);
22
23 const unsigned char kNonBreakingHyphenUTF8[] = {0xE2, 0x80, 0x91, '\0'};
24 const std::string kNonBreakingHyphenUTF8String(
25 reinterpret_cast<const char*>(kNonBreakingHyphenUTF8));
26 for (const auto& group : active_groups) {
27 std::string line = group.trial_name + ":" + group.group_name;
28 base::ReplaceChars(line, "-", kNonBreakingHyphenUTF8String, &line);
29 variations.push_back(line);
30 }
31#else
32 // In release mode, display the hashes only.
33 variations::GetFieldTrialActiveGroupIdsAsStrings(&variations);
34#endif
35
dcheng3f767dc32016-04-25 22:54:2236 std::unique_ptr<base::ListValue> variations_list(new base::ListValue);
droger09a79c42015-10-27 12:02:3237 for (std::vector<std::string>::const_iterator it = variations.begin();
38 it != variations.end(); ++it) {
dcheng58241a812016-06-03 18:18:4239 variations_list->AppendString(*it);
droger09a79c42015-10-27 12:02:3240 }
41
dcheng51ace48a2015-12-26 22:45:1742 return std::move(variations_list);
droger09a79c42015-10-27 12:02:3243}
44
45} // namespace version_ui