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