Index: components/invalidation/invalidation.cc |
diff --git a/components/invalidation/invalidation.cc b/components/invalidation/invalidation.cc |
index 0962c9e9cc2e243fa4877e518af0712413c0fdb5..f6d2c77ea3f1f08054856a2063fd43534627322e 100644 |
--- a/components/invalidation/invalidation.cc |
+++ b/components/invalidation/invalidation.cc |
@@ -6,7 +6,9 @@ |
#include <cstddef> |
+#include "base/bind.h" |
#include "base/json/json_string_value_serializer.h" |
+#include "base/location.h" |
#include "base/rand_util.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/values.h" |
@@ -109,23 +111,30 @@ const AckHandle& Invalidation::ack_handle() const { |
return ack_handle_; |
} |
-void Invalidation::set_ack_handler(syncer::WeakHandle<AckHandler> handler) { |
+void Invalidation::SetAckHandler( |
+ base::WeakPtr<AckHandler> handler, |
+ scoped_refptr<base::SequencedTaskRunner> handler_task_runner) { |
ack_handler_ = handler; |
+ ack_handler_task_runner_ = handler_task_runner; |
} |
bool Invalidation::SupportsAcknowledgement() const { |
- return ack_handler_.IsInitialized(); |
+ return !!ack_handler_task_runner_; |
pavely
2014/08/08 20:08:30
I think previous code will return false if ack_han
rlarocque
2014/08/08 21:19:35
This version is actually more correct. SupportsAc
|
} |
void Invalidation::Acknowledge() const { |
if (SupportsAcknowledgement()) { |
- ack_handler_.Call(FROM_HERE, &AckHandler::Acknowledge, id_, ack_handle_); |
+ ack_handler_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&AckHandler::Acknowledge, ack_handler_, id_, ack_handle_)); |
} |
} |
void Invalidation::Drop() { |
if (SupportsAcknowledgement()) { |
- ack_handler_.Call(FROM_HERE, &AckHandler::Drop, id_, ack_handle_); |
+ ack_handler_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&AckHandler::Drop, ack_handler_, id_, ack_handle_)); |
} |
} |