Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(729)

Side by Side Diff: components/invalidation/invalidation.cc

Issue 446223002: Remove WeakHandle from components/invalidation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Hack to fix GN Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/invalidation/invalidation.h" 5 #include "components/invalidation/invalidation.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 8
9 #include "base/bind.h"
9 #include "base/json/json_string_value_serializer.h" 10 #include "base/json/json_string_value_serializer.h"
11 #include "base/location.h"
10 #include "base/rand_util.h" 12 #include "base/rand_util.h"
11 #include "base/strings/string_number_conversions.h" 13 #include "base/strings/string_number_conversions.h"
12 #include "base/values.h" 14 #include "base/values.h"
13 #include "components/invalidation/ack_handler.h" 15 #include "components/invalidation/ack_handler.h"
14 #include "components/invalidation/invalidation_util.h" 16 #include "components/invalidation/invalidation_util.h"
15 17
16 namespace syncer { 18 namespace syncer {
17 19
18 namespace { 20 namespace {
19 const char kObjectIdKey[] = "objectId"; 21 const char kObjectIdKey[] = "objectId";
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 104
103 const std::string& Invalidation::payload() const { 105 const std::string& Invalidation::payload() const {
104 DCHECK(!is_unknown_version_); 106 DCHECK(!is_unknown_version_);
105 return payload_; 107 return payload_;
106 } 108 }
107 109
108 const AckHandle& Invalidation::ack_handle() const { 110 const AckHandle& Invalidation::ack_handle() const {
109 return ack_handle_; 111 return ack_handle_;
110 } 112 }
111 113
112 void Invalidation::set_ack_handler(syncer::WeakHandle<AckHandler> handler) { 114 void Invalidation::SetAckHandler(
115 base::WeakPtr<AckHandler> handler,
116 scoped_refptr<base::SequencedTaskRunner> handler_task_runner) {
113 ack_handler_ = handler; 117 ack_handler_ = handler;
118 ack_handler_task_runner_ = handler_task_runner;
114 } 119 }
115 120
116 bool Invalidation::SupportsAcknowledgement() const { 121 bool Invalidation::SupportsAcknowledgement() const {
117 return ack_handler_.IsInitialized(); 122 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
118 } 123 }
119 124
120 void Invalidation::Acknowledge() const { 125 void Invalidation::Acknowledge() const {
121 if (SupportsAcknowledgement()) { 126 if (SupportsAcknowledgement()) {
122 ack_handler_.Call(FROM_HERE, &AckHandler::Acknowledge, id_, ack_handle_); 127 ack_handler_task_runner_->PostTask(
128 FROM_HERE,
129 base::Bind(&AckHandler::Acknowledge, ack_handler_, id_, ack_handle_));
123 } 130 }
124 } 131 }
125 132
126 void Invalidation::Drop() { 133 void Invalidation::Drop() {
127 if (SupportsAcknowledgement()) { 134 if (SupportsAcknowledgement()) {
128 ack_handler_.Call(FROM_HERE, &AckHandler::Drop, id_, ack_handle_); 135 ack_handler_task_runner_->PostTask(
136 FROM_HERE,
137 base::Bind(&AckHandler::Drop, ack_handler_, id_, ack_handle_));
129 } 138 }
130 } 139 }
131 140
132 bool Invalidation::Equals(const Invalidation& other) const { 141 bool Invalidation::Equals(const Invalidation& other) const {
133 return id_ == other.id_ && is_unknown_version_ == other.is_unknown_version_ && 142 return id_ == other.id_ && is_unknown_version_ == other.is_unknown_version_ &&
134 version_ == other.version_ && payload_ == other.payload_; 143 version_ == other.version_ && payload_ == other.payload_;
135 } 144 }
136 145
137 scoped_ptr<base::DictionaryValue> Invalidation::ToValue() const { 146 scoped_ptr<base::DictionaryValue> Invalidation::ToValue() const {
138 scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 147 scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue());
(...skipping 22 matching lines...) Expand all
161 const std::string& payload, 170 const std::string& payload,
162 AckHandle ack_handle) 171 AckHandle ack_handle)
163 : id_(id), 172 : id_(id),
164 is_unknown_version_(is_unknown_version), 173 is_unknown_version_(is_unknown_version),
165 version_(version), 174 version_(version),
166 payload_(payload), 175 payload_(payload),
167 ack_handle_(ack_handle) { 176 ack_handle_(ack_handle) {
168 } 177 }
169 178
170 } // namespace syncer 179 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698