// Copyright (c) 2020 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #ifndef SHELL_COMMON_GIN_CONVERTERS_BASE_CONVERTER_H_ #define SHELL_COMMON_GIN_CONVERTERS_BASE_CONVERTER_H_ #include "base/process/kill.h" #include "gin/converter.h" namespace gin { template <> struct Converter { static v8::Local ToV8(v8::Isolate* isolate, const base::TerminationStatus& status) { switch (status) { case base::TERMINATION_STATUS_NORMAL_TERMINATION: return gin::ConvertToV8(isolate, "clean-exit"); case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: return gin::ConvertToV8(isolate, "abnormal-exit"); case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: return gin::ConvertToV8(isolate, "killed"); case base::TERMINATION_STATUS_PROCESS_CRASHED: return gin::ConvertToV8(isolate, "crashed"); case base::TERMINATION_STATUS_STILL_RUNNING: return gin::ConvertToV8(isolate, "still-running"); case base::TERMINATION_STATUS_LAUNCH_FAILED: return gin::ConvertToV8(isolate, "launch-failed"); case base::TERMINATION_STATUS_OOM: return gin::ConvertToV8(isolate, "oom"); #if defined(OS_WIN) case base::TERMINATION_STATUS_INTEGRITY_FAILURE: return gin::ConvertToV8(isolate, "integrity-failure"); #endif case base::TERMINATION_STATUS_MAX_ENUM: NOTREACHED(); return gin::ConvertToV8(isolate, ""); } NOTREACHED(); return gin::ConvertToV8(isolate, ""); } }; } // namespace gin #endif // SHELL_COMMON_GIN_CONVERTERS_BASE_CONVERTER_H_