Home | History | Annotate | Download | only in gcm_driver
      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
      3 // found in the LICENSE file.
      4 
      5 #include "components/gcm_driver/fake_gcm_app_handler.h"
      6 
      7 #include "base/run_loop.h"
      8 
      9 namespace gcm {
     10 
     11 FakeGCMAppHandler::FakeGCMAppHandler()
     12     : received_event_(NO_EVENT) {
     13 }
     14 
     15 FakeGCMAppHandler::~FakeGCMAppHandler() {
     16 }
     17 
     18 void FakeGCMAppHandler::WaitForNotification() {
     19   run_loop_.reset(new base::RunLoop);
     20   run_loop_->Run();
     21   run_loop_.reset();
     22 }
     23 
     24 void FakeGCMAppHandler::ShutdownHandler() {
     25 }
     26 
     27 void FakeGCMAppHandler::OnMessage(const std::string& app_id,
     28                                   const GCMClient::IncomingMessage& message) {
     29   ClearResults();
     30   received_event_ = MESSAGE_EVENT;
     31   app_id_ = app_id;
     32   message_ = message;
     33   if (run_loop_)
     34     run_loop_->Quit();
     35 }
     36 
     37 void FakeGCMAppHandler::OnMessagesDeleted(const std::string& app_id) {
     38   ClearResults();
     39   received_event_ = MESSAGES_DELETED_EVENT;
     40   app_id_ = app_id;
     41   if (run_loop_)
     42     run_loop_->Quit();
     43 }
     44 
     45 void FakeGCMAppHandler::OnSendError(
     46     const std::string& app_id,
     47     const GCMClient::SendErrorDetails& send_error_details) {
     48   ClearResults();
     49   received_event_ = SEND_ERROR_EVENT;
     50   app_id_ = app_id;
     51   send_error_details_ = send_error_details;
     52   if (run_loop_)
     53     run_loop_->Quit();
     54 }
     55 
     56 void FakeGCMAppHandler::OnSendAcknowledged(
     57     const std::string& app_id,
     58     const std::string& message_id) {
     59   ClearResults();
     60   app_id_ = app_id;
     61   acked_message_id_ = message_id;
     62   if (run_loop_)
     63     run_loop_->Quit();
     64 }
     65 
     66 void FakeGCMAppHandler::ClearResults() {
     67   received_event_ = NO_EVENT;
     68   app_id_.clear();
     69   acked_message_id_.clear();
     70   message_ = GCMClient::IncomingMessage();
     71   send_error_details_ = GCMClient::SendErrorDetails();
     72 }
     73 
     74 }  // namespace gcm
     75