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.
5 #ifndef EXTENSIONS_SHELL_APP_SHELL_MAIN_DELEGATE_H_
6 #define EXTENSIONS_SHELL_APP_SHELL_MAIN_DELEGATE_H_
8 #include "base/compiler_specific.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "content/public/app/content_main_delegate.h"
14 class ContentBrowserClient;
16 class ContentRendererClient;
19 namespace extensions {
20 class ShellBrowserMainDelegate;
21 class ShellRendererMainDelegate;
23 class ShellMainDelegate : public content::ContentMainDelegate {
26 virtual ~ShellMainDelegate();
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()
36 // The created object is owned by this object.
37 virtual content::ContentBrowserClient* CreateShellContentBrowserClient();
39 // The returned object is owned by ShellContentRendererClient.
40 virtual scoped_ptr<ShellRendererMainDelegate>
41 CreateShellRendererMainDelegate();
43 // Initializes the resource bundle and resources.pak.
44 virtual void InitializeResourceBundle();
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);
51 scoped_ptr<content::ContentClient> content_client_;
52 scoped_ptr<content::ContentBrowserClient> browser_client_;
53 scoped_ptr<content::ContentRendererClient> renderer_client_;
55 DISALLOW_COPY_AND_ASSIGN(ShellMainDelegate);
58 } // namespace extensions
60 #endif // EXTENSIONS_SHELL_APP_SHELL_MAIN_DELEGATE_H_