summaryrefslogtreecommitdiffstats
path: root/chrome_frame/chrome_frame_automation.cc
diff options
context:
space:
mode:
authorrobertshield@chromium.org <robertshield@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-17 17:53:48 +0000
committerrobertshield@chromium.org <robertshield@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-17 17:53:48 +0000
commit79206cd0e7123e56006b165c824acdb0b3559b63 (patch)
tree9396cb4c35b46982e7703046a7cc3c6d0c069ce9 /chrome_frame/chrome_frame_automation.cc
parent2ac837a92d049c5bf89b77888ca2c80be0f260c2 (diff)
downloadchromium_src-79206cd0e7123e56006b165c824acdb0b3559b63.zip
chromium_src-79206cd0e7123e56006b165c824acdb0b3559b63.tar.gz
chromium_src-79206cd0e7123e56006b165c824acdb0b3559b63.tar.bz2
Make use of the new version flag in Chrome to load the correct chrome.dll version.
Also fix a memory leak in the Chrome Frame automation code. BUG=61609 TEST=Chrome.exe always loads the specified chrome.dll when run by Chrome Frame. Review URL: http://codereview.chromium.org/5090001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66462 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame/chrome_frame_automation.cc')
-rw-r--r--chrome_frame/chrome_frame_automation.cc22
1 files changed, 14 insertions, 8 deletions
diff --git a/chrome_frame/chrome_frame_automation.cc b/chrome_frame/chrome_frame_automation.cc
index b05c32aa..7a49f18 100644
--- a/chrome_frame/chrome_frame_automation.cc
+++ b/chrome_frame/chrome_frame_automation.cc
@@ -45,6 +45,15 @@ static const wchar_t kUmaSendIntervalValue[] = L"UmaSendInterval";
// threads.
Lock g_ChromeFrameHistogramLock;
+namespace {
+std::wstring GetCurrentModuleVersion() {
+ scoped_ptr<FileVersionInfo> module_version_info(
+ FileVersionInfo::CreateFileVersionInfoForCurrentModule());
+ DCHECK(module_version_info.get() != NULL);
+ return module_version_info->file_version();
+}
+}
+
class ChromeFrameAutomationProxyImpl::TabProxyNotificationMessageFilter
: public IPC::ChannelProxy::MessageFilter {
public:
@@ -305,6 +314,10 @@ void AutomationProxyCacheEntry::CreateProxy(ChromeFrameLaunchParams* params,
command_line->AppendSwitchPath(switches::kUserDataDir,
params->profile_path());
+ // Ensure that Chrome is running the specified version of chrome.dll.
+ command_line->AppendSwitchNative(switches::kChromeVersion,
+ GetCurrentModuleVersion());
+
if (!params->language().empty())
command_line->AppendSwitchNative(switches::kLang, params->language());
@@ -1301,14 +1314,7 @@ void ChromeFrameAutomationClient::SendContextMenuCommandToChromeFrame(
}
std::wstring ChromeFrameAutomationClient::GetVersion() const {
- static FileVersionInfo* version_info =
- FileVersionInfo::CreateFileVersionInfoForCurrentModule();
-
- std::wstring version;
- if (version_info)
- version = version_info->product_version();
-
- return version;
+ return GetCurrentModuleVersion();
}
void ChromeFrameAutomationClient::Print(HDC print_dc,