| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/app/chrome_main_delegate.h" | 5 #include "chrome/app/chrome_main_delegate.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/metrics/stats_counters.h" | 10 #include "base/metrics/stats_counters.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 #if defined(USE_X11) | 86 #if defined(USE_X11) |
| 87 #include <stdlib.h> | 87 #include <stdlib.h> |
| 88 #include <string.h> | 88 #include <string.h> |
| 89 #include "ui/base/x/x11_util.h" | 89 #include "ui/base/x/x11_util.h" |
| 90 #endif | 90 #endif |
| 91 | 91 |
| 92 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 92 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 93 #include "chrome/app/breakpad_linux.h" | 93 #include "chrome/app/breakpad_linux.h" |
| 94 #endif | 94 #endif |
| 95 | 95 |
| 96 #if !defined(CHROME_MULTIPLE_DLL) || defined(CHROME_MULTIPLE_DLL_BROWSER) |
| 96 base::LazyInstance<chrome::ChromeContentBrowserClient> | 97 base::LazyInstance<chrome::ChromeContentBrowserClient> |
| 97 g_chrome_content_browser_client = LAZY_INSTANCE_INITIALIZER; | 98 g_chrome_content_browser_client = LAZY_INSTANCE_INITIALIZER; |
| 99 #endif |
| 100 |
| 101 #if !defined(CHROME_MULTIPLE_DLL) || defined(CHROME_MULTIPLE_DLL_CHILD) |
| 98 base::LazyInstance<chrome::ChromeContentRendererClient> | 102 base::LazyInstance<chrome::ChromeContentRendererClient> |
| 99 g_chrome_content_renderer_client = LAZY_INSTANCE_INITIALIZER; | 103 g_chrome_content_renderer_client = LAZY_INSTANCE_INITIALIZER; |
| 100 base::LazyInstance<chrome::ChromeContentUtilityClient> | 104 base::LazyInstance<chrome::ChromeContentUtilityClient> |
| 101 g_chrome_content_utility_client = LAZY_INSTANCE_INITIALIZER; | 105 g_chrome_content_utility_client = LAZY_INSTANCE_INITIALIZER; |
| 102 base::LazyInstance<chrome::ChromeContentPluginClient> | 106 base::LazyInstance<chrome::ChromeContentPluginClient> |
| 103 g_chrome_content_plugin_client = LAZY_INSTANCE_INITIALIZER; | 107 g_chrome_content_plugin_client = LAZY_INSTANCE_INITIALIZER; |
| 108 #endif // !CHROME_MULTIPLE_DLL || CHROME_MULTIPLE_DLL_CHILD |
| 104 | 109 |
| 105 #if defined(OS_POSIX) | 110 #if defined(OS_POSIX) |
| 106 base::LazyInstance<chrome::ChromeBreakpadClient>::Leaky | 111 base::LazyInstance<chrome::ChromeBreakpadClient>::Leaky |
| 107 g_chrome_breakpad_client = LAZY_INSTANCE_INITIALIZER; | 112 g_chrome_breakpad_client = LAZY_INSTANCE_INITIALIZER; |
| 108 #endif | 113 #endif |
| 109 | 114 |
| 110 extern int NaClMain(const content::MainFunctionParams&); | 115 extern int NaClMain(const content::MainFunctionParams&); |
| 111 extern int ServiceProcessMain(const content::MainFunctionParams&); | 116 extern int ServiceProcessMain(const content::MainFunctionParams&); |
| 112 | 117 |
| 113 namespace { | 118 namespace { |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 #if !defined(DISABLE_NACL) && defined(OS_LINUX) | 386 #if !defined(DISABLE_NACL) && defined(OS_LINUX) |
| 382 nacl::RegisterPathProvider(); | 387 nacl::RegisterPathProvider(); |
| 383 #endif | 388 #endif |
| 384 | 389 |
| 385 // No support for ANDROID yet as DiagnosticsController needs wchar support. | 390 // No support for ANDROID yet as DiagnosticsController needs wchar support. |
| 386 // TODO(gspencer): That's not true anymore, or at least there are no w-string | 391 // TODO(gspencer): That's not true anymore, or at least there are no w-string |
| 387 // references anymore. Not sure if that means this can be enabled on Android or | 392 // references anymore. Not sure if that means this can be enabled on Android or |
| 388 // not though: it still uses string16. As there is no easily accessible command | 393 // not though: it still uses string16. As there is no easily accessible command |
| 389 // line on Android, I'm not sure this is a big deal, at least for purposes of | 394 // line on Android, I'm not sure this is a big deal, at least for purposes of |
| 390 // troubleshooting with a customer. | 395 // troubleshooting with a customer. |
| 391 #if !defined(OS_ANDROID) | 396 #if !defined(OS_ANDROID) && !defined(CHROME_MULTIPLE_DLL_CHILD) |
| 392 // If we are in diagnostics mode this is the end of the line: after the | 397 // If we are in diagnostics mode this is the end of the line: after the |
| 393 // diagnostics are run the process will invariably exit. | 398 // diagnostics are run the process will invariably exit. |
| 394 if (command_line.HasSwitch(switches::kDiagnostics)) { | 399 if (command_line.HasSwitch(switches::kDiagnostics)) { |
| 395 diagnostics::DiagnosticsWriter::FormatType format = | 400 diagnostics::DiagnosticsWriter::FormatType format = |
| 396 diagnostics::DiagnosticsWriter::HUMAN; | 401 diagnostics::DiagnosticsWriter::HUMAN; |
| 397 if (command_line.HasSwitch(switches::kDiagnosticsFormat)) { | 402 if (command_line.HasSwitch(switches::kDiagnosticsFormat)) { |
| 398 std::string format_str = | 403 std::string format_str = |
| 399 command_line.GetSwitchValueASCII(switches::kDiagnosticsFormat); | 404 command_line.GetSwitchValueASCII(switches::kDiagnosticsFormat); |
| 400 if (format_str == "machine") { | 405 if (format_str == "machine") { |
| 401 format = diagnostics::DiagnosticsWriter::MACHINE; | 406 format = diagnostics::DiagnosticsWriter::MACHINE; |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 666 #if defined(OS_WIN) | 671 #if defined(OS_WIN) |
| 667 SuppressWindowsErrorDialogs(); | 672 SuppressWindowsErrorDialogs(); |
| 668 #endif | 673 #endif |
| 669 } | 674 } |
| 670 | 675 |
| 671 int ChromeMainDelegate::RunProcess( | 676 int ChromeMainDelegate::RunProcess( |
| 672 const std::string& process_type, | 677 const std::string& process_type, |
| 673 const content::MainFunctionParams& main_function_params) { | 678 const content::MainFunctionParams& main_function_params) { |
| 674 // ANDROID doesn't support "service", so no ServiceProcessMain, and arraysize | 679 // ANDROID doesn't support "service", so no ServiceProcessMain, and arraysize |
| 675 // doesn't support empty array. So we comment out the block for Android. | 680 // doesn't support empty array. So we comment out the block for Android. |
| 676 #if !defined(OS_ANDROID) | 681 #if !defined(OS_ANDROID) && \ |
| 682 (!defined(CHROME_MULTIPLE_DLL) || defined(CHROME_MULTIPLE_DLL_BROWSER)) |
| 677 static const MainFunction kMainFunctions[] = { | 683 static const MainFunction kMainFunctions[] = { |
| 678 { switches::kServiceProcess, ServiceProcessMain }, | 684 { switches::kServiceProcess, ServiceProcessMain }, |
| 679 #if defined(OS_MACOSX) | 685 #if defined(OS_MACOSX) |
| 680 { switches::kRelauncherProcess, | 686 { switches::kRelauncherProcess, |
| 681 mac_relauncher::internal::RelauncherMain }, | 687 mac_relauncher::internal::RelauncherMain }, |
| 682 #endif | 688 #endif |
| 683 // TODO(scottmg): http://crbug.com/237249 NaCl -> child. | 689 |
| 684 #if !defined(DISABLE_NACL) | 690 #if !defined(DISABLE_NACL) && \ |
| 691 (!defined(CHROME_MULTIPLE_DLL) || defined(CHROME_MULTIPLE_DLL_CHILD)) |
| 685 { switches::kNaClLoaderProcess, NaClMain }, | 692 { switches::kNaClLoaderProcess, NaClMain }, |
| 686 #endif // DISABLE_NACL | 693 #endif // DISABLE_NACL |
| 687 }; | 694 }; |
| 688 | 695 |
| 689 for (size_t i = 0; i < arraysize(kMainFunctions); ++i) { | 696 for (size_t i = 0; i < arraysize(kMainFunctions); ++i) { |
| 690 if (process_type == kMainFunctions[i].name) | 697 if (process_type == kMainFunctions[i].name) |
| 691 return kMainFunctions[i].function(main_function_params); | 698 return kMainFunctions[i].function(main_function_params); |
| 692 } | 699 } |
| 693 #endif | 700 #endif |
| 694 | 701 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 743 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 750 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 744 // Needs to be called after we have chrome::DIR_USER_DATA. BrowserMain sets | 751 // Needs to be called after we have chrome::DIR_USER_DATA. BrowserMain sets |
| 745 // this up for the browser process in a different manner. | 752 // this up for the browser process in a different manner. |
| 746 InitCrashReporter(); | 753 InitCrashReporter(); |
| 747 #endif | 754 #endif |
| 748 } | 755 } |
| 749 | 756 |
| 750 #endif // OS_MACOSX | 757 #endif // OS_MACOSX |
| 751 | 758 |
| 752 content::ContentBrowserClient* | 759 content::ContentBrowserClient* |
| 753 ChromeMainDelegate::CreateContentBrowserClient() { | 760 ChromeMainDelegate::CreateContentBrowserClient() { |
| 761 #if defined(CHROME_MULTIPLE_DLL_CHILD) |
| 762 return NULL; |
| 763 #else |
| 754 return &g_chrome_content_browser_client.Get(); | 764 return &g_chrome_content_browser_client.Get(); |
| 765 #endif |
| 755 } | 766 } |
| 756 | 767 |
| 757 content::ContentPluginClient* ChromeMainDelegate::CreateContentPluginClient() { | 768 content::ContentPluginClient* ChromeMainDelegate::CreateContentPluginClient() { |
| 758 // TODO(scottmg): http://crbug.com/237249 This will have to be split out into | 769 #if defined(CHROME_MULTIPLE_DLL_BROWSER) |
| 759 // browser and child parts. | 770 return NULL; |
| 771 #else |
| 760 return &g_chrome_content_plugin_client.Get(); | 772 return &g_chrome_content_plugin_client.Get(); |
| 773 #endif |
| 761 } | 774 } |
| 762 | 775 |
| 763 content::ContentRendererClient* | 776 content::ContentRendererClient* |
| 764 ChromeMainDelegate::CreateContentRendererClient() { | 777 ChromeMainDelegate::CreateContentRendererClient() { |
| 778 #if defined(CHROME_MULTIPLE_DLL_BROWSER) |
| 779 return NULL; |
| 780 #else |
| 765 return &g_chrome_content_renderer_client.Get(); | 781 return &g_chrome_content_renderer_client.Get(); |
| 782 #endif |
| 766 } | 783 } |
| 767 | 784 |
| 768 content::ContentUtilityClient* | 785 content::ContentUtilityClient* |
| 769 ChromeMainDelegate::CreateContentUtilityClient() { | 786 ChromeMainDelegate::CreateContentUtilityClient() { |
| 787 #if defined(CHROME_MULTIPLE_DLL_BROWSER) |
| 788 return NULL; |
| 789 #else |
| 770 return &g_chrome_content_utility_client.Get(); | 790 return &g_chrome_content_utility_client.Get(); |
| 791 #endif |
| 771 } | 792 } |
| OLD | NEW |