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

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

Issue 1243563002: Teach the GCM Driver how to decrypt incoming messages. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gcm-push-keys
Patch Set: Created 5 years, 5 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/gcm_driver/gcm_driver.h" 5 #include "components/gcm_driver/gcm_driver.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 return iter->second; 249 return iter->second;
250 } 250 }
251 251
252 return &default_app_handler_; 252 return &default_app_handler_;
253 } 253 }
254 254
255 bool GCMDriver::HasRegisterCallback(const std::string& app_id) { 255 bool GCMDriver::HasRegisterCallback(const std::string& app_id) {
256 return register_callbacks_.find(app_id) != register_callbacks_.end(); 256 return register_callbacks_.find(app_id) != register_callbacks_.end();
257 } 257 }
258 258
259 void GCMDriver::DispatchMessage(const std::string& app_id,
260 const IncomingMessage& message) {
261 if (!encryption_provider_.IsEncryptedMessage(message)) {
262 GetAppHandler(app_id)->OnMessage(app_id, message);
263 return;
264 }
265
266 encryption_provider_.DecryptMessage(
267 app_id, message, base::Bind(&GCMDriver::DispatchDecryptedMessage,
268 weak_ptr_factory_.GetWeakPtr(), app_id));
269 }
270
271 void GCMDriver::DispatchDecryptedMessage(const std::string& app_id,
272 const IncomingMessage& message,
273 bool decryption_successful) {
274 if (!decryption_successful) {
275 // TODO(peter): Introduce a new event on app handlers for this scenario.
276 LOG(ERROR) << "Unable to decrypt message for " << app_id;
277 return;
278 }
279
280 GetAppHandler(app_id)->OnMessage(app_id, message);
281 }
282
259 void GCMDriver::ClearCallbacks() { 283 void GCMDriver::ClearCallbacks() {
260 register_callbacks_.clear(); 284 register_callbacks_.clear();
261 unregister_callbacks_.clear(); 285 unregister_callbacks_.clear();
262 send_callbacks_.clear(); 286 send_callbacks_.clear();
263 } 287 }
264 288
265 void GCMDriver::RegisterAfterUnregister( 289 void GCMDriver::RegisterAfterUnregister(
266 const std::string& app_id, 290 const std::string& app_id,
267 const std::vector<std::string>& normalized_sender_ids, 291 const std::vector<std::string>& normalized_sender_ids,
268 const UnregisterCallback& unregister_callback, 292 const UnregisterCallback& unregister_callback,
269 GCMClient::Result result) { 293 GCMClient::Result result) {
270 // Invoke the original unregister callback. 294 // Invoke the original unregister callback.
271 unregister_callback.Run(result); 295 unregister_callback.Run(result);
272 296
273 // Trigger the pending registration. 297 // Trigger the pending registration.
274 DCHECK(register_callbacks_.find(app_id) != register_callbacks_.end()); 298 DCHECK(register_callbacks_.find(app_id) != register_callbacks_.end());
275 RegisterImpl(app_id, normalized_sender_ids); 299 RegisterImpl(app_id, normalized_sender_ids);
276 } 300 }
277 301
278 } // namespace gcm 302 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698