Commit 45b716ba authored by ananta@chromium.org's avatar ananta@chromium.org

Unregister previous ChromeFrame UA strings registered under the PostPlatform...

Unregister previous ChromeFrame UA strings registered under the PostPlatform key while registering a new ChromeFrame UA string.
This ensures that we don't end up with a number of duplicated chrome frame UA strings each pointing to a different version.

This should hopefully fix the InstallFlowTest.

BUG=none
TEST=Covered by existing ChromeFrame InstallFlowTest

Review URL: http://codereview.chromium.org/6355001

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71466 0039d316-1c4b-4281-b951-d872f2087c98
parent 8428c34e
...@@ -434,13 +434,35 @@ HRESULT SetChromeFrameUA(bool is_system, const wchar_t* value) { ...@@ -434,13 +434,35 @@ HRESULT SetChromeFrameUA(bool is_system, const wchar_t* value) {
HKEY parent_hive = is_system ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; HKEY parent_hive = is_system ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
RegKey ua_key; RegKey ua_key;
if (ua_key.Create(parent_hive, kPostPlatformUAKey, KEY_WRITE)) { if (ua_key.Create(parent_hive, kPostPlatformUAKey, KEY_READ | KEY_WRITE)) {
// Make sure that we unregister ChromeFrame UA strings registered previously
wchar_t name[MAX_PATH + 1] = {};
wchar_t value[MAX_PATH + 1] = {};
DWORD value_index = 0;
while (value_index < ua_key.ValueCount()) {
DWORD name_size = arraysize(name);
DWORD value_size = arraysize(value);
DWORD type = 0;
LRESULT ret = ::RegEnumValue(ua_key.Handle(), value_index, name,
&name_size, NULL, &type,
reinterpret_cast<BYTE*>(value),
&value_size);
if (ret == ERROR_SUCCESS) {
if (StartsWith(name, kChromeFramePrefix, false)) {
ua_key.DeleteValue(name);
} else {
++value_index;
}
} else {
break;
}
}
std::wstring chrome_frame_ua_value_name = kChromeFramePrefix; std::wstring chrome_frame_ua_value_name = kChromeFramePrefix;
chrome_frame_ua_value_name += GetCurrentModuleVersion(); chrome_frame_ua_value_name += GetCurrentModuleVersion();
if (value) { if (value) {
ua_key.WriteValue(chrome_frame_ua_value_name.c_str(), value); ua_key.WriteValue(chrome_frame_ua_value_name.c_str(), value);
} else {
ua_key.DeleteValue(chrome_frame_ua_value_name.c_str());
} }
hr = S_OK; hr = S_OK;
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment