Home | History | Annotate | Download | only in app
      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 
     13 namespace content {
     14 class ShellContentBrowserClient;
     15 class ShellContentRendererClient;
     16 
     17 #if defined(OS_ANDROID)
     18 class BrowserMainRunner;
     19 #endif
     20 
     21 class 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