fake_gcm_app_handler.cc revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
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
9namespace gcm {
10
11FakeGCMAppHandler::FakeGCMAppHandler()
12    : received_event_(NO_EVENT), connected_(false) {
13}
14
15FakeGCMAppHandler::~FakeGCMAppHandler() {
16}
17
18void FakeGCMAppHandler::WaitForNotification() {
19  run_loop_.reset(new base::RunLoop);
20  run_loop_->Run();
21  run_loop_.reset();
22}
23
24void FakeGCMAppHandler::ShutdownHandler() {
25}
26
27void 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
37void 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
45void 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
56void FakeGCMAppHandler::ClearResults() {
57  received_event_ = NO_EVENT;
58  app_id_.clear();
59  message_ = GCMClient::IncomingMessage();
60  send_error_details_ = GCMClient::SendErrorDetails();
61}
62
63void FakeGCMAppHandler::OnConnected(const net::IPEndPoint& ip_endpoint) {
64  connected_ = true;
65}
66
67void FakeGCMAppHandler::OnDisconnected() {
68  connected_ = false;
69}
70
71}  // namespace gcm
72