summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/web_socket_proxy_controller.cc
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-29 03:07:52 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-29 03:07:52 +0000
commitbe06d67c4742c12b2ad98bcfd7e0dbc74b627075 (patch)
tree8ea299a009a72a9520555f3f09f421f6974bb6d9 /chrome/browser/chromeos/web_socket_proxy_controller.cc
parent2094f18805eb060a1603dfe5b4523ac2a44a4529 (diff)
downloadchromium_src-be06d67c4742c12b2ad98bcfd7e0dbc74b627075.zip
chromium_src-be06d67c4742c12b2ad98bcfd7e0dbc74b627075.tar.gz
chromium_src-be06d67c4742c12b2ad98bcfd7e0dbc74b627075.tar.bz2
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
Diffstat (limited to 'chrome/browser/chromeos/web_socket_proxy_controller.cc')
-rw-r--r--chrome/browser/chromeos/web_socket_proxy_controller.cc70
1 files changed, 35 insertions, 35 deletions
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 <sys/wait.h>
#include <unistd.h>
+#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<OriginValidator> 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<ProxyLifetime> 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 {