| 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_;
|
| }
|
|
|
| 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_));
|
| }
|
| }
|
|
|
|
|