1 // Copyright (c) 2012 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 #include "content/public/app/content_main.h" 6 #include "content/shell/app/shell_main_delegate.h" 7 8 #if defined(OS_WIN) 9 #include "content/public/app/startup_helper_win.h" 10 #include "sandbox/win/src/sandbox_types.h" 11 #endif 12 13 #if defined(OS_MACOSX) 14 #include "content/shell/app/shell_content_main.h" 15 #endif 16 17 #if defined(OS_WIN) 18 19 #if !defined(ADDRESS_SANITIZER) 20 int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, wchar_t*, int) { 21 #else 22 // The AddressSanitizer build should be a console program as it prints out stuff 23 // on stderr. 24 int main() { 25 HINSTANCE instance = GetModuleHandle(NULL); 26 #endif 27 sandbox::SandboxInterfaceInfo sandbox_info = {0}; 28 content::InitializeSandboxInfo(&sandbox_info); 29 content::ShellMainDelegate delegate; 30 31 content::ContentMainParams params(&delegate); 32 params.instance = instance; 33 params.sandbox_info = &sandbox_info; 34 return content::ContentMain(params); 35 } 36 37 #else 38 39 int main(int argc, const char** argv) { 40 #if defined(OS_MACOSX) 41 // Do the delegate work in shell_content_main to avoid having to export the 42 // delegate types. 43 return ::ContentMain(argc, argv); 44 #else 45 content::ShellMainDelegate delegate; 46 content::ContentMainParams params(&delegate); 47 params.argc = argc; 48 params.argv = argv; 49 return content::ContentMain(params); 50 #endif // OS_MACOSX 51 } 52 53 #endif // OS_POSIX 54