Home | History | Annotate | Download | only in app
      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