Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / extensions / shell / app / shell_main_delegate.h
1 // Copyright 2014 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 EXTENSIONS_SHELL_APP_SHELL_MAIN_DELEGATE_H_
6 #define EXTENSIONS_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 extensions {
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 this object.
37   virtual content::ContentBrowserClient* CreateShellContentBrowserClient();
38
39   // The returned object is owned by ShellContentRendererClient.
40   virtual scoped_ptr<ShellRendererMainDelegate>
41       CreateShellRendererMainDelegate();
42
43   // Initializes the resource bundle and resources.pak.
44   virtual void InitializeResourceBundle();
45
46  private:
47   // |process_type| is zygote, renderer, utility, etc. Returns true if the
48   // process needs data from resources.pak.
49   static bool ProcessNeedsResourceBundle(const std::string& process_type);
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 extensions
59
60 #endif  // EXTENSIONS_SHELL_APP_SHELL_MAIN_DELEGATE_H_