15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef IPC_IPC_TEST_CHANNEL_LISTENER_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define IPC_IPC_TEST_CHANNEL_LISTENER_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ipc/ipc_listener.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace IPC { 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class Sender; 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// A generic listener that expects messages of a certain type (see 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// OnMessageReceived()), and either sends a generic response or quits after the 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// 50th message (or on channel error). 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class TestChannelListener : public Listener { 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static const size_t kLongMessageStringNumBytes = 50000; 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static void SendOneMessage(Sender* sender, const char* text); 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) TestChannelListener() : sender_(NULL), messages_left_(50) {} 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~TestChannelListener() {} 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool OnMessageReceived(const Message& message) OVERRIDE; 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void OnChannelError() OVERRIDE; 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void Init(Sender* s) { 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) sender_ = s; 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool HasSentAll() const { return 0 == messages_left_; } 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) protected: 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void SendNextMessage(); 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private: 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Sender* sender_; 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int messages_left_; 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // IPC_IPC_TEST_CHANNEL_LISTENER_H_ 45