Index: components/gcm_driver/gcm_driver_desktop.cc |
diff --git a/components/gcm_driver/gcm_driver_desktop.cc b/components/gcm_driver/gcm_driver_desktop.cc |
index fa7c3c8ef21680091b304f391bf32f9feba1ba33..d8794263240892360a42e0de8c77009f2b0f60e4 100644 |
--- a/components/gcm_driver/gcm_driver_desktop.cc |
+++ b/components/gcm_driver/gcm_driver_desktop.cc |
@@ -108,6 +108,8 @@ class GCMDriverDesktop::IOWorker : public GCMClient::Delegate { |
virtual void OnMessageSendError( |
const std::string& app_id, |
const GCMClient::SendErrorDetails& send_error_details) OVERRIDE; |
+ virtual void OnSendAcknowledged(const std::string& app_id, |
+ const std::string& message_id) OVERRIDE; |
virtual void OnGCMReady() OVERRIDE; |
virtual void OnActivityRecorded() OVERRIDE; |
virtual void OnConnected(const net::IPEndPoint& ip_endpoint) OVERRIDE; |
@@ -246,6 +248,17 @@ void GCMDriverDesktop::IOWorker::OnMessageSendError( |
send_error_details)); |
} |
+void GCMDriverDesktop::IOWorker::OnSendAcknowledged( |
+ const std::string& app_id, |
+ const std::string& message_id) { |
+ DCHECK(io_thread_->RunsTasksOnCurrentThread()); |
+ |
+ ui_thread_->PostTask( |
+ FROM_HERE, |
+ base::Bind( |
+ &GCMDriverDesktop::SendAcknowledged, service_, app_id, message_id)); |
+} |
+ |
void GCMDriverDesktop::IOWorker::OnGCMReady() { |
ui_thread_->PostTask( |
FROM_HERE, |
@@ -680,6 +693,17 @@ void GCMDriverDesktop::MessageSendError( |
GetAppHandler(app_id)->OnSendError(app_id, send_error_details); |
} |
+void GCMDriverDesktop::SendAcknowledged(const std::string& app_id, |
+ const std::string& message_id) { |
+ DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |
+ |
+ // Drop the event if the service has been stopped. |
+ if (!gcm_started_) |
+ return; |
+ |
+ GetAppHandler(app_id)->OnSendAcknowledged(app_id, message_id); |
+} |
+ |
void GCMDriverDesktop::GCMClientReady() { |
DCHECK(ui_thread_->RunsTasksOnCurrentThread()); |