diff options
author | rahulk@google.com <rahulk@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-07 15:49:49 +0000 |
---|---|---|
committer | rahulk@google.com <rahulk@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-07 15:49:49 +0000 |
commit | 3c8ad73c2dd5ac36c88c0dcfde54e351d5632d28 (patch) | |
tree | 8bd2c7b38af2fa686ecd0516ac5677e0b0bdf76d /chrome/browser/browser_main.cc | |
parent | 6b27db809e959efaf7183ea2de64c6ab3947ef3d (diff) | |
download | chromium_src-3c8ad73c2dd5ac36c88c0dcfde54e351d5632d28.zip chromium_src-3c8ad73c2dd5ac36c88c0dcfde54e351d5632d28.tar.gz chromium_src-3c8ad73c2dd5ac36c88c0dcfde54e351d5632d28.tar.bz2 |
Patch uninstall until we fix bug 1308130.
BUG=1311781
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@516 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser_main.cc')
-rw-r--r-- | chrome/browser/browser_main.cc | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc index 686be7c..45308d9 100644 --- a/chrome/browser/browser_main.cc +++ b/chrome/browser/browser_main.cc @@ -233,6 +233,20 @@ bool DoUpgradeTasks(const CommandLine& command_line) { return true; } +bool CreateUniqueChromeEvent() { + std::wstring exe; + PathService::Get(base::FILE_EXE, &exe); + std::replace(exe.begin(), exe.end(), '\\', '!'); + std::transform(exe.begin(), exe.end(), exe.begin(), tolower); + HANDLE handle = CreateEvent(NULL, TRUE, TRUE, exe.c_str()); + bool already_running = false; + if (GetLastError() == ERROR_ALREADY_EXISTS) { + already_running = true; + CloseHandle(handle); + } + return already_running; +} + } // namespace // Main routine for running as the Browser process. @@ -248,23 +262,13 @@ int BrowserMain(CommandLine &parsed_command_line, int show_command, const char* main_thread_name = "Chrome_BrowserMain"; Thread::SetThreadName(main_thread_name, GetCurrentThreadId()); MessageLoop::current()->SetThreadName(main_thread_name); + bool already_running = CreateUniqueChromeEvent(); // Make the selection of network stacks early on before any consumers try to // issue HTTP requests. if (parsed_command_line.HasSwitch(switches::kUseNewHttp)) net::HttpNetworkLayer::UseWinHttp(false); - std::wstring exe; - PathService::Get(base::FILE_EXE, &exe); - std::replace(exe.begin(), exe.end(), '\\', '!'); - std::transform(exe.begin(), exe.end(), exe.begin(), tolower); - HANDLE handle = CreateEvent(NULL, TRUE, TRUE, exe.c_str()); - bool already_running = false; - if (GetLastError() == ERROR_ALREADY_EXISTS) { - already_running = true; - CloseHandle(handle); - } - std::wstring user_data_dir; PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); BrowserInit::MessageWindow message_window(user_data_dir); @@ -395,7 +399,10 @@ int BrowserMain(CommandLine &parsed_command_line, int show_command, if (message_window.NotifyOtherProcess(show_command)) return ResultCodes::NORMAL_EXIT; + // Sometimes we end up killing browser process (http://b/1308130) so make + // sure we recreate unique event to indicate running browser process. message_window.HuntForZombieChromeProcesses(); + CreateUniqueChromeEvent(); // Do the tasks if chrome has been upgraded while it was last running. if (DoUpgradeTasks(parsed_command_line)) { |