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 // A utility class for accessing and caching registry preferences that take 6 // the form of lists of strings. 7 // TODO(robertshield): Use the RegistryWatcher stuff to keep this list up to 8 // date. 9 10 #ifndef CHROME_FRAME_REGISTRY_LIST_PREFERENCES_HOLDER_H_ 11 #define CHROME_FRAME_REGISTRY_LIST_PREFERENCES_HOLDER_H_ 12 13 #include <windows.h> 14 15 #include <vector> 16 17 #include "base/strings/string16.h" 18 19 class RegistryListPreferencesHolder { 20 public: 21 RegistryListPreferencesHolder(); 22 23 // Initializes the RegistryListPreferencesHolder using the values stored 24 // under the key |list_name| stored at |registry_path| under |hive|. 25 void Init(HKEY hive, 26 const wchar_t* registry_path, 27 const wchar_t* list_name); 28 29 bool Valid() const { return valid_; } 30 31 // Returns true iff |string| matches any of the strings in values_, using the 32 // matching logic in base's MatchPattern(). 33 bool ListMatches(const string16& string) const; 34 35 // Manually add a string to values_ for testing purposes. 36 void AddStringForTesting(const string16& string); 37 38 // Reset the holder causing it to be re-initialized, for testing purposes 39 // only. 40 // TODO(robertshield): Remove this once the RegistryWatcher stuff is wired up. 41 void ResetForTesting(); 42 43 private: 44 std::vector<string16> values_; 45 bool valid_; 46 47 DISALLOW_COPY_AND_ASSIGN(RegistryListPreferencesHolder); 48 }; 49 50 #endif // CHROME_FRAME_REGISTRY_LIST_PREFERENCES_HOLDER_H_ 51