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