| // 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 "chrome/common/chrome_switches.h" |
| |
| bool DebugFlags::ProcessDebugFlags(std::wstring* command_line, |
| ChildProcessType type, |
| bool is_in_sandbox) { |
| bool should_help_child = false; |
| CommandLine current_cmd_line; |
| if (current_cmd_line.HasSwitch(switches::kDebugChildren)) { |
| // Look to pass-on the kDebugOnStart flag. |
| std::wstring value; |
| value = current_cmd_line.GetSwitchValue(switches::kDebugChildren); |
| if (value.empty() || |
| (type == RENDERER && value == switches::kRendererProcess) || |
| (type == PLUGIN && value == switches::kPluginProcess)) { |
| CommandLine::AppendSwitch(command_line, switches::kDebugOnStart); |
| should_help_child = true; |
| } |
| CommandLine::AppendSwitchWithValue(command_line, |
| switches::kDebugChildren, |
| value); |
| } else if (current_cmd_line.HasSwitch(switches::kWaitForDebuggerChildren)) { |
| // Look to pass-on the kWaitForDebugger flag. |
| std::wstring value; |
| value = current_cmd_line.GetSwitchValue(switches::kWaitForDebuggerChildren); |
| if (value.empty() || |
| (type == RENDERER && value == switches::kRendererProcess) || |
| (type == PLUGIN && value == switches::kPluginProcess)) { |
| CommandLine::AppendSwitch(command_line, switches::kWaitForDebugger); |
| } |
| CommandLine::AppendSwitchWithValue(command_line, |
| switches::kWaitForDebuggerChildren, |
| value); |
| } |
| return should_help_child; |
| } |