- add sources.
[platform/framework/web/crosswalk.git] / src / chrome_frame / registry_list_preferences_holder.h
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_