Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / apps / shell / browser / shell_content_browser_client.h
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_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_
6 #define APPS_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_
7
8 #include "base/compiler_specific.h"
9 #include "content/public/browser/content_browser_client.h"
10
11 class GURL;
12
13 namespace extensions {
14 class Extension;
15 }
16
17 namespace apps {
18 class ShellBrowserMainParts;
19
20 // Content module browser process support for app_shell.
21 class ShellContentBrowserClient : public content::ContentBrowserClient {
22  public:
23   ShellContentBrowserClient();
24   virtual ~ShellContentBrowserClient();
25
26   // content::ContentBrowserClient overrides.
27   virtual content::BrowserMainParts* CreateBrowserMainParts(
28       const content::MainFunctionParams& parameters) OVERRIDE;
29   virtual void RenderProcessWillLaunch(
30       content::RenderProcessHost* host) OVERRIDE;
31   virtual net::URLRequestContextGetter* CreateRequestContext(
32       content::BrowserContext* browser_context,
33       content::ProtocolHandlerMap* protocol_handlers) OVERRIDE;
34   // TODO(jamescook): Quota management?
35   // TODO(jamescook): Speech recognition?
36   virtual bool IsHandledURL(const GURL& url) OVERRIDE;
37   virtual void SiteInstanceGotProcess(content::SiteInstance* site_instance)
38       OVERRIDE;
39   virtual void SiteInstanceDeleting(content::SiteInstance* site_instance)
40       OVERRIDE;
41   virtual void AppendExtraCommandLineSwitches(CommandLine* command_line,
42                                               int child_process_id) OVERRIDE;
43
44  private:
45   // Returns the extension or app associated with |site_instance| or NULL.
46   const extensions::Extension* GetExtension(
47       content::SiteInstance* site_instance);
48
49   // Owned by content::BrowserMainLoop.
50   ShellBrowserMainParts* browser_main_parts_;
51
52   DISALLOW_COPY_AND_ASSIGN(ShellContentBrowserClient);
53 };
54
55 }  // namespace apps
56
57 #endif  // APPS_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_