[email protected] | e6d1c4f | 2013-06-12 17:37:40 | [diff] [blame] | 1 | // Copyright 2013 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 "chrome/browser/pref_service_flags_storage.h" | ||||
6 | |||||
7 | #include "base/prefs/pref_service.h" | ||||
[email protected] | 9eec53fe | 2013-10-30 20:21:17 | [diff] [blame] | 8 | #include "base/prefs/scoped_user_pref_update.h" |
[email protected] | e6d1c4f | 2013-06-12 17:37:40 | [diff] [blame] | 9 | #include "base/values.h" |
[email protected] | e6d1c4f | 2013-06-12 17:37:40 | [diff] [blame] | 10 | #include "chrome/common/pref_names.h" |
11 | |||||
12 | namespace about_flags { | ||||
13 | |||||
14 | PrefServiceFlagsStorage::PrefServiceFlagsStorage( | ||||
15 | PrefService *prefs) : prefs_(prefs) {} | ||||
16 | |||||
17 | PrefServiceFlagsStorage::~PrefServiceFlagsStorage() {} | ||||
18 | |||||
19 | std::set<std::string> PrefServiceFlagsStorage::GetFlags() { | ||||
[email protected] | cb1078de | 2013-12-23 20:04:22 | [diff] [blame] | 20 | const base::ListValue* enabled_experiments = prefs_->GetList( |
[email protected] | e6d1c4f | 2013-06-12 17:37:40 | [diff] [blame] | 21 | prefs::kEnabledLabsExperiments); |
22 | std::set<std::string> flags; | ||||
[email protected] | cb1078de | 2013-12-23 20:04:22 | [diff] [blame] | 23 | for (base::ListValue::const_iterator it = enabled_experiments->begin(); |
[email protected] | e6d1c4f | 2013-06-12 17:37:40 | [diff] [blame] | 24 | it != enabled_experiments->end(); |
25 | ++it) { | ||||
26 | std::string experiment_name; | ||||
27 | if (!(*it)->GetAsString(&experiment_name)) { | ||||
28 | LOG(WARNING) << "Invalid entry in " << prefs::kEnabledLabsExperiments; | ||||
29 | continue; | ||||
30 | } | ||||
31 | flags.insert(experiment_name); | ||||
32 | } | ||||
33 | return flags; | ||||
34 | } | ||||
35 | |||||
[email protected] | 89f19af0 | 2013-09-19 05:22:35 | [diff] [blame] | 36 | bool PrefServiceFlagsStorage::SetFlags(const std::set<std::string>& flags) { |
[email protected] | e6d1c4f | 2013-06-12 17:37:40 | [diff] [blame] | 37 | ListPrefUpdate update(prefs_, prefs::kEnabledLabsExperiments); |
[email protected] | cb1078de | 2013-12-23 20:04:22 | [diff] [blame] | 38 | base::ListValue* experiments_list = update.Get(); |
[email protected] | e6d1c4f | 2013-06-12 17:37:40 | [diff] [blame] | 39 | |
40 | experiments_list->Clear(); | ||||
41 | for (std::set<std::string>::const_iterator it = flags.begin(); | ||||
42 | it != flags.end(); ++it) { | ||||
[email protected] | cb1078de | 2013-12-23 20:04:22 | [diff] [blame] | 43 | experiments_list->Append(new base::StringValue(*it)); |
[email protected] | e6d1c4f | 2013-06-12 17:37:40 | [diff] [blame] | 44 | } |
45 | |||||
46 | return true; | ||||
47 | } | ||||
48 | |||||
49 | } // namespace about_flags |