shell_main_delegate.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Copyright 2014 The Chromium Authors. All rights reserved.
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// Use of this source code is governed by a BSD-style license that can be
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver// found in the LICENSE file.
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#ifndef EXTENSIONS_SHELL_APP_SHELL_MAIN_DELEGATE_H_
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#define EXTENSIONS_SHELL_APP_SHELL_MAIN_DELEGATE_H_
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "base/compiler_specific.h"
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "base/memory/scoped_ptr.h"
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#include "content/public/app/content_main_delegate.h"
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace content {
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass BrowserContext;
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass ContentBrowserClient;
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass ContentClient;
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass ContentRendererClient;
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace extensions {
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass ShellBrowserMainDelegate;
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass ShellMainDelegate : public content::ContentMainDelegate {
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver public:
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  ShellMainDelegate();
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual ~ShellMainDelegate();
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // ContentMainDelegate implementation:
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual bool BasicStartupComplete(int* exit_code) OVERRIDE;
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual void PreSandboxStartup() OVERRIDE;
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual content::ContentBrowserClient* CreateContentBrowserClient() OVERRIDE;
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual content::ContentRendererClient* CreateContentRendererClient()
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      OVERRIDE;
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual void ZygoteStarting(
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      ScopedVector<content::ZygoteForkDelegate>* delegates) OVERRIDE;
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver protected:
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // The created object is owned by this object.
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual content::ContentClient* CreateContentClient();
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual content::ContentBrowserClient* CreateShellContentBrowserClient();
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual content::ContentRendererClient* CreateShellContentRendererClient();
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // Initializes the resource bundle and resources.pak.
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  virtual void InitializeResourceBundle();
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver private:
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // |process_type| is zygote, renderer, utility, etc. Returns true if the
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // process needs data from resources.pak.
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  static bool ProcessNeedsResourceBundle(const std::string& process_type);
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  scoped_ptr<content::ContentClient> content_client_;
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  scoped_ptr<content::ContentBrowserClient> browser_client_;
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  scoped_ptr<content::ContentRendererClient> renderer_client_;
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  DISALLOW_COPY_AND_ASSIGN(ShellMainDelegate);
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver};
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}  // namespace extensions
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver#endif  // EXTENSIONS_SHELL_APP_SHELL_MAIN_DELEGATE_H_
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver