1 // Copyright (c) 2012 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_frame/registry_list_preferences_holder.h" 6 7 #include "base/strings/string_util.h" 8 #include "base/win/registry.h" 9 10 RegistryListPreferencesHolder::RegistryListPreferencesHolder() : valid_(false) { 11 } 12 13 void RegistryListPreferencesHolder::Init(HKEY hive, 14 const wchar_t* registry_path, 15 const wchar_t* list_name) { 16 string16 list_path(registry_path); 17 list_path += L"\\"; 18 list_path += list_name; 19 base::win::RegistryValueIterator string_list(hive, list_path.c_str()); 20 for (; string_list.Valid(); ++string_list) 21 values_.push_back(string_list.Name()); 22 23 valid_ = true; 24 } 25 26 bool RegistryListPreferencesHolder::ListMatches(const string16& string) const { 27 DCHECK(Valid()); 28 std::vector<string16>::const_iterator iter(values_.begin()); 29 for (; iter != values_.end(); ++iter) { 30 if (MatchPattern(string, *iter)) 31 return true; 32 } 33 34 return false; 35 } 36 37 void RegistryListPreferencesHolder::AddStringForTesting( 38 const string16& string) { 39 values_.push_back(string); 40 } 41 42 void RegistryListPreferencesHolder::ResetForTesting() { 43 values_.clear(); 44 valid_ = false; 45 } 46