1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/gcm_driver/fake_gcm_app_handler.h" 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/run_loop.h" 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace gcm { 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)FakeGCMAppHandler::FakeGCMAppHandler() 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : received_event_(NO_EVENT) { 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)FakeGCMAppHandler::~FakeGCMAppHandler() { 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void FakeGCMAppHandler::WaitForNotification() { 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_.reset(new base::RunLoop); 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_->Run(); 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_.reset(); 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void FakeGCMAppHandler::ShutdownHandler() { 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void FakeGCMAppHandler::OnMessage(const std::string& app_id, 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const GCMClient::IncomingMessage& message) { 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ClearResults(); 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) received_event_ = MESSAGE_EVENT; 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) app_id_ = app_id; 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) message_ = message; 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (run_loop_) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_->Quit(); 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void FakeGCMAppHandler::OnMessagesDeleted(const std::string& app_id) { 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ClearResults(); 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) received_event_ = MESSAGES_DELETED_EVENT; 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) app_id_ = app_id; 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (run_loop_) 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_->Quit(); 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void FakeGCMAppHandler::OnSendError( 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const std::string& app_id, 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const GCMClient::SendErrorDetails& send_error_details) { 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ClearResults(); 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) received_event_ = SEND_ERROR_EVENT; 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) app_id_ = app_id; 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) send_error_details_ = send_error_details; 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (run_loop_) 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) run_loop_->Quit(); 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void FakeGCMAppHandler::OnSendAcknowledged( 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& app_id, 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& message_id) { 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ClearResults(); 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) app_id_ = app_id; 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) acked_message_id_ = message_id; 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (run_loop_) 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) run_loop_->Quit(); 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void FakeGCMAppHandler::ClearResults() { 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) received_event_ = NO_EVENT; 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) app_id_.clear(); 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) acked_message_id_.clear(); 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) message_ = GCMClient::IncomingMessage(); 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) send_error_details_ = GCMClient::SendErrorDetails(); 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace gcm 75