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