Index: chrome/test/base/chrome_test_launcher.cc |
diff --git a/chrome/test/base/chrome_test_launcher.cc b/chrome/test/base/chrome_test_launcher.cc |
index 2b51be94a9121f41d34d4543e50d0237b6653c1b..3bd57a6a582b0343906ef5b14082b9c420317e92 100644 |
--- a/chrome/test/base/chrome_test_launcher.cc |
+++ b/chrome/test/base/chrome_test_launcher.cc |
@@ -16,6 +16,7 @@ |
#include "base/memory/ptr_util.h" |
#include "base/process/process_metrics.h" |
#include "base/run_loop.h" |
+#include "base/strings/string16.h" |
#include "base/strings/string_util.h" |
#include "base/test/test_file_util.h" |
#include "build/build_config.h" |
@@ -52,6 +53,7 @@ |
#endif |
#if defined(OS_WIN) |
+#include <shellapi.h> |
#include "base/win/registry.h" |
#include "chrome/app/chrome_crash_reporter_client_win.h" |
#include "chrome/install_static/install_util.h" |
@@ -100,26 +102,37 @@ ChromeTestLauncherDelegate::CreateContentMainDelegate() { |
void ChromeTestLauncherDelegate::PreSharding() { |
#if defined(OS_WIN) |
- // Pre-test cleanup for registry state keyed off the profile dir (which can |
- // proliferate with the use of uniquely named scoped_dirs): |
- // https://crbug.com/721245. This needs to be here in order not to be racy |
- // with any tests that will access that state. |
- base::win::RegKey distrubution_key; |
- LONG result = distrubution_key.Open(HKEY_CURRENT_USER, |
- install_static::GetRegistryPath().c_str(), |
- KEY_SET_VALUE); |
- |
- if (result != ERROR_SUCCESS && result != ERROR_FILE_NOT_FOUND) { |
- LOG(ERROR) << "Failed to open distribution key for cleanup: " << result; |
- return; |
- } |
- |
- result = distrubution_key.DeleteKey(L"PreferenceMACs"); |
- |
- if (result != ERROR_SUCCESS && result != ERROR_FILE_NOT_FOUND) { |
- LOG(ERROR) << "Failed to cleanup PreferenceMACs: " << result; |
- return; |
- } |
+ // Construct the distribution specific equivalent of |
+ // "delete HKCU\\SOFTWARE\\Chromium\\PreferenceMACs /f". |
+ base::string16 operation(L"delete HKCU\\"); |
+ operation.append(install_static::GetRegistryPath()); |
+ operation.append(L"\\PreferenceMACs /f"); |
+ // TODO(gab): This is a nuclear option while the cleanup below doesn't work as |
+ // the bots are in such bad shape per https://crbug.com/721245 that doing any |
+ // registry operations from C++ results in fatal error 1450 (insufficient |
+ // resources). Hopefully ShellExecute works... |
+ ::ShellExecute(NULL, NULL, L"reg.exe", operation.c_str(), NULL, 0); |
+ |
+// // Pre-test cleanup for registry state keyed off the profile dir (which can |
+// // proliferate with the use of uniquely named scoped_dirs): |
+// // https://crbug.com/721245. This needs to be here in order not to be racy |
+// // with any tests that will access that state. |
+// base::win::RegKey distrubution_key; |
+// LONG result = distrubution_key.Open( |
+// HKEY_CURRENT_USER, install_static::GetRegistryPath().c_str(), |
+// KEY_SET_VALUE); |
+ |
+// if (result != ERROR_SUCCESS && result != ERROR_FILE_NOT_FOUND) { |
+// LOG(ERROR) << "Failed to open distribution key for cleanup: " << result; |
+// return; |
+// } |
+ |
+// result = distrubution_key.DeleteKey(L"PreferenceMACs"); |
+ |
+// if (result != ERROR_SUCCESS && result != ERROR_FILE_NOT_FOUND) { |
+// LOG(ERROR) << "Failed to cleanup PreferenceMACs: " << result; |
+// return; |
+// } |
#endif |
} |