| // Copyright 2016 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "components/ntp_snippets/pref_util.h" | 
 |  | 
 | #include <memory> | 
 |  | 
 | #include "base/values.h" | 
 | #include "components/prefs/pref_service.h" | 
 |  | 
 | namespace ntp_snippets { | 
 | namespace prefs { | 
 |  | 
 | std::set<std::string> ReadDismissedIDsFromPrefs(const PrefService& pref_service, | 
 |                                                 const std::string& pref_name) { | 
 |   std::set<std::string> dismissed_ids; | 
 |   const base::ListValue* list = pref_service.GetList(pref_name); | 
 |   for (const base::Value& value : *list) { | 
 |     std::string dismissed_id; | 
 |     bool success = value.GetAsString(&dismissed_id); | 
 |     DCHECK(success) << "Failed to parse dismissed id from prefs param " | 
 |                     << pref_name << " into string."; | 
 |     dismissed_ids.insert(dismissed_id); | 
 |   } | 
 |   return dismissed_ids; | 
 | } | 
 |  | 
 | void StoreDismissedIDsToPrefs(PrefService* pref_service, | 
 |                               const std::string& pref_name, | 
 |                               const std::set<std::string>& dismissed_ids) { | 
 |   base::ListValue list; | 
 |   for (const std::string& dismissed_id : dismissed_ids) { | 
 |     list.AppendString(dismissed_id); | 
 |   } | 
 |   pref_service->Set(pref_name, list); | 
 | } | 
 |  | 
 | }  // namespace prefs | 
 | }  // namespace ntp_snippets |