From be06d67c4742c12b2ad98bcfd7e0dbc74b627075 Mon Sep 17 00:00:00 2001 From: "jhawkins@chromium.org" Date: Tue, 29 Nov 2011 03:07:52 +0000 Subject: base::Bind: Convert the following files. * automation_provider_win.cc * chrome_browser_main.cc * web_socket_proxy_controller.cc * cookie_policy_browsertest.cc * profile_sync_service_autofill_unittest.cc BUG=none TEST=none R=csilv@chromium.org Review URL: http://codereview.chromium.org/8727018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111850 0039d316-1c4b-4281-b951-d872f2087c98 --- .../chromeos/web_socket_proxy_controller.cc | 70 +++++++++++----------- 1 file changed, 35 insertions(+), 35 deletions(-) (limited to 'chrome/browser/chromeos/web_socket_proxy_controller.cc') diff --git a/chrome/browser/chromeos/web_socket_proxy_controller.cc b/chrome/browser/chromeos/web_socket_proxy_controller.cc index c431b7f..a9faa56 100644 --- a/chrome/browser/chromeos/web_socket_proxy_controller.cc +++ b/chrome/browser/chromeos/web_socket_proxy_controller.cc @@ -10,6 +10,8 @@ #include #include +#include "base/bind.h" +#include "base/bind_helpers.h" #include "base/command_line.h" #include "base/lazy_instance.h" #include "base/message_loop.h" @@ -98,10 +100,6 @@ class OriginValidator { base::LazyInstance g_validator = LAZY_INSTANCE_INITIALIZER; -class ProxyTask : public Task { - virtual void Run() OVERRIDE; -}; - class ProxyLifetime : public net::NetworkChangeNotifier::OnlineStateObserver, public content::NotificationObserver { @@ -109,7 +107,8 @@ class ProxyLifetime ProxyLifetime() : delay_ms_(1000), port_(-1), shutdown_requested_(false) { DLOG(INFO) << "WebSocketProxyController initiation"; BrowserThread::PostTask( - BrowserThread::WEB_SOCKET_PROXY, FROM_HERE, new ProxyTask()); + BrowserThread::WEB_SOCKET_PROXY, FROM_HERE, + base::Bind(&ProxyLifetime::ProxyCallback, base::Unretained(this))); net::NetworkChangeNotifier::AddOnlineStateObserver(this); registrar_.Add( this, chrome::NOTIFICATION_WEB_SOCKET_PROXY_STARTED, @@ -132,7 +131,7 @@ class ProxyLifetime } private: - // net::NetworkChangeNotifier::OnlineStateObserver overrides. + // net::NetworkChangeNotifier::OnlineStateObserver implementation. virtual void OnOnlineStateChanged(bool online) OVERRIDE { DCHECK(chromeos::WebSocketProxyController::IsInitiated()); base::AutoLock alk(lock_); @@ -140,6 +139,36 @@ class ProxyLifetime server_->OnNetworkChange(); } + void ProxyCallback() { + LOG(INFO) << "Attempt to run web socket proxy task"; + chromeos::WebSocketProxy* server = new chromeos::WebSocketProxy( + g_validator.Get().allowed_origins()); + { + base::AutoLock alk(lock_); + if (shutdown_requested_) + return; + delete server_; + server_ = server; + } + server->Run(); + { + base::AutoLock alk(lock_); + delete server; + server_ = NULL; + if (!shutdown_requested_) { + // Proxy terminated unexpectedly or failed to start (it can happen due + // to a network problem). Keep trying. + if (delay_ms_ < 100 * 1000) + (delay_ms_ *= 3) /= 2; + + BrowserThread::PostDelayedTask( + BrowserThread::WEB_SOCKET_PROXY, FROM_HERE, + base::Bind(&ProxyLifetime::ProxyCallback, base::Unretained(this)), + delay_ms_); + } + } + } + // Delay between next attempt to run proxy. int volatile delay_ms_; @@ -150,40 +179,11 @@ class ProxyLifetime volatile bool shutdown_requested_; base::Lock lock_; content::NotificationRegistrar registrar_; - friend class ProxyTask; friend class chromeos::WebSocketProxyController; }; base::LazyInstance g_proxy_lifetime = LAZY_INSTANCE_INITIALIZER; -void ProxyTask::Run() { - LOG(INFO) << "Attempt to run web socket proxy task"; - chromeos::WebSocketProxy* server = new chromeos::WebSocketProxy( - g_validator.Get().allowed_origins()); - { - base::AutoLock alk(g_proxy_lifetime.Get().lock_); - if (g_proxy_lifetime.Get().shutdown_requested_) - return; - delete g_proxy_lifetime.Get().server_; - g_proxy_lifetime.Get().server_ = server; - } - server->Run(); - { - base::AutoLock alk(g_proxy_lifetime.Get().lock_); - delete server; - g_proxy_lifetime.Get().server_ = NULL; - if (!g_proxy_lifetime.Get().shutdown_requested_) { - // Proxy terminated unexpectedly or failed to start (it can happen due to - // a network problem). Keep trying. - if (g_proxy_lifetime.Get().delay_ms_ < 100 * 1000) - (g_proxy_lifetime.Get().delay_ms_ *= 3) /= 2; - BrowserThread::PostDelayedTask( - BrowserThread::WEB_SOCKET_PROXY, FROM_HERE, new ProxyTask(), - g_proxy_lifetime.Get().delay_ms_); - } - } -} - } // namespace namespace chromeos { -- cgit v1.1