diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-18 17:02:14 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-18 17:02:14 +0000 |
commit | ac33674d8fe3a73a9cbf19807e999bd2bb787361 (patch) | |
tree | 73e0fbb054b38adc4d40c82224ecc64400c85257 | |
parent | 6b073e60cf5e57e8ea1952787a32be3a21e66496 (diff) | |
download | chromium_src-ac33674d8fe3a73a9cbf19807e999bd2bb787361.zip chromium_src-ac33674d8fe3a73a9cbf19807e999bd2bb787361.tar.gz chromium_src-ac33674d8fe3a73a9cbf19807e999bd2bb787361.tar.bz2 |
base/win: small improvement to RegKey API.
- Rename ValueExists() to HasValue().
- Rename ValueCount() to GetValueCount().
- Rename ReadName() to GetValueNameAt().
R=maruel@chromium.org,willchan@chromium.org
Review URL: http://codereview.chromium.org/8337006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106074 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | base/win/registry.cc | 43 | ||||
-rw-r--r-- | base/win/registry.h | 22 | ||||
-rw-r--r-- | base/win/registry_unittest.cc | 18 | ||||
-rw-r--r-- | chrome/browser/autofill/autofill_ie_toolbar_import_win.cc | 4 | ||||
-rw-r--r-- | chrome/browser/background/background_mode_manager_win.cc | 4 | ||||
-rw-r--r-- | chrome/installer/util/delete_reg_value_work_item_unittest.cc | 18 | ||||
-rw-r--r-- | chrome/installer/util/google_update_settings.cc | 2 | ||||
-rw-r--r-- | chrome/installer/util/install_util.cc | 2 | ||||
-rw-r--r-- | chrome/installer/util/install_util_unittest.cc | 6 | ||||
-rw-r--r-- | chrome/installer/util/set_reg_value_work_item_unittest.cc | 16 | ||||
-rw-r--r-- | chrome_frame/chrome_tab.cc | 2 |
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, ¤t_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; |