• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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 APPS_SHELL_APP_SHELL_MAIN_DELEGATE_H_
6 #define APPS_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 
12 namespace content {
13 class BrowserContext;
14 class ContentBrowserClient;
15 class ContentClient;
16 class ContentRendererClient;
17 }
18 
19 namespace apps {
20 class ShellBrowserMainDelegate;
21 class ShellRendererMainDelegate;
22 
23 class ShellMainDelegate : public content::ContentMainDelegate {
24  public:
25   ShellMainDelegate();
26   virtual ~ShellMainDelegate();
27 
28   // ContentMainDelegate implementation:
29   virtual bool BasicStartupComplete(int* exit_code) OVERRIDE;
30   virtual void PreSandboxStartup() OVERRIDE;
31   virtual content::ContentBrowserClient* CreateContentBrowserClient() OVERRIDE;
32   virtual content::ContentRendererClient* CreateContentRendererClient()
33       OVERRIDE;
34 
35  protected:
36   // The created object is owned by ShellBrowserMainParts.
37   virtual ShellBrowserMainDelegate* CreateShellBrowserMainDelegate();
38 
39   // The returned object is owned by ShellContentRendererClient.
40   virtual scoped_ptr<ShellRendererMainDelegate>
41       CreateShellRendererMainDelegate();
42 
43  private:
44   // |process_type| is zygote, renderer, utility, etc. Returns true if the
45   // process needs data from resources.pak.
46   static bool ProcessNeedsResourceBundle(const std::string& process_type);
47 
48   // Initializes the resource bundle and resources.pak.
49   static void InitializeResourceBundle();
50 
51   scoped_ptr<content::ContentClient> content_client_;
52   scoped_ptr<content::ContentBrowserClient> browser_client_;
53   scoped_ptr<content::ContentRendererClient> renderer_client_;
54 
55   DISALLOW_COPY_AND_ASSIGN(ShellMainDelegate);
56 };
57 
58 }  // namespace apps
59 
60 #endif  // APPS_SHELL_APP_SHELL_MAIN_DELEGATE_H_
61