15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef EXTENSIONS_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define EXTENSIONS_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/compiler_specific.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/public/browser/content_browser_client.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class GURL; 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace base { 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class CommandLine; 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace content { 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass BrowserContext; 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 20c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace extensions { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class Extension; 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ShellBrowserMainDelegate; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ShellBrowserMainParts; 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Content module browser process support for app_shell. 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ShellContentBrowserClient : public content::ContentBrowserClient { 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) explicit ShellContentBrowserClient( 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ShellBrowserMainDelegate* browser_main_delegate); 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~ShellContentBrowserClient(); 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Returns the single instance. 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch static ShellContentBrowserClient* Get(); 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Returns the single browser context for app_shell. 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch content::BrowserContext* GetBrowserContext(); 38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // content::ContentBrowserClient overrides. 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual content::BrowserMainParts* CreateBrowserMainParts( 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const content::MainFunctionParams& parameters) OVERRIDE; 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void RenderProcessWillLaunch( 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::RenderProcessHost* host) OVERRIDE; 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool ShouldUseProcessPerSite(content::BrowserContext* browser_context, 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const GURL& effective_url) OVERRIDE; 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContext( 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::BrowserContext* browser_context, 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(jamescook): Quota management? 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // TODO(jamescook): Speech recognition? 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool IsHandledURL(const GURL& url) OVERRIDE; 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void SiteInstanceGotProcess( 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::SiteInstance* site_instance) OVERRIDE; 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void SiteInstanceDeleting( 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::SiteInstance* site_instance) OVERRIDE; 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void AppendExtraCommandLineSwitches(base::CommandLine* command_line, 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int child_process_id) OVERRIDE; 5903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual content::BrowserPpapiHost* GetExternalBrowserPpapiHost( 6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) int plugin_process_id) OVERRIDE; 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void GetAdditionalAllowedSchemesForFileSystem( 62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::string>* additional_schemes) OVERRIDE; 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual content::DevToolsManagerDelegate* 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetDevToolsManagerDelegate() OVERRIDE; 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 6703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Appends command line switches for a renderer process. 6803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void AppendRendererSwitches(base::CommandLine* command_line); 6903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns the extension or app associated with |site_instance| or NULL. 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const Extension* GetExtension(content::SiteInstance* site_instance); 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Owned by content::BrowserMainLoop. 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ShellBrowserMainParts* browser_main_parts_; 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Owned by ShellBrowserMainParts. 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ShellBrowserMainDelegate* browser_main_delegate_; 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ShellContentBrowserClient); 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace extensions 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // EXTENSIONS_SHELL_BROWSER_SHELL_CONTENT_BROWSER_CLIENT_H_ 85