| 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 "content/browser/browser_main_loop.h" | 5 #include "content/browser/browser_main_loop.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 #include "content/browser/screen_orientation/screen_orientation_delegate_android
.h" | 91 #include "content/browser/screen_orientation/screen_orientation_delegate_android
.h" |
| 92 #include "content/public/browser/screen_orientation_provider.h" | 92 #include "content/public/browser/screen_orientation_provider.h" |
| 93 #include "ui/gl/gl_surface.h" | 93 #include "ui/gl/gl_surface.h" |
| 94 #endif | 94 #endif |
| 95 | 95 |
| 96 #if defined(OS_MACOSX) | 96 #if defined(OS_MACOSX) |
| 97 #include "media/base/mac/avfoundation_glue.h" | 97 #include "media/base/mac/avfoundation_glue.h" |
| 98 #endif | 98 #endif |
| 99 | 99 |
| 100 #if defined(OS_MACOSX) && !defined(OS_IOS) | 100 #if defined(OS_MACOSX) && !defined(OS_IOS) |
| 101 #include "base/memory/memory_pressure_monitor_mac.h" | |
| 102 #include "content/browser/bootstrap_sandbox_mac.h" | 101 #include "content/browser/bootstrap_sandbox_mac.h" |
| 103 #include "content/browser/browser_io_surface_manager_mac.h" | 102 #include "content/browser/browser_io_surface_manager_mac.h" |
| 104 #include "content/browser/cocoa/system_hotkey_helper_mac.h" | 103 #include "content/browser/cocoa/system_hotkey_helper_mac.h" |
| 105 #include "content/browser/compositor/browser_compositor_view_mac.h" | 104 #include "content/browser/compositor/browser_compositor_view_mac.h" |
| 106 #include "content/browser/in_process_io_surface_manager_mac.h" | 105 #include "content/browser/in_process_io_surface_manager_mac.h" |
| 107 #include "content/browser/theme_helper_mac.h" | 106 #include "content/browser/theme_helper_mac.h" |
| 108 #endif | 107 #endif |
| 109 | 108 |
| 110 #if defined(OS_WIN) | 109 #if defined(OS_WIN) |
| 111 #include <windows.h> | 110 #include <windows.h> |
| 112 #include <commctrl.h> | 111 #include <commctrl.h> |
| 113 #include <shellapi.h> | 112 #include <shellapi.h> |
| 114 | 113 |
| 115 #include "base/memory/memory_pressure_monitor_win.h" | |
| 116 #include "content/browser/system_message_window_win.h" | 114 #include "content/browser/system_message_window_win.h" |
| 117 #include "content/common/sandbox_win.h" | 115 #include "content/common/sandbox_win.h" |
| 118 #include "net/base/winsock_init.h" | 116 #include "net/base/winsock_init.h" |
| 119 #include "ui/base/l10n/l10n_util_win.h" | 117 #include "ui/base/l10n/l10n_util_win.h" |
| 120 #endif | 118 #endif |
| 121 | 119 |
| 122 #if defined(OS_CHROMEOS) | 120 #if defined(OS_CHROMEOS) |
| 123 #include "base/memory/memory_pressure_monitor_chromeos.h" | |
| 124 #include "chromeos/chromeos_switches.h" | 121 #include "chromeos/chromeos_switches.h" |
| 125 #endif | 122 #endif |
| 126 | 123 |
| 127 #if defined(USE_GLIB) | 124 #if defined(USE_GLIB) |
| 128 #include <glib-object.h> | 125 #include <glib-object.h> |
| 129 #endif | 126 #endif |
| 130 | 127 |
| 131 #if defined(OS_LINUX) && defined(USE_UDEV) | 128 #if defined(OS_LINUX) && defined(USE_UDEV) |
| 132 #include "content/browser/device_monitor_udev.h" | 129 #include "content/browser/device_monitor_udev.h" |
| 133 #elif defined(OS_MACOSX) && !defined(OS_IOS) | 130 #elif defined(OS_MACOSX) && !defined(OS_IOS) |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 ',', | 322 ',', |
| 326 &thresholds); | 323 &thresholds); |
| 327 | 324 |
| 328 int moderate_threshold_mb = 0; | 325 int moderate_threshold_mb = 0; |
| 329 int critical_threshold_mb = 0; | 326 int critical_threshold_mb = 0; |
| 330 if (thresholds.size() == 2 && | 327 if (thresholds.size() == 2 && |
| 331 base::StringToInt(thresholds[0], &moderate_threshold_mb) && | 328 base::StringToInt(thresholds[0], &moderate_threshold_mb) && |
| 332 base::StringToInt(thresholds[1], &critical_threshold_mb) && | 329 base::StringToInt(thresholds[1], &critical_threshold_mb) && |
| 333 moderate_threshold_mb >= critical_threshold_mb && | 330 moderate_threshold_mb >= critical_threshold_mb && |
| 334 critical_threshold_mb >= 0) { | 331 critical_threshold_mb >= 0) { |
| 335 return new base::win::MemoryPressureMonitor(moderate_threshold_mb, | 332 return new base::MemoryPressureMonitor(moderate_threshold_mb, |
| 336 critical_threshold_mb); | 333 critical_threshold_mb); |
| 337 } | 334 } |
| 338 | 335 |
| 339 // In absence of valid switches use the automatic defaults. | 336 // In absence of valid switches use the automatic defaults. |
| 340 return new base::win::MemoryPressureMonitor(); | 337 return new base::MemoryPressureMonitor(); |
| 341 } | 338 } |
| 342 #endif // defined(OS_WIN) | 339 #endif // defined(OS_WIN) |
| 343 | 340 |
| 344 } // namespace | 341 } // namespace |
| 345 | 342 |
| 346 // The currently-running BrowserMainLoop. There can be one or zero. | 343 // The currently-running BrowserMainLoop. There can be one or zero. |
| 347 BrowserMainLoop* g_current_browser_main_loop = NULL; | 344 BrowserMainLoop* g_current_browser_main_loop = NULL; |
| 348 | 345 |
| 349 // For measuring memory usage after each task. Behind a command line flag. | 346 // For measuring memory usage after each task. Behind a command line flag. |
| 350 class BrowserMainLoop::MemoryObserver : public base::MessageLoop::TaskObserver { | 347 class BrowserMainLoop::MemoryObserver : public base::MessageLoop::TaskObserver { |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 "BrowserMainLoop::CreateThreads:PreCreateThreads"); | 651 "BrowserMainLoop::CreateThreads:PreCreateThreads"); |
| 655 TRACK_SCOPED_REGION("Startup", "BrowserMainLoop::PreCreateThreads"); | 652 TRACK_SCOPED_REGION("Startup", "BrowserMainLoop::PreCreateThreads"); |
| 656 | 653 |
| 657 result_code_ = parts_->PreCreateThreads(); | 654 result_code_ = parts_->PreCreateThreads(); |
| 658 } | 655 } |
| 659 | 656 |
| 660 // TODO(chrisha): Abstract away this construction mess to a helper function, | 657 // TODO(chrisha): Abstract away this construction mess to a helper function, |
| 661 // once MemoryPressureMonitor is made a concrete class. | 658 // once MemoryPressureMonitor is made a concrete class. |
| 662 #if defined(OS_CHROMEOS) | 659 #if defined(OS_CHROMEOS) |
| 663 if (chromeos::switches::MemoryPressureHandlingEnabled()) { | 660 if (chromeos::switches::MemoryPressureHandlingEnabled()) { |
| 664 memory_pressure_monitor_.reset(new base::chromeos::MemoryPressureMonitor( | 661 memory_pressure_monitor_.reset(new base::MemoryPressureMonitor( |
| 665 chromeos::switches::GetMemoryPressureThresholds())); | 662 chromeos::switches::GetMemoryPressureThresholds())); |
| 666 } | 663 } |
| 667 #elif defined(OS_MACOSX) && !defined(OS_IOS) | 664 #elif defined(OS_LINUX) || (defined(OS_MACOSX) && !defined(OS_IOS)) |
| 668 memory_pressure_monitor_.reset(new base::mac::MemoryPressureMonitor()); | 665 memory_pressure_monitor_.reset(new base::MemoryPressureMonitor()); |
| 669 #elif defined(OS_WIN) | 666 #elif defined(OS_WIN) |
| 670 memory_pressure_monitor_.reset(CreateWinMemoryPressureMonitor( | 667 memory_pressure_monitor_.reset(CreateWinMemoryPressureMonitor( |
| 671 parsed_command_line_)); | 668 parsed_command_line_)); |
| 672 #endif | 669 #endif |
| 673 | 670 |
| 674 #if defined(ENABLE_PLUGINS) | 671 #if defined(ENABLE_PLUGINS) |
| 675 // Prior to any processing happening on the io thread, we create the | 672 // Prior to any processing happening on the io thread, we create the |
| 676 // plugin service as it is predominantly used from the io thread, | 673 // plugin service as it is predominantly used from the io thread, |
| 677 // but must be created on the main thread. The service ctor is | 674 // but must be created on the main thread. The service ctor is |
| 678 // inexpensive and does not invoke the io_thread() accessor. | 675 // inexpensive and does not invoke the io_thread() accessor. |
| (...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 DCHECK(is_tracing_startup_); | 1342 DCHECK(is_tracing_startup_); |
| 1346 | 1343 |
| 1347 is_tracing_startup_ = false; | 1344 is_tracing_startup_ = false; |
| 1348 TracingController::GetInstance()->DisableRecording( | 1345 TracingController::GetInstance()->DisableRecording( |
| 1349 TracingController::CreateFileSink( | 1346 TracingController::CreateFileSink( |
| 1350 startup_trace_file_, | 1347 startup_trace_file_, |
| 1351 base::Bind(OnStoppedStartupTracing, startup_trace_file_))); | 1348 base::Bind(OnStoppedStartupTracing, startup_trace_file_))); |
| 1352 } | 1349 } |
| 1353 | 1350 |
| 1354 } // namespace content | 1351 } // namespace content |
| OLD | NEW |