| Index: components/gcm_driver/gcm_driver.cc
|
| diff --git a/components/gcm_driver/gcm_driver.cc b/components/gcm_driver/gcm_driver.cc
|
| index 16e04afde7b45a97c9a7bdd4938ada07a2d90be2..46381b30d59e1e07e4903514b7103a8c62a4050b 100644
|
| --- a/components/gcm_driver/gcm_driver.cc
|
| +++ b/components/gcm_driver/gcm_driver.cc
|
| @@ -256,6 +256,30 @@ bool GCMDriver::HasRegisterCallback(const std::string& app_id) {
|
| return register_callbacks_.find(app_id) != register_callbacks_.end();
|
| }
|
|
|
| +void GCMDriver::DispatchMessage(const std::string& app_id,
|
| + const IncomingMessage& message) {
|
| + if (!encryption_provider_.IsEncryptedMessage(message)) {
|
| + GetAppHandler(app_id)->OnMessage(app_id, message);
|
| + return;
|
| + }
|
| +
|
| + encryption_provider_.DecryptMessage(
|
| + app_id, message, base::Bind(&GCMDriver::DispatchDecryptedMessage,
|
| + weak_ptr_factory_.GetWeakPtr(), app_id));
|
| +}
|
| +
|
| +void GCMDriver::DispatchDecryptedMessage(const std::string& app_id,
|
| + const IncomingMessage& message,
|
| + bool decryption_successful) {
|
| + if (!decryption_successful) {
|
| + // TODO(peter): Introduce a new event on app handlers for this scenario.
|
| + LOG(ERROR) << "Unable to decrypt message for " << app_id;
|
| + return;
|
| + }
|
| +
|
| + GetAppHandler(app_id)->OnMessage(app_id, message);
|
| +}
|
| +
|
| void GCMDriver::ClearCallbacks() {
|
| register_callbacks_.clear();
|
| unregister_callbacks_.clear();
|
|
|