Home | History | Annotate | Download | only in chrome_frame
      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