diff options
author | rogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-24 20:02:42 +0000 |
---|---|---|
committer | rogerta@chromium.org <rogerta@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-24 20:02:42 +0000 |
commit | a8f8588a7a24c9a0603e28fd67ea463b542a72ac (patch) | |
tree | 5130701e6d083f1f2b742fd155522ebd970ee331 /base/test/test_reg_util_win.cc | |
parent | 96de7910f611a4640bc9ade33abf981b6661680d (diff) | |
download | chromium_src-a8f8588a7a24c9a0603e28fd67ea463b542a72ac.zip chromium_src-a8f8588a7a24c9a0603e28fd67ea463b542a72ac.tar.gz chromium_src-a8f8588a7a24c9a0603e28fd67ea463b542a72ac.tar.bz2 |
Tommi: I need an owner review for the chrome frame changes.
Moving the test helper class TempRegKeyOverride since I need to do something
similar in some new RLZ tests, and I don't want to duplicate the code. Please
suggest a better namespace name if needed, I was just following the same
pattern found in test_file_util in the same directory.
BUG=None
TEST=No new tests, just refactoring test helpers
Review URL: http://codereview.chromium.org/7669061
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98100 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/test/test_reg_util_win.cc')
-rw-r--r-- | base/test/test_reg_util_win.cc | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/base/test/test_reg_util_win.cc b/base/test/test_reg_util_win.cc new file mode 100644 index 0000000..e23c6e9 --- /dev/null +++ b/base/test/test_reg_util_win.cc @@ -0,0 +1,65 @@ +// 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. + +#include "base/test/test_reg_util_win.h" + +#include "base/logging.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace registry_util { + +const wchar_t RegistryOverrideManager::kTempTestKeyPath[] = + L"Software\\Chromium\\TempTestKeys"; + +RegistryOverrideManager::ScopedRegistryKeyOverride::ScopedRegistryKeyOverride( + HKEY override, + const std::wstring& temp_name) + : override_(override), + temp_name_(temp_name) { + DCHECK(!temp_name_.empty()); + std::wstring key_path(RegistryOverrideManager::kTempTestKeyPath); + key_path += L"\\" + temp_name_; + EXPECT_EQ(ERROR_SUCCESS, + temp_key_.Create(HKEY_CURRENT_USER, key_path.c_str(), KEY_ALL_ACCESS)); + EXPECT_EQ(ERROR_SUCCESS, + ::RegOverridePredefKey(override_, temp_key_.Handle())); +} + +RegistryOverrideManager:: + ScopedRegistryKeyOverride::~ScopedRegistryKeyOverride() { + ::RegOverridePredefKey(override_, NULL); + // The temp key will be deleted via a call to DeleteAllTempKeys(). +} + +RegistryOverrideManager::RegistryOverrideManager() { + DeleteAllTempKeys(); +} + +RegistryOverrideManager::~RegistryOverrideManager() { + RemoveAllOverrides(); +} + +void RegistryOverrideManager::OverrideRegistry(HKEY override, + const std::wstring& temp_name) { + overrides_.push_back(new ScopedRegistryKeyOverride(override, temp_name)); +} + +void RegistryOverrideManager::RemoveAllOverrides() { + while (!overrides_.empty()) { + delete overrides_.back(); + overrides_.pop_back(); + } + + DeleteAllTempKeys(); +} + +// static +void RegistryOverrideManager::DeleteAllTempKeys() { + base::win::RegKey key; + if (key.Open(HKEY_CURRENT_USER, L"", KEY_ALL_ACCESS) == ERROR_SUCCESS) { + key.DeleteKey(kTempTestKeyPath); + } +} + +} // namespace registry_util |