Commit 4f5cd50a authored by jhawkins@chromium.org's avatar jhawkins@chromium.org

base::Bind: Convert ServiceProcessControl::CloudPrintProxyInfoHandler.

BUG=none
TEST=none

R=csilv@chromium.org

Review URL: http://codereview.chromium.org/8403015

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107523 0039d316-1c4b-4281-b951-d872f2087c98
parent a6e77be9
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <vector> #include <vector>
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/utf_string_conversions.h" #include "base/utf_string_conversions.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/notifications/desktop_notification_service.h" #include "chrome/browser/notifications/desktop_notification_service.h"
...@@ -152,15 +153,16 @@ void CloudPrintProxyService::TokenExpiredNotificationDone(bool keep_alive) { ...@@ -152,15 +153,16 @@ void CloudPrintProxyService::TokenExpiredNotificationDone(bool keep_alive) {
void CloudPrintProxyService::OnCloudPrintSetupClosed() { void CloudPrintProxyService::OnCloudPrintSetupClosed() {
MessageLoop::current()->PostTask( MessageLoop::current()->PostTask(
FROM_HERE, NewRunnableFunction(&BrowserList::EndKeepAlive)); FROM_HERE, base::Bind(&BrowserList::EndKeepAlive));
} }
void CloudPrintProxyService::RefreshCloudPrintProxyStatus() { void CloudPrintProxyService::RefreshCloudPrintProxyStatus() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
ServiceProcessControl* process_control = ServiceProcessControl::GetInstance(); ServiceProcessControl* process_control = ServiceProcessControl::GetInstance();
DCHECK(process_control->is_connected()); DCHECK(process_control->is_connected());
ServiceProcessControl::CloudPrintProxyInfoHandler* callback = ServiceProcessControl::CloudPrintProxyInfoHandler callback =
NewCallback(this, &CloudPrintProxyService::ProxyInfoCallback); base::Bind(&CloudPrintProxyService::ProxyInfoCallback,
base::Unretained(this));
// GetCloudPrintProxyInfo takes ownership of callback. // GetCloudPrintProxyInfo takes ownership of callback.
process_control->GetCloudPrintProxyInfo(callback); process_control->GetCloudPrintProxyInfo(callback);
} }
......
...@@ -220,17 +220,18 @@ void ServiceProcessControl::Observe( ...@@ -220,17 +220,18 @@ void ServiceProcessControl::Observe(
void ServiceProcessControl::OnCloudPrintProxyInfo( void ServiceProcessControl::OnCloudPrintProxyInfo(
const cloud_print::CloudPrintProxyInfo& proxy_info) { const cloud_print::CloudPrintProxyInfo& proxy_info) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (cloud_print_info_callback_ != NULL) { if (!cloud_print_info_callback_.is_null()) {
cloud_print_info_callback_->Run(proxy_info); cloud_print_info_callback_.Run(proxy_info);
cloud_print_info_callback_.reset(); cloud_print_info_callback_.Reset();
} }
} }
bool ServiceProcessControl::GetCloudPrintProxyInfo( bool ServiceProcessControl::GetCloudPrintProxyInfo(
CloudPrintProxyInfoHandler* cloud_print_info_callback) { const CloudPrintProxyInfoHandler& cloud_print_info_callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(cloud_print_info_callback); DCHECK_EQ(false, cloud_print_info_callback.is_null());
cloud_print_info_callback_.reset(cloud_print_info_callback);
cloud_print_info_callback_ = cloud_print_info_callback;
return Send(new ServiceMsg_GetCloudPrintProxyInfo()); return Send(new ServiceMsg_GetCloudPrintProxyInfo());
} }
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include "base/basictypes.h" #include "base/basictypes.h"
#include "base/callback.h" #include "base/callback.h"
#include "base/callback_old.h"
#include "base/id_map.h" #include "base/id_map.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h" #include "base/memory/singleton.h"
...@@ -44,7 +43,7 @@ class ServiceProcessControl : public IPC::Channel::Sender, ...@@ -44,7 +43,7 @@ class ServiceProcessControl : public IPC::Channel::Sender,
public: public:
typedef IDMap<ServiceProcessControl>::iterator iterator; typedef IDMap<ServiceProcessControl>::iterator iterator;
typedef std::queue<IPC::Message> MessageQueue; typedef std::queue<IPC::Message> MessageQueue;
typedef Callback1<const cloud_print::CloudPrintProxyInfo&>::Type typedef base::Callback<void(const cloud_print::CloudPrintProxyInfo&)>
CloudPrintProxyInfoHandler; CloudPrintProxyInfoHandler;
// Returns the singleton instance of this class. // Returns the singleton instance of this class.
...@@ -93,7 +92,7 @@ class ServiceProcessControl : public IPC::Channel::Sender, ...@@ -93,7 +92,7 @@ class ServiceProcessControl : public IPC::Channel::Sender,
// Send request for cloud print proxy info (enabled state, email, proxy id). // Send request for cloud print proxy info (enabled state, email, proxy id).
// The callback gets the information when received. // The callback gets the information when received.
bool GetCloudPrintProxyInfo( bool GetCloudPrintProxyInfo(
CloudPrintProxyInfoHandler* cloud_print_status_callback); const CloudPrintProxyInfoHandler& cloud_print_status_callback);
private: private:
// This class is responsible for launching the service process on the // This class is responsible for launching the service process on the
...@@ -157,7 +156,7 @@ class ServiceProcessControl : public IPC::Channel::Sender, ...@@ -157,7 +156,7 @@ class ServiceProcessControl : public IPC::Channel::Sender,
// Callback that gets invoked when a status message is received from // Callback that gets invoked when a status message is received from
// the cloud print proxy. // the cloud print proxy.
scoped_ptr<CloudPrintProxyInfoHandler> cloud_print_info_callback_; CloudPrintProxyInfoHandler cloud_print_info_callback_;
content::NotificationRegistrar registrar_; content::NotificationRegistrar registrar_;
}; };
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "base/bind.h" #include "base/bind.h"
#include "base/callback.h" #include "base/bind_helpers.h"
#include "base/process_util.h" #include "base/process_util.h"
#include "base/test/test_timeouts.h" #include "base/test/test_timeouts.h"
#include "chrome/browser/service/service_process_control.h" #include "chrome/browser/service/service_process_control.h"
...@@ -26,7 +26,7 @@ class ServiceProcessControlBrowserTest ...@@ -26,7 +26,7 @@ class ServiceProcessControlBrowserTest
#if defined(OS_MACOSX) #if defined(OS_MACOSX)
virtual void TearDown() { virtual void TearDown() {
// ForceServiceProcessShutdown removes the process from launchd on Mac. // ForceServiceProcessShutdown removes the process from launched on Mac.
ForceServiceProcessShutdown("", 0); ForceServiceProcessShutdown("", 0);
} }
#endif // OS_MACOSX #endif // OS_MACOSX
...@@ -47,8 +47,9 @@ class ServiceProcessControlBrowserTest ...@@ -47,8 +47,9 @@ class ServiceProcessControlBrowserTest
// Send a Cloud Print status request and wait for a reply from the service. // Send a Cloud Print status request and wait for a reply from the service.
void SendRequestAndWait() { void SendRequestAndWait() {
ServiceProcessControl::GetInstance()->GetCloudPrintProxyInfo(NewCallback( ServiceProcessControl::GetInstance()->GetCloudPrintProxyInfo(
this, &ServiceProcessControlBrowserTest::CloudPrintInfoCallback)); base::Bind(&ServiceProcessControlBrowserTest::CloudPrintInfoCallback,
base::Unretained(this)));
ui_test_utils::RunMessageLoop(); ui_test_utils::RunMessageLoop();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment