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_APP_SHELL_MAIN_DELEGATE_H_ 6#define CONTENT_SHELL_APP_SHELL_MAIN_DELEGATE_H_ 7 8#include "base/compiler_specific.h" 9#include "base/memory/scoped_ptr.h" 10#include "content/public/app/content_main_delegate.h" 11#include "content/shell/common/shell_content_client.h" 12 13namespace content { 14class ShellContentBrowserClient; 15class ShellContentRendererClient; 16 17#if defined(OS_ANDROID) 18class BrowserMainRunner; 19#endif 20 21class ShellMainDelegate : public ContentMainDelegate { 22 public: 23 ShellMainDelegate(); 24 virtual ~ShellMainDelegate(); 25 26 // ContentMainDelegate implementation: 27 virtual bool BasicStartupComplete(int* exit_code) OVERRIDE; 28 virtual void PreSandboxStartup() OVERRIDE; 29 virtual int RunProcess( 30 const std::string& process_type, 31 const MainFunctionParams& main_function_params) OVERRIDE; 32#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) 33 virtual void ZygoteForked() OVERRIDE; 34#endif 35 virtual ContentBrowserClient* CreateContentBrowserClient() OVERRIDE; 36 virtual ContentRendererClient* CreateContentRendererClient() OVERRIDE; 37 38 static void InitializeResourceBundle(); 39 40 private: 41 scoped_ptr<ShellContentBrowserClient> browser_client_; 42 scoped_ptr<ShellContentRendererClient> renderer_client_; 43 ShellContentClient content_client_; 44 45#if defined(OS_ANDROID) 46 scoped_ptr<BrowserMainRunner> browser_runner_; 47#endif 48 49 DISALLOW_COPY_AND_ASSIGN(ShellMainDelegate); 50}; 51 52} // namespace content 53 54#endif // CONTENT_SHELL_APP_SHELL_MAIN_DELEGATE_H_ 55