summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browser_main.cc
diff options
context:
space:
mode:
authorrahulk@google.com <rahulk@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-07 15:49:49 +0000
committerrahulk@google.com <rahulk@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-07 15:49:49 +0000
commit3c8ad73c2dd5ac36c88c0dcfde54e351d5632d28 (patch)
tree8bd2c7b38af2fa686ecd0516ac5677e0b0bdf76d /chrome/browser/browser_main.cc
parent6b27db809e959efaf7183ea2de64c6ab3947ef3d (diff)
downloadchromium_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.cc29
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)) {