shell_main_delegate.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
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
12namespace content {
13class BrowserContext;
14class ContentBrowserClient;
15class ContentClient;
16class ContentRendererClient;
17}
18
19namespace extensions {
20class ShellBrowserMainDelegate;
21class ShellRendererMainDelegate;
22
23class 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_
61