| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/browser/browser_process_impl.h" | 5 #include "chrome/browser/browser_process_impl.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 #endif | 110 #endif |
| 111 | 111 |
| 112 BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line) | 112 BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line) |
| 113 : created_resource_dispatcher_host_(false), | 113 : created_resource_dispatcher_host_(false), |
| 114 created_metrics_service_(false), | 114 created_metrics_service_(false), |
| 115 created_io_thread_(false), | 115 created_io_thread_(false), |
| 116 created_file_thread_(false), | 116 created_file_thread_(false), |
| 117 created_db_thread_(false), | 117 created_db_thread_(false), |
| 118 created_process_launcher_thread_(false), | 118 created_process_launcher_thread_(false), |
| 119 created_cache_thread_(false), | 119 created_cache_thread_(false), |
| 120 created_gpu_thread_(false), | |
| 121 created_watchdog_thread_(false), | 120 created_watchdog_thread_(false), |
| 122 #if defined(OS_CHROMEOS) | 121 #if defined(OS_CHROMEOS) |
| 123 created_web_socket_proxy_thread_(false), | 122 created_web_socket_proxy_thread_(false), |
| 124 #endif | 123 #endif |
| 125 created_profile_manager_(false), | 124 created_profile_manager_(false), |
| 126 created_local_state_(false), | 125 created_local_state_(false), |
| 127 created_icon_manager_(false), | 126 created_icon_manager_(false), |
| 128 created_devtools_manager_(false), | 127 created_devtools_manager_(false), |
| 129 created_sidebar_manager_(false), | 128 created_sidebar_manager_(false), |
| 130 created_browser_policy_connector_(false), | 129 created_browser_policy_connector_(false), |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 #endif | 232 #endif |
| 234 | 233 |
| 235 // Wait for removing plugin data to finish before shutting down the IO thread. | 234 // Wait for removing plugin data to finish before shutting down the IO thread. |
| 236 WaitForPluginDataRemoverToFinish(); | 235 WaitForPluginDataRemoverToFinish(); |
| 237 | 236 |
| 238 // Destroying the GpuProcessHostUIShims on the UI thread posts a task to | 237 // Destroying the GpuProcessHostUIShims on the UI thread posts a task to |
| 239 // delete related objects on the GPU thread. This must be done before | 238 // delete related objects on the GPU thread. This must be done before |
| 240 // stopping the GPU thread. The GPU thread will close IPC channels to renderer | 239 // stopping the GPU thread. The GPU thread will close IPC channels to renderer |
| 241 // processes so this has to happen before stopping the IO thread. | 240 // processes so this has to happen before stopping the IO thread. |
| 242 GpuProcessHostUIShim::DestroyAll(); | 241 GpuProcessHostUIShim::DestroyAll(); |
| 243 gpu_thread_.reset(); | |
| 244 | 242 |
| 245 // Need to stop io_thread_ before resource_dispatcher_host_, since | 243 // Need to stop io_thread_ before resource_dispatcher_host_, since |
| 246 // io_thread_ may still deref ResourceDispatcherHost and handle resource | 244 // io_thread_ may still deref ResourceDispatcherHost and handle resource |
| 247 // request before going away. | 245 // request before going away. |
| 248 io_thread_.reset(); | 246 io_thread_.reset(); |
| 249 | 247 |
| 250 // The IO thread was the only user of this thread. | 248 // The IO thread was the only user of this thread. |
| 251 cache_thread_.reset(); | 249 cache_thread_.reset(); |
| 252 | 250 |
| 253 // Stop the process launcher thread after the IO thread, in case the IO thread | 251 // Stop the process launcher thread after the IO thread, in case the IO thread |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 return process_launcher_thread_.get(); | 416 return process_launcher_thread_.get(); |
| 419 } | 417 } |
| 420 | 418 |
| 421 base::Thread* BrowserProcessImpl::cache_thread() { | 419 base::Thread* BrowserProcessImpl::cache_thread() { |
| 422 DCHECK(CalledOnValidThread()); | 420 DCHECK(CalledOnValidThread()); |
| 423 if (!created_cache_thread_) | 421 if (!created_cache_thread_) |
| 424 CreateCacheThread(); | 422 CreateCacheThread(); |
| 425 return cache_thread_.get(); | 423 return cache_thread_.get(); |
| 426 } | 424 } |
| 427 | 425 |
| 428 base::Thread* BrowserProcessImpl::gpu_thread() { | |
| 429 DCHECK(CalledOnValidThread()); | |
| 430 if (!created_gpu_thread_) | |
| 431 CreateGpuThread(); | |
| 432 return gpu_thread_.get(); | |
| 433 } | |
| 434 | |
| 435 #if defined(USE_X11) | 426 #if defined(USE_X11) |
| 436 base::Thread* BrowserProcessImpl::background_x11_thread() { | 427 base::Thread* BrowserProcessImpl::background_x11_thread() { |
| 437 DCHECK(CalledOnValidThread()); | 428 DCHECK(CalledOnValidThread()); |
| 438 // The BACKGROUND_X11 thread is created when the IO thread is created. | 429 // The BACKGROUND_X11 thread is created when the IO thread is created. |
| 439 if (!created_io_thread_) | 430 if (!created_io_thread_) |
| 440 CreateIOThread(); | 431 CreateIOThread(); |
| 441 return background_x11_thread_.get(); | 432 return background_x11_thread_.get(); |
| 442 } | 433 } |
| 443 #endif | 434 #endif |
| 444 | 435 |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 856 | 847 |
| 857 scoped_ptr<base::Thread> thread( | 848 scoped_ptr<base::Thread> thread( |
| 858 new BrowserThread(BrowserThread::CACHE)); | 849 new BrowserThread(BrowserThread::CACHE)); |
| 859 base::Thread::Options options; | 850 base::Thread::Options options; |
| 860 options.message_loop_type = MessageLoop::TYPE_IO; | 851 options.message_loop_type = MessageLoop::TYPE_IO; |
| 861 if (!thread->StartWithOptions(options)) | 852 if (!thread->StartWithOptions(options)) |
| 862 return; | 853 return; |
| 863 cache_thread_.swap(thread); | 854 cache_thread_.swap(thread); |
| 864 } | 855 } |
| 865 | 856 |
| 866 void BrowserProcessImpl::CreateGpuThread() { | |
| 867 DCHECK(!created_gpu_thread_ && !gpu_thread_.get()); | |
| 868 created_gpu_thread_ = true; | |
| 869 | |
| 870 scoped_ptr<base::Thread> thread(new BrowserThread(BrowserThread::GPU)); | |
| 871 | |
| 872 base::Thread::Options options; | |
| 873 #if defined(OS_WIN) | |
| 874 // On Windows the GPU thread needs to pump the compositor child window's | |
| 875 // message loop. TODO(apatrick): make this an IO thread if / when we get rid | |
| 876 // of this child window. Unfortunately it might always be necessary for | |
| 877 // Windows XP because we cannot share the backing store textures between | |
| 878 // processes. | |
| 879 options.message_loop_type = MessageLoop::TYPE_UI; | |
| 880 #else | |
| 881 options.message_loop_type = MessageLoop::TYPE_IO; | |
| 882 #endif | |
| 883 | |
| 884 if (!thread->StartWithOptions(options)) | |
| 885 return; | |
| 886 gpu_thread_.swap(thread); | |
| 887 } | |
| 888 | |
| 889 void BrowserProcessImpl::CreateWatchdogThread() { | 857 void BrowserProcessImpl::CreateWatchdogThread() { |
| 890 DCHECK(!created_watchdog_thread_ && watchdog_thread_.get() == NULL); | 858 DCHECK(!created_watchdog_thread_ && watchdog_thread_.get() == NULL); |
| 891 created_watchdog_thread_ = true; | 859 created_watchdog_thread_ = true; |
| 892 | 860 |
| 893 scoped_ptr<WatchDogThread> thread(new WatchDogThread()); | 861 scoped_ptr<WatchDogThread> thread(new WatchDogThread()); |
| 894 if (!thread->Start()) | 862 if (!thread->Start()) |
| 895 return; | 863 return; |
| 896 watchdog_thread_.swap(thread); | 864 watchdog_thread_.swap(thread); |
| 897 } | 865 } |
| 898 | 866 |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1143 } | 1111 } |
| 1144 | 1112 |
| 1145 void BrowserProcessImpl::OnAutoupdateTimer() { | 1113 void BrowserProcessImpl::OnAutoupdateTimer() { |
| 1146 if (CanAutorestartForUpdate()) { | 1114 if (CanAutorestartForUpdate()) { |
| 1147 DLOG(WARNING) << "Detected update. Restarting browser."; | 1115 DLOG(WARNING) << "Detected update. Restarting browser."; |
| 1148 RestartPersistentInstance(); | 1116 RestartPersistentInstance(); |
| 1149 } | 1117 } |
| 1150 } | 1118 } |
| 1151 | 1119 |
| 1152 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) | 1120 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
| OLD | NEW |