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_APP_SHELL_MAIN_DELEGATE_H_ 6 #define APPS_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 12 namespace content { 13 class BrowserContext; 14 class ContentBrowserClient; 15 class ContentClient; 16 class ContentRendererClient; 17 } 18 19 namespace apps { 20 class ShellBrowserMainDelegate; 21 class ShellRendererMainDelegate; 22 23 class 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 ShellBrowserMainParts. 37 virtual ShellBrowserMainDelegate* CreateShellBrowserMainDelegate(); 38 39 // The returned object is owned by ShellContentRendererClient. 40 virtual scoped_ptr<ShellRendererMainDelegate> 41 CreateShellRendererMainDelegate(); 42 43 private: 44 // |process_type| is zygote, renderer, utility, etc. Returns true if the 45 // process needs data from resources.pak. 46 static bool ProcessNeedsResourceBundle(const std::string& process_type); 47 48 // Initializes the resource bundle and resources.pak. 49 static void InitializeResourceBundle(); 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 apps 59 60 #endif // APPS_SHELL_APP_SHELL_MAIN_DELEGATE_H_ 61