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_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_ 6 #define EXTENSIONS_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 base { 14 class CommandLine; 15 } 16 17 namespace content { 18 class BrowserContext; 19 } 20 21 namespace extensions { 22 class Extension; 23 class ShellBrowserMainDelegate; 24 class ShellBrowserMainParts; 25 26 // Content module browser process support for app_shell. 27 class ShellContentBrowserClient : public content::ContentBrowserClient { 28 public: 29 explicit ShellContentBrowserClient( 30 ShellBrowserMainDelegate* browser_main_delegate); 31 virtual ~ShellContentBrowserClient(); 32 33 // Returns the single instance. 34 static ShellContentBrowserClient* Get(); 35 36 // Returns the single browser context for app_shell. 37 content::BrowserContext* GetBrowserContext(); 38 39 // content::ContentBrowserClient overrides. 40 virtual content::BrowserMainParts* CreateBrowserMainParts( 41 const content::MainFunctionParams& parameters) OVERRIDE; 42 virtual void RenderProcessWillLaunch( 43 content::RenderProcessHost* host) OVERRIDE; 44 virtual bool ShouldUseProcessPerSite(content::BrowserContext* browser_context, 45 const GURL& effective_url) OVERRIDE; 46 virtual net::URLRequestContextGetter* CreateRequestContext( 47 content::BrowserContext* browser_context, 48 content::ProtocolHandlerMap* protocol_handlers, 49 content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 50 // TODO(jamescook): Quota management? 51 // TODO(jamescook): Speech recognition? 52 virtual bool IsHandledURL(const GURL& url) OVERRIDE; 53 virtual void SiteInstanceGotProcess( 54 content::SiteInstance* site_instance) OVERRIDE; 55 virtual void SiteInstanceDeleting( 56 content::SiteInstance* site_instance) OVERRIDE; 57 virtual void AppendExtraCommandLineSwitches(base::CommandLine* command_line, 58 int child_process_id) OVERRIDE; 59 virtual content::BrowserPpapiHost* GetExternalBrowserPpapiHost( 60 int plugin_process_id) OVERRIDE; 61 virtual void GetAdditionalAllowedSchemesForFileSystem( 62 std::vector<std::string>* additional_schemes) OVERRIDE; 63 virtual content::DevToolsManagerDelegate* 64 GetDevToolsManagerDelegate() OVERRIDE; 65 66 private: 67 // Appends command line switches for a renderer process. 68 void AppendRendererSwitches(base::CommandLine* command_line); 69 70 // Returns the extension or app associated with |site_instance| or NULL. 71 const Extension* GetExtension(content::SiteInstance* site_instance); 72 73 // Owned by content::BrowserMainLoop. 74 ShellBrowserMainParts* browser_main_parts_; 75 76 // Owned by ShellBrowserMainParts. 77 ShellBrowserMainDelegate* browser_main_delegate_; 78 79 DISALLOW_COPY_AND_ASSIGN(ShellContentBrowserClient); 80 }; 81 82 } // namespace extensions 83 84 #endif // EXTENSIONS_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_ 85