diff options
Diffstat (limited to 'chrome/browser/browser_process_impl.cc')
-rw-r--r-- | chrome/browser/browser_process_impl.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc index f1b30a5..f2c276e 100644 --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc @@ -88,6 +88,7 @@ #if defined(OS_CHROMEOS) #include "chrome/browser/chromeos/proxy_config_service_impl.h" +#include "chrome/browser/chromeos/web_socket_proxy_controller.h" #endif // defined(OS_CHROMEOS) #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) @@ -113,6 +114,9 @@ BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line) created_cache_thread_(false), created_gpu_thread_(false), created_watchdog_thread_(false), +#if defined(OS_CHROMEOS) + created_web_socket_proxy_thread_(false), +#endif created_profile_manager_(false), created_local_state_(false), created_icon_manager_(false), @@ -152,6 +156,12 @@ BrowserProcessImpl::~BrowserProcessImpl() { // Store the profile path for clearing local state data on exit. clear_local_state_on_exit = ShouldClearLocalState(&profile_path); +#if defined(OS_CHROMEOS) + if (web_socket_proxy_thread_.get()) + chromeos::WebSocketProxyController::Shutdown(); + web_socket_proxy_thread_.reset(); +#endif + // Delete the AutomationProviderList before NotificationService, // since it may try to unregister notifications // Both NotificationService and AutomationProvider are singleton instances in @@ -435,6 +445,16 @@ WatchDogThread* BrowserProcessImpl::watchdog_thread() { return watchdog_thread_.get(); } +#if defined(OS_CHROMEOS) +base::Thread* BrowserProcessImpl::web_socket_proxy_thread() { + DCHECK(CalledOnValidThread()); + if (!created_web_socket_proxy_thread_) + CreateWebSocketProxyThread(); + DCHECK(web_socket_proxy_thread_.get() != NULL); + return web_socket_proxy_thread_.get(); +} +#endif + ProfileManager* BrowserProcessImpl::profile_manager() { DCHECK(CalledOnValidThread()); if (!created_profile_manager_) @@ -763,6 +783,22 @@ void BrowserProcessImpl::CreateFileThread() { file_thread_.swap(thread); } +#if defined(OS_CHROMEOS) +void BrowserProcessImpl::CreateWebSocketProxyThread() { + DCHECK(!created_web_socket_proxy_thread_); + DCHECK(web_socket_proxy_thread_.get() == NULL); + created_web_socket_proxy_thread_ = true; + + scoped_ptr<base::Thread> thread( + new BrowserProcessSubThread(BrowserThread::WEB_SOCKET_PROXY)); + base::Thread::Options options; + options.message_loop_type = MessageLoop::TYPE_IO; + if (!thread->StartWithOptions(options)) + return; + web_socket_proxy_thread_.swap(thread); +} +#endif + void BrowserProcessImpl::CreateDBThread() { DCHECK(!created_db_thread_ && db_thread_.get() == NULL); created_db_thread_ = true; |