summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcpu@google.com <cpu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-03 23:28:06 +0000
committercpu@google.com <cpu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-03 23:28:06 +0000
commiteef576fd62fc6be5a23e276353f8cbae217d87ff (patch)
tree5f492cf31ca5774a1a994c6308b4b520f87e3423
parent5f8cbd5751a4d2ef52974fa4b4f7ab9943db07d1 (diff)
downloadchromium_src-eef576fd62fc6be5a23e276353f8cbae217d87ff.zip
chromium_src-eef576fd62fc6be5a23e276353f8cbae217d87ff.tar.gz
chromium_src-eef576fd62fc6be5a23e276353f8cbae217d87ff.tar.bz2
Remove fragile check in DidProcessCrash
- the numbers were out of sync with result_codes.h - can't use result_codes.h in base project so I extracted the generic part of it. Rahul: I hope I don't break installer assumptions here. Dan: don't feel obligated to review. Review URL: http://codereview.chromium.org/9012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4519 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/process_util.h11
-rw-r--r--base/process_util_win.cc7
-rw-r--r--chrome/app/result_codes.h7
3 files changed, 18 insertions, 7 deletions
diff --git a/base/process_util.h b/base/process_util.h
index 50a5626..3f777a6 100644
--- a/base/process_util.h
+++ b/base/process_util.h
@@ -46,13 +46,22 @@ struct IoCounters {
namespace process_util {
+// A minimalistic but hopefully cross-platform set of exit codes.
+// Do not change the enumeration values or you will break third-party
+// installers.
+enum {
+ PROCESS_END_NORMAL_TERMINATON = 0,
+ PROCESS_END_KILLED_BY_USER = 1,
+ PROCESS_END_PROCESS_WAS_HUNG = 2
+};
+
// Returns the id of the current process.
int GetCurrentProcId();
// Returns the ProcessHandle of the current process.
ProcessHandle GetCurrentProcessHandle();
-// Returns the unique ID for the specified process. This is functionally the
+// Returns the unique ID for the specified process. This is functionally the
// same as Windows' GetProcessId(), but works on versions of Windows before
// Win XP SP1 as well.
int GetProcId(ProcessHandle process);
diff --git a/base/process_util_win.cc b/base/process_util_win.cc
index b13cbea..df485f4 100644
--- a/base/process_util_win.cc
+++ b/base/process_util_win.cc
@@ -187,10 +187,9 @@ bool DidProcessCrash(ProcessHandle handle) {
// Warning, this is not generic code; it heavily depends on the way
// the rest of the code kills a process.
- if (exitcode == 0 || // Normal termination.
- exitcode == 1 || // Killed by task manager.
- exitcode == 14 || // Killed because of a bad message.
- exitcode == 16 || // Killed by hung detector (see ResultCodes)
+ if (exitcode == PROCESS_END_NORMAL_TERMINATON ||
+ exitcode == PROCESS_END_KILLED_BY_USER ||
+ exitcode == PROCESS_END_PROCESS_WAS_HUNG ||
exitcode == 0xC0000354 || // STATUS_DEBUGGER_INACTIVE.
exitcode == 0xC000013A || // Control-C/end session.
exitcode == 0x40010004) { // Debugger terminated process/end session.
diff --git a/chrome/app/result_codes.h b/chrome/app/result_codes.h
index e03a8bc..4acad55 100644
--- a/chrome/app/result_codes.h
+++ b/chrome/app/result_codes.h
@@ -5,6 +5,8 @@
#ifndef CHROME_APP_RESULT_CODES_H__
#define CHROME_APP_RESULT_CODES_H__
+#include "base/process_util.h"
+
// This file consolidates all the return codes for the browser and renderer
// process. The return code is the value that:
// a) is returned by main() or winmain(), or
@@ -18,7 +20,9 @@
class ResultCodes {
public:
enum ExitCode {
- NORMAL_EXIT = 0, // Normal termination. Keep it *always* zero.
+ NORMAL_EXIT = process_util::PROCESS_END_NORMAL_TERMINATON,
+ TASKMAN_KILL = process_util::PROCESS_END_KILLED_BY_USER,
+ HUNG = process_util::PROCESS_END_PROCESS_WAS_HUNG,
INVALID_CMDLINE_URL, // An invalid command line url was given.
SBOX_INIT_FAILED, // The sandbox could not be initialized.
GOOGLE_UPDATE_INIT_FAILED, // The Google Update client stub init failed.
@@ -35,7 +39,6 @@ class ResultCodes {
UNSUPPORTED_PARAM, // Command line parameter is not supported.
KILLED_BAD_MESSAGE, // A bad message caused the process termination.
IMPORTER_CANCEL, // The user canceled the browser import.
- HUNG, // Browser was hung and killed.
IMPORTER_HUNG, // Browser import hung and was killed.
EXIT_LAST_CODE // Last return code (keep it last).
};