1// Copyright (c) 2012 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_SHELL_SHELL_RENDER_PROCESS_OBSERVER_H_ 6#define CONTENT_SHELL_SHELL_RENDER_PROCESS_OBSERVER_H_ 7 8#include "base/basictypes.h" 9#include "base/compiler_specific.h" 10#include "base/files/file_path.h" 11#include "base/memory/scoped_ptr.h" 12#include "content/public/renderer/render_process_observer.h" 13#include "ipc/ipc_platform_file.h" 14 15namespace blink { 16class WebFrame; 17} 18 19namespace content { 20 21class RenderView; 22class WebKitTestRunner; 23class WebTestDelegate; 24class WebTestInterfaces; 25 26class ShellRenderProcessObserver : public RenderProcessObserver { 27 public: 28 static ShellRenderProcessObserver* GetInstance(); 29 30 ShellRenderProcessObserver(); 31 virtual ~ShellRenderProcessObserver(); 32 33 void SetTestDelegate(WebTestDelegate* delegate); 34 void SetMainWindow(RenderView* view); 35 36 // RenderProcessObserver implementation. 37 virtual void WebKitInitialized() OVERRIDE; 38 virtual void OnRenderProcessShutdown() OVERRIDE; 39 virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; 40 41 WebTestDelegate* test_delegate() const { 42 return test_delegate_; 43 } 44 WebTestInterfaces* test_interfaces() const { 45 return test_interfaces_.get(); 46 } 47 WebKitTestRunner* main_test_runner() const { return main_test_runner_; } 48 const base::FilePath& webkit_source_dir() const { return webkit_source_dir_; } 49 50 private: 51 // Message handlers. 52 void OnResetAll(); 53 void OnSetWebKitSourceDir(const base::FilePath& webkit_source_dir); 54 55 WebKitTestRunner* main_test_runner_; 56 WebTestDelegate* test_delegate_; 57 scoped_ptr<WebTestInterfaces> test_interfaces_; 58 59 base::FilePath webkit_source_dir_; 60 61 DISALLOW_COPY_AND_ASSIGN(ShellRenderProcessObserver); 62}; 63 64} // namespace content 65 66#endif // CONTENT_SHELL_SHELL_RENDER_PROCESS_OBSERVER_H_ 67