summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/win/registry.cc43
-rw-r--r--base/win/registry.h22
-rw-r--r--base/win/registry_unittest.cc18
-rw-r--r--chrome/browser/autofill/autofill_ie_toolbar_import_win.cc4
-rw-r--r--chrome/browser/background/background_mode_manager_win.cc4
-rw-r--r--chrome/installer/util/delete_reg_value_work_item_unittest.cc18
-rw-r--r--chrome/installer/util/google_update_settings.cc2
-rw-r--r--chrome/installer/util/install_util.cc2
-rw-r--r--chrome/installer/util/install_util_unittest.cc6
-rw-r--r--chrome/installer/util/set_reg_value_work_item_unittest.cc16
-rw-r--r--chrome_frame/chrome_tab.cc2
11 files changed, 72 insertions, 65 deletions
diff --git a/base/win/registry.cc b/base/win/registry.cc
index d105a4c..fa8f422 100644
--- a/base/win/registry.cc
+++ b/base/win/registry.cc
@@ -56,15 +56,6 @@ LONG RegKey::CreateWithDisposition(HKEY rootkey, const wchar_t* subkey,
return result;
}
-LONG RegKey::Open(HKEY rootkey, const wchar_t* subkey, REGSAM access) {
- base::ThreadRestrictions::AssertIOAllowed();
- DCHECK(rootkey && subkey && access);
- Close();
-
- LONG result = RegOpenKeyEx(rootkey, subkey, 0, access, &key_);
- return result;
-}
-
LONG RegKey::CreateKey(const wchar_t* name, REGSAM access) {
base::ThreadRestrictions::AssertIOAllowed();
DCHECK(name && access);
@@ -78,13 +69,24 @@ LONG RegKey::CreateKey(const wchar_t* name, REGSAM access) {
return result;
}
-LONG RegKey::OpenKey(const wchar_t* name, REGSAM access) {
+LONG RegKey::Open(HKEY rootkey, const wchar_t* subkey, REGSAM access) {
base::ThreadRestrictions::AssertIOAllowed();
- DCHECK(name && access);
+ DCHECK(rootkey && subkey && access);
+ Close();
+
+ LONG result = RegOpenKeyEx(rootkey, subkey, 0, access, &key_);
+ return result;
+}
+
+LONG RegKey::OpenKey(const wchar_t* relative_key_name, REGSAM access) {
+ base::ThreadRestrictions::AssertIOAllowed();
+ DCHECK(relative_key_name && access);
HKEY subkey = NULL;
- LONG result = RegOpenKeyEx(key_, name, 0, access, &subkey);
+ LONG result = RegOpenKeyEx(key_, relative_key_name, 0, access, &subkey);
+ // We have to close the current opened key before replacing it with the new
+ // one.
Close();
key_ = subkey;
@@ -100,15 +102,20 @@ void RegKey::Close() {
}
}
-DWORD RegKey::ValueCount() const {
+bool RegKey::HasValue(const wchar_t* name) const {
+ base::ThreadRestrictions::AssertIOAllowed();
+ return RegQueryValueEx(key_, name, 0, NULL, NULL, NULL) == ERROR_SUCCESS;
+}
+
+DWORD RegKey::GetValueCount() const {
base::ThreadRestrictions::AssertIOAllowed();
DWORD count = 0;
LONG result = RegQueryInfoKey(key_, NULL, 0, NULL, NULL, NULL, NULL, &count,
NULL, NULL, NULL, NULL);
- return (result != ERROR_SUCCESS) ? 0 : count;
+ return (result == ERROR_SUCCESS) ? count : 0;
}
-LONG RegKey::ReadName(int index, std::wstring* name) const {
+LONG RegKey::GetValueNameAt(int index, std::wstring* name) const {
base::ThreadRestrictions::AssertIOAllowed();
wchar_t buf[256];
DWORD bufsize = arraysize(buf);
@@ -135,12 +142,6 @@ LONG RegKey::DeleteValue(const wchar_t* value_name) {
return result;
}
-bool RegKey::ValueExists(const wchar_t* name) const {
- base::ThreadRestrictions::AssertIOAllowed();
- LONG result = RegQueryValueEx(key_, name, 0, NULL, NULL, NULL);
- return result == ERROR_SUCCESS;
-}
-
LONG RegKey::ReadValue(const wchar_t* name, void* data, DWORD* dsize,
DWORD* dtype) const {
base::ThreadRestrictions::AssertIOAllowed();
diff --git a/base/win/registry.h b/base/win/registry.h
index 078e6e0..33052ff 100644
--- a/base/win/registry.h
+++ b/base/win/registry.h
@@ -33,20 +33,28 @@ class BASE_EXPORT RegKey {
LONG CreateWithDisposition(HKEY rootkey, const wchar_t* subkey,
DWORD* disposition, REGSAM access);
- LONG Open(HKEY rootkey, const wchar_t* subkey, REGSAM access);
-
// Creates a subkey or open it if it already exists.
LONG CreateKey(const wchar_t* name, REGSAM access);
- // Opens a subkey
- LONG OpenKey(const wchar_t* name, REGSAM access);
+ // Opens an existing reg key.
+ LONG Open(HKEY rootkey, const wchar_t* subkey, REGSAM access);
+
+ // Opens an existing reg key, given the relative key name.
+ LONG OpenKey(const wchar_t* relative_key_name, REGSAM access);
+ // Closes this reg key.
void Close();
- DWORD ValueCount() const;
+ // Returns false if this key does not have the specified value, of if an error
+ // occurrs while attempting to access it.
+ bool HasValue(const wchar_t* value_name) const;
+
+ // Returns the number of values for this key, of 0 if the number cannot be
+ // determined.
+ DWORD GetValueCount() const;
// Determine the nth value's name.
- LONG ReadName(int index, std::wstring* name) const;
+ LONG GetValueNameAt(int index, std::wstring* name) const;
// True while the key is valid.
bool Valid() const { return key_ != NULL; }
@@ -58,8 +66,6 @@ class BASE_EXPORT RegKey {
// Deletes a single value within the key.
LONG DeleteValue(const wchar_t* name);
- bool ValueExists(const wchar_t* name) const;
-
LONG ReadValue(const wchar_t* name, void* data, DWORD* dsize,
DWORD* dtype) const;
LONG ReadValue(const wchar_t* name, std::wstring* value) const;
diff --git a/base/win/registry_unittest.cc b/base/win/registry_unittest.cc
index a7961e9..1737786 100644
--- a/base/win/registry_unittest.cc
+++ b/base/win/registry_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -60,10 +60,10 @@ TEST_F(RegistryTest, ValueTest) {
ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kDWORDValueName, kDWORDData));
ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kInt64ValueName, &kInt64Data,
sizeof(kInt64Data), REG_QWORD));
- EXPECT_EQ(3U, key.ValueCount());
- EXPECT_TRUE(key.ValueExists(kStringValueName));
- EXPECT_TRUE(key.ValueExists(kDWORDValueName));
- EXPECT_TRUE(key.ValueExists(kInt64ValueName));
+ EXPECT_EQ(3U, key.GetValueCount());
+ EXPECT_TRUE(key.HasValue(kStringValueName));
+ EXPECT_TRUE(key.HasValue(kDWORDValueName));
+ EXPECT_TRUE(key.HasValue(kInt64ValueName));
// Test Read
std::wstring string_value;
@@ -89,10 +89,10 @@ TEST_F(RegistryTest, ValueTest) {
ASSERT_EQ(ERROR_SUCCESS, key.DeleteValue(kStringValueName));
ASSERT_EQ(ERROR_SUCCESS, key.DeleteValue(kDWORDValueName));
ASSERT_EQ(ERROR_SUCCESS, key.DeleteValue(kInt64ValueName));
- EXPECT_EQ(0U, key.ValueCount());
- EXPECT_FALSE(key.ValueExists(kStringValueName));
- EXPECT_FALSE(key.ValueExists(kDWORDValueName));
- EXPECT_FALSE(key.ValueExists(kInt64ValueName));
+ EXPECT_EQ(0U, key.GetValueCount());
+ EXPECT_FALSE(key.HasValue(kStringValueName));
+ EXPECT_FALSE(key.HasValue(kDWORDValueName));
+ EXPECT_FALSE(key.HasValue(kInt64ValueName));
}
}
diff --git a/chrome/browser/autofill/autofill_ie_toolbar_import_win.cc b/chrome/browser/autofill/autofill_ie_toolbar_import_win.cc
index 6667003..562eb23 100644
--- a/chrome/browser/autofill/autofill_ie_toolbar_import_win.cc
+++ b/chrome/browser/autofill/autofill_ie_toolbar_import_win.cc
@@ -135,9 +135,9 @@ bool ImportSingleProfile(FormGroup* profile,
// Phones need to be rebuilt.
PhoneNumber::PhoneCombineHelper phone;
- for (uint32 value_index = 0; value_index < key->ValueCount(); ++value_index) {
+ for (uint32 i = 0; i < key->GetValueCount(); ++i) {
std::wstring value_name;
- if (key->ReadName(value_index, &value_name) != ERROR_SUCCESS)
+ if (key->GetValueNameAt(i, &value_name) != ERROR_SUCCESS)
continue;
RegToFieldMap::const_iterator it = reg_to_field.find(value_name);
if (it == reg_to_field.end())
diff --git a/chrome/browser/background/background_mode_manager_win.cc b/chrome/browser/background/background_mode_manager_win.cc
index 7d835a8..b1e7c9f 100644
--- a/chrome/browser/background/background_mode_manager_win.cc
+++ b/chrome/browser/background/background_mode_manager_win.cc
@@ -40,7 +40,7 @@ void DisableLaunchOnStartupTask::Run() {
kBackgroundModeRegistrySubkey, KEY_READ);
base::win::RegKey write_key(kBackgroundModeRegistryRootKey,
kBackgroundModeRegistrySubkey, KEY_WRITE);
- if (read_key.ValueExists(key_name)) {
+ if (read_key.HasValue(key_name)) {
LONG result = write_key.DeleteValue(key_name);
DCHECK_EQ(ERROR_SUCCESS, result) <<
"Failed to deregister launch on login. error: " << result;
@@ -60,7 +60,7 @@ void EnableLaunchOnStartupTask::Run() {
return;
std::wstring new_value = executable.value() +
L" --" + ASCIIToUTF16(switches::kNoStartupWindow);
- if (read_key.ValueExists(key_name)) {
+ if (read_key.HasValue(key_name)) {
std::wstring current_value;
if ((read_key.ReadValue(key_name, &current_value) == ERROR_SUCCESS) &&
(current_value == new_value)) {
diff --git a/chrome/installer/util/delete_reg_value_work_item_unittest.cc b/chrome/installer/util/delete_reg_value_work_item_unittest.cc
index 634ee42..f0fa53e 100644
--- a/chrome/installer/util/delete_reg_value_work_item_unittest.cc
+++ b/chrome/installer/util/delete_reg_value_work_item_unittest.cc
@@ -71,9 +71,9 @@ TEST_F(DeleteRegValueWorkItemTest, DeleteExistingValue) {
EXPECT_TRUE(work_item2->Do());
EXPECT_TRUE(work_item3->Do());
- EXPECT_FALSE(key.ValueExists(name_str.c_str()));
- EXPECT_FALSE(key.ValueExists(name_dword.c_str()));
- EXPECT_FALSE(key.ValueExists(name_empty.c_str()));
+ EXPECT_FALSE(key.HasValue(name_str.c_str()));
+ EXPECT_FALSE(key.HasValue(name_dword.c_str()));
+ EXPECT_FALSE(key.HasValue(name_empty.c_str()));
work_item1->Rollback();
work_item2->Rollback();
@@ -104,8 +104,8 @@ TEST_F(DeleteRegValueWorkItemTest, DeleteNonExistentValue) {
key.Create(HKEY_CURRENT_USER, parent_key.c_str(), KEY_READ | KEY_WRITE));
std::wstring name_str(L"name_str");
std::wstring name_dword(L"name_dword");
- EXPECT_FALSE(key.ValueExists(name_str.c_str()));
- EXPECT_FALSE(key.ValueExists(name_dword.c_str()));
+ EXPECT_FALSE(key.HasValue(name_str.c_str()));
+ EXPECT_FALSE(key.HasValue(name_dword.c_str()));
scoped_ptr<DeleteRegValueWorkItem> work_item1(
WorkItem::CreateDeleteRegValueWorkItem(HKEY_CURRENT_USER, parent_key,
@@ -117,12 +117,12 @@ TEST_F(DeleteRegValueWorkItemTest, DeleteNonExistentValue) {
EXPECT_TRUE(work_item1->Do());
EXPECT_TRUE(work_item2->Do());
- EXPECT_FALSE(key.ValueExists(name_str.c_str()));
- EXPECT_FALSE(key.ValueExists(name_dword.c_str()));
+ EXPECT_FALSE(key.HasValue(name_str.c_str()));
+ EXPECT_FALSE(key.HasValue(name_dword.c_str()));
work_item1->Rollback();
work_item2->Rollback();
- EXPECT_FALSE(key.ValueExists(name_str.c_str()));
- EXPECT_FALSE(key.ValueExists(name_dword.c_str()));
+ EXPECT_FALSE(key.HasValue(name_str.c_str()));
+ EXPECT_FALSE(key.HasValue(name_dword.c_str()));
}
diff --git a/chrome/installer/util/google_update_settings.cc b/chrome/installer/util/google_update_settings.cc
index b79e61a..babd396 100644
--- a/chrome/installer/util/google_update_settings.cc
+++ b/chrome/installer/util/google_update_settings.cc
@@ -102,7 +102,7 @@ bool RemoveGoogleUpdateStrKey(const wchar_t* const name) {
BrowserDistribution* dist = BrowserDistribution::GetDistribution();
std::wstring reg_path = dist->GetStateKey();
RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_READ | KEY_WRITE);
- if (!key.ValueExists(name))
+ if (!key.HasValue(name))
return true;
return (key.DeleteValue(name) == ERROR_SUCCESS);
}
diff --git a/chrome/installer/util/install_util.cc b/chrome/installer/util/install_util.cc
index 1582397..acd3863 100644
--- a/chrome/installer/util/install_util.cc
+++ b/chrome/installer/util/install_util.cc
@@ -375,7 +375,7 @@ bool InstallUtil::DeleteRegistryValue(HKEY reg_root,
const std::wstring& value_name) {
RegKey key(reg_root, key_path.c_str(), KEY_ALL_ACCESS);
VLOG(1) << "Deleting registry value " << value_name;
- if (key.ValueExists(value_name.c_str())) {
+ if (key.HasValue(value_name.c_str())) {
LONG result = key.DeleteValue(value_name.c_str());
if (result != ERROR_SUCCESS) {
LOG(ERROR) << "Failed to delete registry value: " << value_name
diff --git a/chrome/installer/util/install_util_unittest.cc b/chrome/installer/util/install_util_unittest.cc
index 57f61b6..9d5341d 100644
--- a/chrome/installer/util/install_util_unittest.cc
+++ b/chrome/installer/util/install_util_unittest.cc
@@ -293,7 +293,7 @@ TEST_F(InstallUtilTest, DeleteRegistryValueIf) {
root, key_path.c_str(), value_name, pred));
EXPECT_TRUE(RegKey(root, key_path.c_str(), KEY_QUERY_VALUE).Valid());
EXPECT_TRUE(RegKey(root, key_path.c_str(),
- KEY_QUERY_VALUE).ValueExists(value_name));
+ KEY_QUERY_VALUE).HasValue(value_name));
}
// Value exists, and matches: delete.
@@ -308,7 +308,7 @@ TEST_F(InstallUtilTest, DeleteRegistryValueIf) {
root, key_path.c_str(), value_name, pred));
EXPECT_TRUE(RegKey(root, key_path.c_str(), KEY_QUERY_VALUE).Valid());
EXPECT_FALSE(RegKey(root, key_path.c_str(),
- KEY_QUERY_VALUE).ValueExists(value_name));
+ KEY_QUERY_VALUE).HasValue(value_name));
}
}
@@ -327,7 +327,7 @@ TEST_F(InstallUtilTest, DeleteRegistryValueIf) {
root, key_path.c_str(), L"", pred));
EXPECT_TRUE(RegKey(root, key_path.c_str(), KEY_QUERY_VALUE).Valid());
EXPECT_FALSE(RegKey(root, key_path.c_str(),
- KEY_QUERY_VALUE).ValueExists(L""));
+ KEY_QUERY_VALUE).HasValue(L""));
}
}
}
diff --git a/chrome/installer/util/set_reg_value_work_item_unittest.cc b/chrome/installer/util/set_reg_value_work_item_unittest.cc
index ea5ac86..0f3ef97 100644
--- a/chrome/installer/util/set_reg_value_work_item_unittest.cc
+++ b/chrome/installer/util/set_reg_value_work_item_unittest.cc
@@ -75,8 +75,8 @@ TEST_F(SetRegValueWorkItemTest, WriteNewNonOverwrite) {
work_item2->Rollback();
// Rollback should delete the value.
- EXPECT_FALSE(key.ValueExists(name_str.c_str()));
- EXPECT_FALSE(key.ValueExists(name_dword.c_str()));
+ EXPECT_FALSE(key.HasValue(name_str.c_str()));
+ EXPECT_FALSE(key.HasValue(name_dword.c_str()));
}
// Write a new value with overwrite flag. The value should be set.
@@ -113,8 +113,8 @@ TEST_F(SetRegValueWorkItemTest, WriteNewOverwrite) {
work_item2->Rollback();
// Rollback should delete the value.
- EXPECT_FALSE(key.ValueExists(name_str.c_str()));
- EXPECT_FALSE(key.ValueExists(name_dword.c_str()));
+ EXPECT_FALSE(key.HasValue(name_str.c_str()));
+ EXPECT_FALSE(key.HasValue(name_dword.c_str()));
}
// Write to an existing value without overwrite flag. There should be
@@ -144,7 +144,7 @@ TEST_F(SetRegValueWorkItemTest, WriteExistingNonOverwrite) {
EXPECT_EQ(0, read_out.compare(data_str_1));
work_item->Rollback();
- EXPECT_TRUE(key.ValueExists(name.c_str()));
+ EXPECT_TRUE(key.HasValue(name.c_str()));
EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
EXPECT_EQ(read_out, data_str_1);
@@ -161,7 +161,7 @@ TEST_F(SetRegValueWorkItemTest, WriteExistingNonOverwrite) {
EXPECT_EQ(read_dword, dword1);
work_item->Rollback();
- EXPECT_TRUE(key.ValueExists(name.c_str()));
+ EXPECT_TRUE(key.HasValue(name.c_str()));
EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
EXPECT_EQ(read_dword, dword1);
}
@@ -207,7 +207,7 @@ TEST_F(SetRegValueWorkItemTest, WriteExistingOverwrite) {
work_item1->Rollback();
work_item2->Rollback();
- EXPECT_TRUE(key.ValueExists(name.c_str()));
+ EXPECT_TRUE(key.HasValue(name.c_str()));
EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(name.c_str(), &read_out));
EXPECT_EQ(read_out, data_str_1);
@@ -232,7 +232,7 @@ TEST_F(SetRegValueWorkItemTest, WriteExistingOverwrite) {
EXPECT_EQ(read_dword, dword2);
work_item3->Rollback();
- EXPECT_TRUE(key.ValueExists(name.c_str()));
+ EXPECT_TRUE(key.HasValue(name.c_str()));
EXPECT_EQ(ERROR_SUCCESS, key.ReadValueDW(name.c_str(), &read_dword));
EXPECT_EQ(read_dword, dword1);
}
diff --git a/chrome_frame/chrome_tab.cc b/chrome_frame/chrome_tab.cc
index 7cd7706..86de19e 100644
--- a/chrome_frame/chrome_tab.cc
+++ b/chrome_frame/chrome_tab.cc
@@ -375,7 +375,7 @@ HRESULT SetChromeFrameUA(bool is_system, const wchar_t* value) {
wchar_t value_data[MAX_PATH + 1] = {};
DWORD value_index = 0;
- while (value_index < ua_key.ValueCount()) {
+ while (value_index < ua_key.GetValueCount()) {
DWORD name_size = arraysize(value_name);
DWORD value_size = arraysize(value_data);
DWORD type = 0;