summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/base.gyp2
-rw-r--r--base/test/test_reg_util_win.cc65
-rw-r--r--base/test/test_reg_util_win.h64
-rw-r--r--chrome/installer/util/install_util_unittest.cc38
-rw-r--r--chrome/installer/util/installer_state_unittest.cc14
-rw-r--r--chrome/installer/util/product_state_unittest.cc8
-rw-r--r--chrome/installer/util/product_unittest.cc35
-rw-r--r--chrome/installer/util/product_unittest.h18
-rw-r--r--chrome_frame/test/chrome_frame_test_utils.cc39
-rw-r--r--chrome_frame/test/chrome_frame_test_utils.h23
-rw-r--r--chrome_frame/test/policy_settings_unittest.cc1
-rw-r--r--chrome_frame/test/util_unittests.cc14
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) {