diff options
-rw-r--r-- | base/base.gyp | 2 | ||||
-rw-r--r-- | base/test/test_reg_util_win.cc | 65 | ||||
-rw-r--r-- | base/test/test_reg_util_win.h | 64 | ||||
-rw-r--r-- | chrome/installer/util/install_util_unittest.cc | 38 | ||||
-rw-r--r-- | chrome/installer/util/installer_state_unittest.cc | 14 | ||||
-rw-r--r-- | chrome/installer/util/product_state_unittest.cc | 8 | ||||
-rw-r--r-- | chrome/installer/util/product_unittest.cc | 35 | ||||
-rw-r--r-- | chrome/installer/util/product_unittest.h | 18 | ||||
-rw-r--r-- | chrome_frame/test/chrome_frame_test_utils.cc | 39 | ||||
-rw-r--r-- | chrome_frame/test/chrome_frame_test_utils.h | 23 | ||||
-rw-r--r-- | chrome_frame/test/policy_settings_unittest.cc | 1 | ||||
-rw-r--r-- | chrome_frame/test/util_unittests.cc | 14 |
12 files changed, 184 insertions, 137 deletions
diff --git a/base/base.gyp b/base/base.gyp index 40e1ac2..943b4b8 100644 --- a/base/base.gyp +++ b/base/base.gyp @@ -342,6 +342,8 @@ 'test/test_file_util_mac.cc', 'test/test_file_util_posix.cc', 'test/test_file_util_win.cc', + 'test/test_reg_util_win.cc', + 'test/test_reg_util_win.h', 'test/test_suite.cc', 'test/test_suite.h', 'test/test_switches.cc', 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 diff --git a/base/test/test_reg_util_win.h b/base/test/test_reg_util_win.h new file mode 100644 index 0000000..82c1a53 --- /dev/null +++ b/base/test/test_reg_util_win.h @@ -0,0 +1,64 @@ +// 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. + +#ifndef BASE_TEST_TEST_REG_UTIL_H_ +#define BASE_TEST_TEST_REG_UTIL_H_ +#pragma once + +// Registry utility functions used only by tests. + +#include <string> +#include <vector> + +#include "base/basictypes.h" +#include "base/win/registry.h" + +namespace registry_util { + +// Allows a test to easily override registry hives so that it can start from a +// known good state, or make sure to not leave any side effects once the test +// completes. +class RegistryOverrideManager { + public: + // All overridden hives will be descendents of this registry path under the + // main HKCU hive. + static const wchar_t kTempTestKeyPath[]; + + RegistryOverrideManager(); + ~RegistryOverrideManager(); + + // Override the given registry hive using a temporary key named by temp_name + // under the temporary test key path. + void OverrideRegistry(HKEY override, const std::wstring& temp_name); + + // Deletes all temporary test keys used by the overrides. + static void DeleteAllTempKeys(); + + // Removes all overrides and deletes all temporary test keys used by the + // overrides. + void RemoveAllOverrides(); + + private: + // Keeps track of one override. + class ScopedRegistryKeyOverride { + public: + ScopedRegistryKeyOverride(HKEY override, const std::wstring& temp_name); + ~ScopedRegistryKeyOverride(); + + private: + HKEY override_; + base::win::RegKey temp_key_; + std::wstring temp_name_; + + DISALLOW_COPY_AND_ASSIGN(ScopedRegistryKeyOverride); + }; + + std::vector<ScopedRegistryKeyOverride*> overrides_; + + DISALLOW_COPY_AND_ASSIGN(RegistryOverrideManager); +}; + +} // namespace registry_util + +#endif // BASE_TEST_TEST_REG_UTIL_H_ diff --git a/chrome/installer/util/install_util_unittest.cc b/chrome/installer/util/install_util_unittest.cc index 9b12075d..57f61b6 100644 --- a/chrome/installer/util/install_util_unittest.cc +++ b/chrome/installer/util/install_util_unittest.cc @@ -6,6 +6,7 @@ #include <utility> #include "base/command_line.h" +#include "base/test/test_reg_util_win.h" #include "base/win/registry.h" #include "chrome/installer/util/google_update_constants.h" #include "chrome/installer/util/install_util.h" @@ -13,6 +14,7 @@ #include "testing/gmock/include/gmock/gmock.h" using base::win::RegKey; +using registry_util::RegistryOverrideManager; using ::testing::_; using ::testing::Return; using ::testing::StrEq; @@ -76,7 +78,8 @@ TEST_F(InstallUtilTest, UpdateInstallerStageAP) { // Update the stage when there's no "ap" value. { - TempRegKeyOverride override(root, L"root_inst_res"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_inst_res"); RegKey(root, state_key_path.c_str(), KEY_SET_VALUE); InstallUtil::UpdateInstallerStage(system_level, state_key_path, installer::BUILDING); @@ -86,11 +89,11 @@ TEST_F(InstallUtilTest, UpdateInstallerStageAP) { .ReadValue(google_update::kRegApField, &value)); EXPECT_EQ(L"-stage:building", value); } - TempRegKeyOverride::DeleteAllTempKeys(); // Update the stage when there is an "ap" value. { - TempRegKeyOverride override(root, L"root_inst_res"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_inst_res"); RegKey(root, state_key_path.c_str(), KEY_SET_VALUE) .WriteValue(google_update::kRegApField, L"2.0-dev"); InstallUtil::UpdateInstallerStage(system_level, state_key_path, @@ -101,11 +104,11 @@ TEST_F(InstallUtilTest, UpdateInstallerStageAP) { .ReadValue(google_update::kRegApField, &value)); EXPECT_EQ(L"2.0-dev-stage:building", value); } - TempRegKeyOverride::DeleteAllTempKeys(); // Clear the stage. { - TempRegKeyOverride override(root, L"root_inst_res"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_inst_res"); RegKey(root, state_key_path.c_str(), KEY_SET_VALUE) .WriteValue(google_update::kRegApField, L"2.0-dev-stage:building"); InstallUtil::UpdateInstallerStage(system_level, state_key_path, @@ -116,7 +119,6 @@ TEST_F(InstallUtilTest, UpdateInstallerStageAP) { .ReadValue(google_update::kRegApField, &value)); EXPECT_EQ(L"2.0-dev", value); } - TempRegKeyOverride::DeleteAllTempKeys(); } TEST_F(InstallUtilTest, UpdateInstallerStage) { @@ -126,7 +128,8 @@ TEST_F(InstallUtilTest, UpdateInstallerStage) { // Update the stage when there's no "InstallerExtraCode1" value. { - TempRegKeyOverride override(root, L"root_inst_res"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_inst_res"); RegKey(root, state_key_path.c_str(), KEY_SET_VALUE) .DeleteValue(installer::kInstallerExtraCode1); InstallUtil::UpdateInstallerStage(system_level, state_key_path, @@ -137,11 +140,11 @@ TEST_F(InstallUtilTest, UpdateInstallerStage) { .ReadValueDW(installer::kInstallerExtraCode1, &value)); EXPECT_EQ(static_cast<DWORD>(installer::BUILDING), value); } - TempRegKeyOverride::DeleteAllTempKeys(); // Update the stage when there is an "InstallerExtraCode1" value. { - TempRegKeyOverride override(root, L"root_inst_res"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_inst_res"); RegKey(root, state_key_path.c_str(), KEY_SET_VALUE) .WriteValue(installer::kInstallerExtraCode1, static_cast<DWORD>(installer::UNPACKING)); @@ -153,11 +156,11 @@ TEST_F(InstallUtilTest, UpdateInstallerStage) { .ReadValueDW(installer::kInstallerExtraCode1, &value)); EXPECT_EQ(static_cast<DWORD>(installer::BUILDING), value); } - TempRegKeyOverride::DeleteAllTempKeys(); // Clear the stage. { - TempRegKeyOverride override(root, L"root_inst_res"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_inst_res"); RegKey(root, state_key_path.c_str(), KEY_SET_VALUE) .WriteValue(installer::kInstallerExtraCode1, static_cast<DWORD>(5)); InstallUtil::UpdateInstallerStage(system_level, state_key_path, @@ -167,7 +170,6 @@ TEST_F(InstallUtilTest, UpdateInstallerStage) { RegKey(root, state_key_path.c_str(), KEY_QUERY_VALUE) .ReadValueDW(installer::kInstallerExtraCode1, &value)); } - TempRegKeyOverride::DeleteAllTempKeys(); } TEST_F(InstallUtilTest, DeleteRegistryKeyIf) { @@ -179,7 +181,8 @@ TEST_F(InstallUtilTest, DeleteRegistryKeyIf) { const wchar_t value[] = L"hi mom"; { - TempRegKeyOverride override(root, L"root_key"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_key"); // Nothing to delete if the keys aren't even there. { MockRegistryValuePredicate pred; @@ -245,7 +248,6 @@ TEST_F(InstallUtilTest, DeleteRegistryKeyIf) { KEY_QUERY_VALUE).Valid()); } } - TempRegKeyOverride::DeleteAllTempKeys(); } TEST_F(InstallUtilTest, DeleteRegistryValueIf) { @@ -255,7 +257,8 @@ TEST_F(InstallUtilTest, DeleteRegistryValueIf) { const wchar_t value[] = L"hi mom"; { - TempRegKeyOverride override(root, L"root_key"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_key"); // Nothing to delete if the key isn't even there. { MockRegistryValuePredicate pred; @@ -308,10 +311,10 @@ TEST_F(InstallUtilTest, DeleteRegistryValueIf) { KEY_QUERY_VALUE).ValueExists(value_name)); } } - TempRegKeyOverride::DeleteAllTempKeys(); { - TempRegKeyOverride override(root, L"root_key"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_key"); // Default value matches: delete. { MockRegistryValuePredicate pred; @@ -327,7 +330,6 @@ TEST_F(InstallUtilTest, DeleteRegistryValueIf) { KEY_QUERY_VALUE).ValueExists(L"")); } } - TempRegKeyOverride::DeleteAllTempKeys(); } TEST_F(InstallUtilTest, ValueEquals) { diff --git a/chrome/installer/util/installer_state_unittest.cc b/chrome/installer/util/installer_state_unittest.cc index f7d1568..14dec6d 100644 --- a/chrome/installer/util/installer_state_unittest.cc +++ b/chrome/installer/util/installer_state_unittest.cc @@ -13,6 +13,7 @@ #include "base/process_util.h" #include "base/scoped_temp_dir.h" #include "base/string_util.h" +#include "base/test/test_reg_util_win.h" #include "base/utf_string_conversions.h" #include "base/version.h" #include "base/win/registry.h" @@ -35,6 +36,7 @@ using base::win::RegKey; using installer::InstallationState; using installer::InstallerState; using installer::MasterPreferences; +using registry_util::RegistryOverrideManager; class InstallerStateTest : public TestWithTempDirAndDeleteTempOverrideKeys { protected: @@ -343,8 +345,10 @@ TEST_F(InstallerStateTest, WithProduct) { HKEY root = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; EXPECT_EQ(root, installer_state.root_key()); + { - TempRegKeyOverride override(root, L"root_pit"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_pit"); BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution( BrowserDistribution::CHROME_BROWSER); RegKey chrome_key(root, dist->GetVersionKey().c_str(), KEY_ALL_ACCESS); @@ -376,7 +380,8 @@ TEST_F(InstallerStateTest, InstallerResult) { // check results for a fresh install of single Chrome { - TempRegKeyOverride override(root, L"root_inst_res"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_inst_res"); CommandLine cmd_line = CommandLine::FromString(L"setup.exe --system-level"); const MasterPreferences prefs(cmd_line); InstallationState machine_state; @@ -403,11 +408,11 @@ TEST_F(InstallerStateTest, InstallerResult) { key.ReadValue(installer::kInstallerSuccessLaunchCmdLine, &value)); EXPECT_EQ(launch_cmd, value); } - TempRegKeyOverride::DeleteAllTempKeys(); // check results for a fresh install of multi Chrome { - TempRegKeyOverride override(root, L"root_inst_res"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_inst_res"); CommandLine cmd_line = CommandLine::FromString( L"setup.exe --system-level --multi-install --chrome"); const MasterPreferences prefs(cmd_line); @@ -435,7 +440,6 @@ TEST_F(InstallerStateTest, InstallerResult) { EXPECT_EQ(launch_cmd, value); key.Close(); } - TempRegKeyOverride::DeleteAllTempKeys(); } // Test GetCurrentVersion when migrating single Chrome to multi diff --git a/chrome/installer/util/product_state_unittest.cc b/chrome/installer/util/product_state_unittest.cc index 1c8400d..a180bd5 100644 --- a/chrome/installer/util/product_state_unittest.cc +++ b/chrome/installer/util/product_state_unittest.cc @@ -5,6 +5,7 @@ #include <windows.h> #include "base/utf_string_conversions.h" +#include "base/test/test_reg_util_win.h" #include "base/version.h" #include "base/win/registry.h" #include "chrome/installer/util/browser_distribution.h" @@ -16,6 +17,7 @@ using base::win::RegKey; using installer::ProductState; +using registry_util::RegistryOverrideManager; class ProductStateTest : public testing::Test { protected: @@ -48,7 +50,7 @@ void ProductStateTest::SetUpTestCase() { BrowserDistribution::CHROME_BROWSER); // And we'll play in HKCU here: - temp_key_path_.assign(TempRegKeyOverride::kTempTestKeyPath) + temp_key_path_.assign(RegistryOverrideManager::kTempTestKeyPath) .append(1, L'\\') .append(L"ProductStateTest"); } @@ -68,7 +70,7 @@ void ProductStateTest::SetUp() { system_install_ = true; overridden_ = (system_install_ ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER); - // Override for test purposes. We don't use TempRegKeyOverride + // Override for test purposes. We don't use ScopedRegistryKeyOverride // directly because it doesn't suit itself to our use here. RegKey temp_key; EXPECT_EQ(ERROR_SUCCESS, @@ -94,7 +96,7 @@ void ProductStateTest::TearDown() { system_install_ = false; // Shotgun approach to clearing out data we may have written. - TempRegKeyOverride::DeleteAllTempKeys(); + RegistryOverrideManager::DeleteAllTempKeys(); testing::Test::TearDown(); } diff --git a/chrome/installer/util/product_unittest.cc b/chrome/installer/util/product_unittest.cc index 913a6ff..f548bf40 100644 --- a/chrome/installer/util/product_unittest.cc +++ b/chrome/installer/util/product_unittest.cc @@ -5,6 +5,7 @@ #include "chrome/installer/util/product_unittest.h" #include "base/logging.h" +#include "base/test/test_reg_util_win.h" #include "base/utf_string_conversions.h" #include "chrome/installer/util/chrome_frame_distribution.h" #include "chrome/installer/util/google_update_constants.h" @@ -16,6 +17,7 @@ using base::win::RegKey; using installer::Product; using installer::MasterPreferences; +using registry_util::RegistryOverrideManager; void TestWithTempDir::SetUp() { // Name a subdirectory of the user temp directory. @@ -30,41 +32,11 @@ void TestWithTempDir::TearDown() { //////////////////////////////////////////////////////////////////////////////// void TestWithTempDirAndDeleteTempOverrideKeys::SetUp() { - TempRegKeyOverride::DeleteAllTempKeys(); TestWithTempDir::SetUp(); } void TestWithTempDirAndDeleteTempOverrideKeys::TearDown() { TestWithTempDir::TearDown(); - TempRegKeyOverride::DeleteAllTempKeys(); -} - -//////////////////////////////////////////////////////////////////////////////// -const wchar_t TempRegKeyOverride::kTempTestKeyPath[] = - L"Software\\Chromium\\TempTestKeys"; - -TempRegKeyOverride::TempRegKeyOverride(HKEY override, const wchar_t* temp_name) - : override_(override), temp_name_(temp_name) { - DCHECK(temp_name && lstrlenW(temp_name)); - std::wstring key_path(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())); -} - -TempRegKeyOverride::~TempRegKeyOverride() { - ::RegOverridePredefKey(override_, NULL); - // The temp key will be deleted via a call to DeleteAllTempKeys(). -} - -// static -void TempRegKeyOverride::DeleteAllTempKeys() { - RegKey key; - if (key.Open(HKEY_CURRENT_USER, L"", KEY_ALL_ACCESS) == ERROR_SUCCESS) { - key.DeleteKey(kTempTestKeyPath); - } } //////////////////////////////////////////////////////////////////////////////// @@ -110,7 +82,8 @@ TEST_F(ProductTest, ProductInstallBasic) { HKEY root = installer_state.root_key(); { - TempRegKeyOverride override(root, L"root_pit"); + RegistryOverrideManager override_manager; + override_manager.OverrideRegistry(root, L"root_pit"); // Let's pretend chrome is installed. RegKey version_key(root, distribution->GetVersionKey().c_str(), diff --git a/chrome/installer/util/product_unittest.h b/chrome/installer/util/product_unittest.h index 8635fc8..a48c9b7 100644 --- a/chrome/installer/util/product_unittest.h +++ b/chrome/installer/util/product_unittest.h @@ -12,7 +12,6 @@ #include "base/file_util.h" #include "base/path_service.h" #include "base/scoped_temp_dir.h" -#include "base/win/registry.h" #include "testing/gtest/include/gtest/gtest.h" class TestWithTempDir : public testing::Test { @@ -29,21 +28,4 @@ class TestWithTempDirAndDeleteTempOverrideKeys : public TestWithTempDir { virtual void TearDown(); }; -// TODO(tommi): This is "borrowed" from Chrome Frame test code. It should be -// moved to some common test utility file. -class TempRegKeyOverride { - public: - static const wchar_t kTempTestKeyPath[]; - - TempRegKeyOverride(HKEY override, const wchar_t* temp_name); - ~TempRegKeyOverride(); - - static void DeleteAllTempKeys(); - - protected: - HKEY override_; - base::win::RegKey temp_key_; - std::wstring temp_name_; -}; - #endif // CHROME_INSTALLER_UTIL_PRODUCT_UNITTEST_H_ diff --git a/chrome_frame/test/chrome_frame_test_utils.cc b/chrome_frame/test/chrome_frame_test_utils.cc index 240cec2..7b54724 100644 --- a/chrome_frame/test/chrome_frame_test_utils.cc +++ b/chrome_frame/test/chrome_frame_test_utils.cc @@ -51,9 +51,6 @@ const wchar_t kChromeLauncher[] = L"chrome_launcher.exe"; const int kChromeFrameLongNavigationTimeoutInSeconds = 10; const int kChromeFrameVeryLongNavigationTimeoutInSeconds = 30; -const wchar_t TempRegKeyOverride::kTempTestKeyPath[] = - L"Software\\Chromium\\TempTestKeys"; - // Callback function for EnumThreadWindows. BOOL CALLBACK CloseWindowsThreadCallback(HWND hwnd, LPARAM param) { int& count = *reinterpret_cast<int*>(param); @@ -616,40 +613,16 @@ base::ProcessHandle StartCrashService() { } } -TempRegKeyOverride::TempRegKeyOverride(HKEY override, const wchar_t* temp_name) - : override_(override), temp_name_(temp_name) { - DCHECK(temp_name && lstrlenW(temp_name)); - std::wstring key_path(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())); -} - -TempRegKeyOverride::~TempRegKeyOverride() { - ::RegOverridePredefKey(override_, NULL); - // The temp key will be deleted via a call to DeleteAllTempKeys(). -} - -// static -void TempRegKeyOverride::DeleteAllTempKeys() { - base::win::RegKey key; - if (key.Open(HKEY_CURRENT_USER, L"", KEY_ALL_ACCESS) == ERROR_SUCCESS) { - key.DeleteKey(kTempTestKeyPath); - } -} - ScopedVirtualizeHklmAndHkcu::ScopedVirtualizeHklmAndHkcu() { - TempRegKeyOverride::DeleteAllTempKeys(); - hklm_.reset(new TempRegKeyOverride(HKEY_LOCAL_MACHINE, L"hklm_fake")); - hkcu_.reset(new TempRegKeyOverride(HKEY_CURRENT_USER, L"hkcu_fake")); + override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE, L"hklm_fake"); + override_manager_.OverrideRegistry(HKEY_CURRENT_USER, L"hkcu_fake"); } ScopedVirtualizeHklmAndHkcu::~ScopedVirtualizeHklmAndHkcu() { - hkcu_.reset(NULL); - hklm_.reset(NULL); - TempRegKeyOverride::DeleteAllTempKeys(); +} + +void ScopedVirtualizeHklmAndHkcu::RemoveAllOverrides() { + override_manager_.RemoveAllOverrides(); } bool KillProcesses(const std::wstring& executable_name, int exit_code, diff --git a/chrome_frame/test/chrome_frame_test_utils.h b/chrome_frame/test/chrome_frame_test_utils.h index a93af2f..329adba 100644 --- a/chrome_frame/test/chrome_frame_test_utils.h +++ b/chrome_frame/test/chrome_frame_test_utils.h @@ -17,6 +17,7 @@ #include "base/memory/scoped_ptr.h" #include "base/message_loop.h" #include "base/process_util.h" +#include "base/test/test_reg_util_win.h" #include "base/win/registry.h" #include "base/win/scoped_comptr.h" @@ -285,21 +286,6 @@ class CloseIeAtEndOfScope { // during test runs. base::ProcessHandle StartCrashService(); -class TempRegKeyOverride { - public: - static const wchar_t kTempTestKeyPath[]; - - TempRegKeyOverride(HKEY override, const wchar_t* temp_name); - ~TempRegKeyOverride(); - - static void DeleteAllTempKeys(); - - protected: - HKEY override_; - base::win::RegKey temp_key_; - std::wstring temp_name_; -}; - // Used in tests where we reference the registry and don't want to run into // problems where existing registry settings might conflict with the // expectations of the test. @@ -308,9 +294,12 @@ class ScopedVirtualizeHklmAndHkcu { ScopedVirtualizeHklmAndHkcu(); ~ScopedVirtualizeHklmAndHkcu(); + // Removes all overrides and deletes all temporary test keys used by the + // overrides. + void RemoveAllOverrides(); + protected: - scoped_ptr<TempRegKeyOverride> hklm_; - scoped_ptr<TempRegKeyOverride> hkcu_; + registry_util::RegistryOverrideManager override_manager_; }; // Attempts to kill all the processes on the current machine that were launched diff --git a/chrome_frame/test/policy_settings_unittest.cc b/chrome_frame/test/policy_settings_unittest.cc index 15fa443..99d970f 100644 --- a/chrome_frame/test/policy_settings_unittest.cc +++ b/chrome_frame/test/policy_settings_unittest.cc @@ -16,7 +16,6 @@ using base::win::RegKey; using chrome_frame_test::ScopedVirtualizeHklmAndHkcu; -using chrome_frame_test::TempRegKeyOverride; namespace { diff --git a/chrome_frame/test/util_unittests.cc b/chrome_frame/test/util_unittests.cc index 9cdf9f6..bb52451 100644 --- a/chrome_frame/test/util_unittests.cc +++ b/chrome_frame/test/util_unittests.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. @@ -16,7 +16,6 @@ #include "testing/gmock/include/gmock/gmock.h" using base::win::RegKey; -using chrome_frame_test::TempRegKeyOverride; const wchar_t kChannelName[] = L"-dev"; const wchar_t kSuffix[] = L"-fix"; @@ -31,23 +30,16 @@ TEST(SimpleUtilTests, GetTempInternetFiles) { class UtilTests : public testing::Test { protected: void SetUp() { - TempRegKeyOverride::DeleteAllTempKeys(); DeleteAllSingletons(); - - hklm_pol_.reset(new TempRegKeyOverride(HKEY_LOCAL_MACHINE, L"hklm_fake")); - hkcu_pol_.reset(new TempRegKeyOverride(HKEY_CURRENT_USER, L"hkcu_fake")); } void TearDown() { - hkcu_pol_.reset(NULL); - hklm_pol_.reset(NULL); - TempRegKeyOverride::DeleteAllTempKeys(); + registry_virtualization_.RemoveAllOverrides(); } // This is used to manage life cycle of PolicySettings singleton. // base::ShadowingAtExitManager at_exit_manager_; - scoped_ptr<TempRegKeyOverride> hklm_pol_; - scoped_ptr<TempRegKeyOverride> hkcu_pol_; + chrome_frame_test::ScopedVirtualizeHklmAndHkcu registry_virtualization_; }; TEST_F(UtilTests, GetModuleVersionTest) { |