<commit_before>// Copyright (c) 2010 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 CHROME_COMMON_CHILD_PROCESS_HOST_H_
#define CHROME_COMMON_CHILD_PROCESS_HOST_H_

#if defined(OS_WIN)
#include <windows.h>
#endif  // defined(OS_WIN)

#include <list>
#include <string>

// Must be included early (e.g. before chrome/common/plugin_messages.h)
#include "ipc/ipc_logging.h"

#include "base/basictypes.h"
#include "base/file_path.h"
#include "base/scoped_ptr.h"
#include "chrome/common/notification_type.h"
#include "ipc/ipc_channel.h"

class CommandLine;

// Provides common functionality for hosting a child process and processing IPC
// messages between the host and the child process. Subclasses are responsible
// for the actual launching and terminating of the child processes.
//
class ChildProcessHost : public IPC::Channel::Listener {
 public:
  virtual ~ChildProcessHost();

  // Returns the pathname to be used for a child process.  If a subprocess
  // pathname was specified on the command line, that will be used.  Otherwise,
  // the default child process pathname will be returned.  On most platforms,
  // this will be the same as the currently-executing process.
  //<commit_msg>Fixed compile error. TBR=<EMAIL><commit_after>// Copyright (c) 2010 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 CHROME_COMMON_CHILD_PROCESS_HOST_H_
#define CHROME_COMMON_CHILD_PROCESS_HOST_H_

#include <list>
#include <string>

// Must be included early (e.g. before chrome/common/plugin_messages.h)
#include "ipc/ipc_logging.h"

// Putting this before ipc_logging.h does not work (OS_WIN isn't defined)
#if defined(OS_WIN)
#include <windows.h>
#endif  // defined(OS_WIN)

#include "base/basictypes.h"
#include "base/file_path.h"
#include "base/scoped_ptr.h"
#include "chrome/common/notification_type.h"
#include "ipc/ipc_channel.h"


class CommandLine;

// Provides common functionality for hosting a child process and processing IPC
// messages between the host and the child process. Subclasses are responsible
// for the actual launching and terminating of the child processes.
//
class ChildProcessHost : public IPC::Channel::Listener {
 public:
  virtual ~ChildProcessHost();

  // Returns the pathname to be used for a child process.  If a subprocess
  // pathname was specified on the command line, that will be used.  Otherwise,
  // the default child process pathname will be returned.  On most platforms,
  // this will be the same as the currently-executing process.
  //
{'fraction_non_alphanumeric': 0.08902077151335312, 'fraction_numerical': 0.002967359050445104, 'mean_word_length': 4.288235294117647, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 10, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7569225', 'n_tokens_mistral': 831, 'n_tokens_neox': 808, 'n_words': 309}