// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_PUBLIC_COMMON_RESULT_CODES_H_
#define CONTENT_PUBLIC_COMMON_RESULT_CODES_H_

#include "services/service_manager/embedder/result_codes.h"

namespace content {

// 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
// b) specified in the call for ExitProcess() or TerminateProcess(), or
// c) the exception value that causes a process to terminate.
//
// It is advisable to not use negative numbers because the Windows API returns
// it as an unsigned long and the exception values have high numbers. For
// example EXCEPTION_ACCESS_VIOLATION value is 0xC0000005.
//
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.content_public.common
//
// IMPORTANT: This needs to stay in sync with <enum name="CrashExitCodes"> and
// <enum name="WindowsExitCode"> in tools/metrics/histograms/enums.xml. Due to
// chrome::ResultCode's dependency on the enum values, do not add any new values
// here, and mark obsolete values are unused instead of removing them. See
// https://crrev.com/c/885090 for context.
// TODO(wfh): Break the dependency so it is possible to add more values.

enum ResultCode {
  RESULT_CODE_CONTENT_START = service_manager::RESULT_CODE_LAST_CODE,

  // Process was killed by user or system.
  RESULT_CODE_KILLED = RESULT_CODE_CONTENT_START,

  // Process hung.
  RESULT_CODE_HUNG,

  // A bad message caused the process termination.
  RESULT_CODE_KILLED_BAD_MESSAGE,

  // The GPU process exited because initialization failed.
  RESULT_CODE_GPU_DEAD_ON_ARRIVAL,

  // Last return code (keep this last).
  RESULT_CODE_LAST_CODE
};

static_assert(RESULT_CODE_LAST_CODE == 5,
              "This enum is frozen - see the IMPORTANT note above.");

}  // namespace content

#endif  // CONTENT_PUBLIC_COMMON_RESULT_CODES_H_
