ipc_test_channel_listener.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. #ifndef IPC_IPC_TEST_CHANNEL_LISTENER_H_
  5. #define IPC_IPC_TEST_CHANNEL_LISTENER_H_
  6. #include <stddef.h>
  7. #include "base/memory/raw_ptr.h"
  8. #include "ipc/ipc_listener.h"
  9. namespace IPC {
  10. class Sender;
  11. // A generic listener that expects messages of a certain type (see
  12. // OnMessageReceived()), and either sends a generic response or quits after the
  13. // 50th message (or on channel error).
  14. class TestChannelListener : public Listener {
  15. public:
  16. static const size_t kLongMessageStringNumBytes = 50000;
  17. static void SendOneMessage(Sender* sender, const char* text);
  18. TestChannelListener() : sender_(nullptr), messages_left_(50) {}
  19. ~TestChannelListener() override {}
  20. bool OnMessageReceived(const Message& message) override;
  21. void OnChannelError() override;
  22. void Init(Sender* s) {
  23. sender_ = s;
  24. }
  25. bool HasSentAll() const { return 0 == messages_left_; }
  26. protected:
  27. void SendNextMessage();
  28. private:
  29. raw_ptr<Sender> sender_;
  30. int messages_left_;
  31. };
  32. }
  33. #endif // IPC_IPC_TEST_CHANNEL_LISTENER_H_