blob: 228cbf717c1a9ff69e4f7343a54a71ac20db671a [file] [log] [blame]
morrita@chromium.org15996aa2014-08-05 08:44:17 +09001// 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#ifndef IPC_IPC_TEST_CHANNEL_LISTENER_H_
6#define IPC_IPC_TEST_CHANNEL_LISTENER_H_
7
8#include "ipc/ipc_listener.h"
9
10namespace IPC {
11
12class Sender;
13
14// A generic listener that expects messages of a certain type (see
15// OnMessageReceived()), and either sends a generic response or quits after the
16// 50th message (or on channel error).
17class TestChannelListener : public Listener {
18 public:
19 static const size_t kLongMessageStringNumBytes = 50000;
20 static void SendOneMessage(Sender* sender, const char* text);
21
22 TestChannelListener() : sender_(NULL), messages_left_(50) {}
23 virtual ~TestChannelListener() {}
24
mostynbd41cdbb2014-10-07 16:17:16 +090025 virtual bool OnMessageReceived(const Message& message) override;
26 virtual void OnChannelError() override;
morrita@chromium.org15996aa2014-08-05 08:44:17 +090027
28 void Init(Sender* s) {
29 sender_ = s;
30 }
31
32 bool HasSentAll() const { return 0 == messages_left_; }
33
34 protected:
35 void SendNextMessage();
36
37 private:
38 Sender* sender_;
39 int messages_left_;
40};
41
42}
43
44#endif // IPC_IPC_TEST_CHANNEL_LISTENER_H_