summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browser_process_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/browser_process_impl.cc')
-rw-r--r--chrome/browser/browser_process_impl.cc36
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;