browser_child_process_observer.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_PUBLIC_BROWSER_BROWSER_CHILD_PROCESS_OBSERVER_H_
6#define CONTENT_PUBLIC_BROWSER_BROWSER_CHILD_PROCESS_OBSERVER_H_
7
8#include "content/common/content_export.h"
9
10namespace content {
11
12struct ChildProcessData;
13
14// An observer API implemented by classes which are interested in browser child
15// process events. Note that render processes cannot be observed through this
16// interface; use RenderProcessHostObserver instead.
17class CONTENT_EXPORT BrowserChildProcessObserver {
18 public:
19  // Called when a child process host has connected to a child process.
20  virtual void BrowserChildProcessHostConnected(const ChildProcessData& data) {}
21
22  // Called after a ChildProcessHost is disconnected from the child process.
23  virtual void BrowserChildProcessHostDisconnected(
24      const ChildProcessData& data) {}
25
26  // Called when a child process disappears unexpectedly as a result of a crash.
27  virtual void BrowserChildProcessCrashed(const ChildProcessData& data) {}
28
29  // Called when an instance of a particular child is created in a page. If one
30  // page contains several regions rendered by the same child, this will be
31  // called once for each region during the page load.
32  virtual void BrowserChildProcessInstanceCreated(
33      const ChildProcessData& data) {}
34
35 protected:
36  // The observer can be destroyed on any thread.
37  virtual ~BrowserChildProcessObserver() {}
38
39  static void Add(BrowserChildProcessObserver* observer);
40  static void Remove(BrowserChildProcessObserver* observer);
41};
42
43}  // namespace content
44
45#endif  // CONTENT_PUBLIC_BROWSER_BROWSER_CHILD_PROCESS_OBSERVER_H_
46