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

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

Issue 2909113002: Deprecate NonThreadSafe in components/invalidation in favor of SequenceChecker. (Closed)
Patch Set: Created 3 years, 6 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
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/impl/gcm_network_channel.h" 5 #include "components/invalidation/impl/gcm_network_channel.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/base64url.h" 9 #include "base/base64url.h"
10 #include "base/i18n/time_formatting.h" 10 #include "base/i18n/time_formatting.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 weak_factory_(this) { 124 weak_factory_(this) {
125 net::NetworkChangeNotifier::AddNetworkChangeObserver(this); 125 net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
126 delegate_->Initialize( 126 delegate_->Initialize(
127 base::Bind(&GCMNetworkChannel::OnConnectionStateChanged, 127 base::Bind(&GCMNetworkChannel::OnConnectionStateChanged,
128 weak_factory_.GetWeakPtr()), 128 weak_factory_.GetWeakPtr()),
129 base::Bind(&GCMNetworkChannel::OnStoreReset, weak_factory_.GetWeakPtr())); 129 base::Bind(&GCMNetworkChannel::OnStoreReset, weak_factory_.GetWeakPtr()));
130 Register(); 130 Register();
131 } 131 }
132 132
133 GCMNetworkChannel::~GCMNetworkChannel() { 133 GCMNetworkChannel::~GCMNetworkChannel() {
134 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
134 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); 135 net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
135 } 136 }
136 137
137 void GCMNetworkChannel::Register() { 138 void GCMNetworkChannel::Register() {
138 delegate_->Register(base::Bind(&GCMNetworkChannel::OnRegisterComplete, 139 delegate_->Register(base::Bind(&GCMNetworkChannel::OnRegisterComplete,
139 weak_factory_.GetWeakPtr())); 140 weak_factory_.GetWeakPtr()));
140 } 141 }
141 142
142 void GCMNetworkChannel::OnRegisterComplete( 143 void GCMNetworkChannel::OnRegisterComplete(
143 const std::string& registration_id, 144 const std::string& registration_id,
144 gcm::GCMClient::Result result) { 145 gcm::GCMClient::Result result) {
145 DCHECK(CalledOnValidThread()); 146 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
146 if (result == gcm::GCMClient::SUCCESS) { 147 if (result == gcm::GCMClient::SUCCESS) {
147 DCHECK(!registration_id.empty()); 148 DCHECK(!registration_id.empty());
148 DVLOG(2) << "Got registration_id"; 149 DVLOG(2) << "Got registration_id";
149 register_backoff_entry_->Reset(); 150 register_backoff_entry_->Reset();
150 registration_id_ = registration_id; 151 registration_id_ = registration_id;
151 if (!cached_message_.empty()) 152 if (!cached_message_.empty())
152 RequestAccessToken(); 153 RequestAccessToken();
153 } else { 154 } else {
154 DVLOG(2) << "Register failed: " << result; 155 DVLOG(2) << "Register failed: " << result;
155 // Retry in case of transient error. 156 // Retry in case of transient error.
(...skipping 11 matching lines...) Expand all
167 } 168 }
168 default: 169 default:
169 break; 170 break;
170 } 171 }
171 } 172 }
172 diagnostic_info_.registration_id_ = registration_id_; 173 diagnostic_info_.registration_id_ = registration_id_;
173 diagnostic_info_.registration_result_ = result; 174 diagnostic_info_.registration_result_ = result;
174 } 175 }
175 176
176 void GCMNetworkChannel::SendMessage(const std::string& message) { 177 void GCMNetworkChannel::SendMessage(const std::string& message) {
177 DCHECK(CalledOnValidThread()); 178 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
178 DCHECK(!message.empty()); 179 DCHECK(!message.empty());
179 DVLOG(2) << "SendMessage"; 180 DVLOG(2) << "SendMessage";
180 diagnostic_info_.sent_messages_count_++; 181 diagnostic_info_.sent_messages_count_++;
181 if (!cached_message_.empty()) { 182 if (!cached_message_.empty()) {
182 RecordOutgoingMessageStatus(MESSAGE_DISCARDED); 183 RecordOutgoingMessageStatus(MESSAGE_DISCARDED);
183 } 184 }
184 cached_message_ = message; 185 cached_message_ = message;
185 186
186 if (!registration_id_.empty()) { 187 if (!registration_id_.empty()) {
187 RequestAccessToken(); 188 RequestAccessToken();
188 } 189 }
189 } 190 }
190 191
191 void GCMNetworkChannel::RequestAccessToken() { 192 void GCMNetworkChannel::RequestAccessToken() {
192 DCHECK(CalledOnValidThread()); 193 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
193 delegate_->RequestToken(base::Bind(&GCMNetworkChannel::OnGetTokenComplete, 194 delegate_->RequestToken(base::Bind(&GCMNetworkChannel::OnGetTokenComplete,
194 weak_factory_.GetWeakPtr())); 195 weak_factory_.GetWeakPtr()));
195 } 196 }
196 197
197 void GCMNetworkChannel::OnGetTokenComplete( 198 void GCMNetworkChannel::OnGetTokenComplete(
198 const GoogleServiceAuthError& error, 199 const GoogleServiceAuthError& error,
199 const std::string& token) { 200 const std::string& token) {
200 DCHECK(CalledOnValidThread()); 201 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
201 if (cached_message_.empty() || registration_id_.empty()) { 202 if (cached_message_.empty() || registration_id_.empty()) {
202 // Nothing to do. 203 // Nothing to do.
203 return; 204 return;
204 } 205 }
205 206
206 if (error.state() != GoogleServiceAuthError::NONE) { 207 if (error.state() != GoogleServiceAuthError::NONE) {
207 // Requesting access token failed. Persistent errors will be reported by 208 // Requesting access token failed. Persistent errors will be reported by
208 // token service. Just drop this request, cacheinvalidations will retry 209 // token service. Just drop this request, cacheinvalidations will retry
209 // sending message and at that time we'll retry requesting access token. 210 // sending message and at that time we'll retry requesting access token.
210 DVLOG(1) << "RequestAccessToken failed: " << error.ToString(); 211 DVLOG(1) << "RequestAccessToken failed: " << error.ToString();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 const std::string echo_header("echo-token: " + echo_token_); 270 const std::string echo_header("echo-token: " + echo_token_);
270 fetcher_->AddExtraRequestHeader(echo_header); 271 fetcher_->AddExtraRequestHeader(echo_header);
271 } 272 }
272 fetcher_->SetUploadData("application/x-protobuffer", cached_message_); 273 fetcher_->SetUploadData("application/x-protobuffer", cached_message_);
273 fetcher_->Start(); 274 fetcher_->Start();
274 // Clear message to prevent accidentally resending it in the future. 275 // Clear message to prevent accidentally resending it in the future.
275 cached_message_.clear(); 276 cached_message_.clear();
276 } 277 }
277 278
278 void GCMNetworkChannel::OnURLFetchComplete(const net::URLFetcher* source) { 279 void GCMNetworkChannel::OnURLFetchComplete(const net::URLFetcher* source) {
279 DCHECK(CalledOnValidThread()); 280 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
280 DCHECK_EQ(fetcher_.get(), source); 281 DCHECK_EQ(fetcher_.get(), source);
281 // Free fetcher at the end of function. 282 // Free fetcher at the end of function.
282 std::unique_ptr<net::URLFetcher> fetcher = std::move(fetcher_); 283 std::unique_ptr<net::URLFetcher> fetcher = std::move(fetcher_);
283 284
284 net::URLRequestStatus status = fetcher->GetStatus(); 285 net::URLRequestStatus status = fetcher->GetStatus();
285 diagnostic_info_.last_post_response_code_ = 286 diagnostic_info_.last_post_response_code_ =
286 status.is_success() ? source->GetResponseCode() : status.error(); 287 status.is_success() ? source->GetResponseCode() : status.error();
287 288
288 if (status.is_success() && 289 if (status.is_success() &&
289 fetcher->GetResponseCode() == net::HTTP_UNAUTHORIZED) { 290 fetcher->GetResponseCode() == net::HTTP_UNAUTHORIZED) {
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 ENUM_CASE(gcm::GCMClient::UNKNOWN_ERROR); 485 ENUM_CASE(gcm::GCMClient::UNKNOWN_ERROR);
485 ENUM_CASE(gcm::GCMClient::INVALID_PARAMETER); 486 ENUM_CASE(gcm::GCMClient::INVALID_PARAMETER);
486 ENUM_CASE(gcm::GCMClient::ASYNC_OPERATION_PENDING); 487 ENUM_CASE(gcm::GCMClient::ASYNC_OPERATION_PENDING);
487 ENUM_CASE(gcm::GCMClient::GCM_DISABLED); 488 ENUM_CASE(gcm::GCMClient::GCM_DISABLED);
488 } 489 }
489 NOTREACHED(); 490 NOTREACHED();
490 return ""; 491 return "";
491 } 492 }
492 493
493 } // namespace syncer 494 } // namespace syncer
OLDNEW
« no previous file with comments | « components/invalidation/impl/gcm_network_channel.h ('k') | components/invalidation/impl/invalidation_notifier.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698