| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "google_apis/gcm/gcm_client_impl.h" | 5 #include "google_apis/gcm/gcm_client_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 else if (status != MCSClient::SENT) | 449 else if (status != MCSClient::SENT) |
| 450 delegate_->OnSendFinished(app_id, message_id, ToGCMClientResult(status)); | 450 delegate_->OnSendFinished(app_id, message_id, ToGCMClientResult(status)); |
| 451 } | 451 } |
| 452 | 452 |
| 453 void GCMClientImpl::OnMCSError() { | 453 void GCMClientImpl::OnMCSError() { |
| 454 // TODO(fgorski): For now it replaces the initialization method. Long term it | 454 // TODO(fgorski): For now it replaces the initialization method. Long term it |
| 455 // should have an error or status passed in. | 455 // should have an error or status passed in. |
| 456 } | 456 } |
| 457 | 457 |
| 458 void GCMClientImpl::HandleIncomingMessage(const gcm::MCSMessage& message) { | 458 void GCMClientImpl::HandleIncomingMessage(const gcm::MCSMessage& message) { |
| 459 DCHECK(delegate_); |
| 460 |
| 459 const mcs_proto::DataMessageStanza& data_message_stanza = | 461 const mcs_proto::DataMessageStanza& data_message_stanza = |
| 460 reinterpret_cast<const mcs_proto::DataMessageStanza&>( | 462 reinterpret_cast<const mcs_proto::DataMessageStanza&>( |
| 461 message.GetProtobuf()); | 463 message.GetProtobuf()); |
| 464 DCHECK_EQ(data_message_stanza.device_user_id(), kDefaultUserSerialNumber); |
| 465 |
| 462 IncomingMessage incoming_message; | 466 IncomingMessage incoming_message; |
| 463 MessageType message_type = DATA_MESSAGE; | 467 MessageType message_type = DATA_MESSAGE; |
| 464 for (int i = 0; i < data_message_stanza.app_data_size(); ++i) { | 468 for (int i = 0; i < data_message_stanza.app_data_size(); ++i) { |
| 465 std::string key = data_message_stanza.app_data(i).key(); | 469 std::string key = data_message_stanza.app_data(i).key(); |
| 466 if (key == kMessageTypeKey) | 470 if (key == kMessageTypeKey) |
| 467 message_type = DecodeMessageType(data_message_stanza.app_data(i).value()); | 471 message_type = DecodeMessageType(data_message_stanza.app_data(i).value()); |
| 468 else | 472 else |
| 469 incoming_message.data[key] = data_message_stanza.app_data(i).value(); | 473 incoming_message.data[key] = data_message_stanza.app_data(i).value(); |
| 470 } | 474 } |
| 471 | 475 |
| 472 if (data_message_stanza.has_token()) | |
| 473 incoming_message.collapse_key = data_message_stanza.token(); | |
| 474 | |
| 475 DCHECK_EQ(data_message_stanza.device_user_id(), kDefaultUserSerialNumber); | |
| 476 DCHECK(delegate_); | |
| 477 | 476 |
| 478 switch (message_type) { | 477 switch (message_type) { |
| 479 case DATA_MESSAGE: | 478 case DATA_MESSAGE: |
| 479 incoming_message.sender_id = data_message_stanza.from(); |
| 480 if (data_message_stanza.has_token()) |
| 481 incoming_message.collapse_key = data_message_stanza.token(); |
| 480 delegate_->OnMessageReceived(data_message_stanza.category(), | 482 delegate_->OnMessageReceived(data_message_stanza.category(), |
| 481 incoming_message); | 483 incoming_message); |
| 482 break; | 484 break; |
| 483 case DELETED_MESSAGES: | 485 case DELETED_MESSAGES: |
| 484 delegate_->OnMessagesDeleted(data_message_stanza.category()); | 486 delegate_->OnMessagesDeleted(data_message_stanza.category()); |
| 485 break; | 487 break; |
| 486 case SEND_ERROR: | 488 case SEND_ERROR: |
| 487 NotifyDelegateOnMessageSendError( | 489 NotifyDelegateOnMessageSendError( |
| 488 delegate_, data_message_stanza.category(), incoming_message); | 490 delegate_, data_message_stanza.category(), incoming_message); |
| 489 break; | 491 break; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 505 if (iter != incoming_message.data.end()) | 507 if (iter != incoming_message.data.end()) |
| 506 message_id = iter->second; | 508 message_id = iter->second; |
| 507 delegate->OnMessageSendError(app_id, message_id, SERVER_ERROR); | 509 delegate->OnMessageSendError(app_id, message_id, SERVER_ERROR); |
| 508 } | 510 } |
| 509 | 511 |
| 510 void GCMClientImpl::SetMCSClientForTesting(scoped_ptr<MCSClient> mcs_client) { | 512 void GCMClientImpl::SetMCSClientForTesting(scoped_ptr<MCSClient> mcs_client) { |
| 511 mcs_client_ = mcs_client.Pass(); | 513 mcs_client_ = mcs_client.Pass(); |
| 512 } | 514 } |
| 513 | 515 |
| 514 } // namespace gcm | 516 } // namespace gcm |
| OLD | NEW |