// Copyright (c) 2006-2008 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.

#include "chrome/common/debug_flags.h"

#include "base/base_switches.h"
#include "base/command_line.h"
#include "base/utf_string_conversions.h"
#include "chrome/common/chrome_switches.h"
#include "ipc/ipc_switches.h"

bool DebugFlags::ProcessDebugFlags(CommandLine* command_line,
                                   ChildProcessInfo::ProcessType type,
                                   bool is_in_sandbox) {
  bool should_help_child = false;
  const CommandLine& current_cmd_line = *CommandLine::ForCurrentProcess();
  if (current_cmd_line.HasSwitch(switches::kDebugChildren)) {
    // Look to pass-on the kDebugOnStart flag.
    std::string value = current_cmd_line.GetSwitchValueASCII(
        switches::kDebugChildren);
    if (value.empty() ||
        (type == ChildProcessInfo::WORKER_PROCESS &&
         value == switches::kWorkerProcess) ||
        (type == ChildProcessInfo::RENDER_PROCESS &&
         value == switches::kRendererProcess) ||
        (type == ChildProcessInfo::PLUGIN_PROCESS &&
         value == switches::kPluginProcess)) {
      command_line->AppendSwitch(switches::kDebugOnStart);
      should_help_child = true;
    }
    command_line->AppendSwitchASCII(switches::kDebugChildren, value);
  } else if (current_cmd_line.HasSwitch(switches::kWaitForDebuggerChildren)) {
    // Look to pass-on the kWaitForDebugger flag.
    std::string value = current_cmd_line.GetSwitchValueASCII(
        switches::kWaitForDebuggerChildren);
    if (value.empty() ||
        (type == ChildProcessInfo::WORKER_PROCESS &&
         value == switches::kWorkerProcess) ||
        (type == ChildProcessInfo::RENDER_PROCESS &&
         value == switches::kRendererProcess) ||
        (type == ChildProcessInfo::PLUGIN_PROCESS &&
         value == switches::kPluginProcess)) {
      command_line->AppendSwitch(switches::kWaitForDebugger);
    }
    command_line->AppendSwitchASCII(switches::kWaitForDebuggerChildren, value);
  }
  return should_help_child;
}
