Index: chrome_frame/test/chrome_frame_test_utils.cc |
=================================================================== |
--- chrome_frame/test/chrome_frame_test_utils.cc (revision 68663) |
+++ chrome_frame/test/chrome_frame_test_utils.cc (working copy) |
@@ -29,6 +29,7 @@ |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/chrome_paths_internal.h" |
#include "chrome_frame/utils.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
namespace chrome_frame_test { |
@@ -52,6 +53,9 @@ |
const wchar_t kChromeLauncher[] = L"chrome_launcher.exe"; |
const int kChromeFrameLongNavigationTimeoutInSeconds = 10; |
+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); |
@@ -624,4 +628,40 @@ |
} |
} |
+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_TRUE(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)) { |
+ 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")); |
+} |
+ |
+ScopedVirtualizeHklmAndHkcu::~ScopedVirtualizeHklmAndHkcu() { |
+ hkcu_.reset(NULL); |
+ hklm_.reset(NULL); |
+ TempRegKeyOverride::DeleteAllTempKeys(); |
+} |
+ |
} // namespace chrome_frame_test |