1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_RENDER_PROCESS_HOST_OBSERVER_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_RENDER_PROCESS_HOST_OBSERVER_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/process/kill.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/process/process_handle.h"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/common/content_export.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace content {
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class RenderProcessHost;
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// An observer API implemented by classes which are interested
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// in RenderProcessHost lifecycle events.
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class CONTENT_EXPORT RenderProcessHostObserver {
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public:
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // This method is invoked when a render process exited (either normally or
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // with a crash). To determine if the process closed normally or crashed,
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // examine the |status| parameter.
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  //
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Note that this is equivalent to WebContentsObserver::RenderProcessGone().
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void RenderProcessExited(RenderProcessHost* host,
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                   base::ProcessHandle handle,
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                   base::TerminationStatus status,
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                                   int exit_code) {}
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // This method is invoked when the observed RenderProcessHost itself is
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // destroyed. This is guaranteed to be the last call made to the observer.
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void RenderProcessHostDestroyed(RenderProcessHost* host) {}
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) protected:
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual ~RenderProcessHostObserver() {}
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace content
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CONTENT_PUBLIC_BROWSER_RENDER_PROCESS_HOST_OBSERVER_H_
41